windows - ffmpeg - 使用 -filter_complex 对视频素材进行颜色分级并将原始源显示为画中画

标签 windows batch-file ffmpeg gopro picture-in-picture

这是我在这个论坛上的第一篇文章,所以请保持温和,以防我不小心绊倒了我还不知道的任何论坛规则:)。

我想对水下 GoPro 镜头应用一些颜色分级。为了更快地衡量我的颜色设置的效果(到目前为止,试错),希望在底部将原始输入视频流视为 PIP(例如,缩小到 50% 甚至 30%) - 转换后的输出影片的右上角。

我有一部要进行颜色分级的输入电影。 PIP 应该使用原始文件作为输入,只是它的缩小版本。

我想使用 ffmpeg 的“-filter_complex”选项来做 PIP,但我可以在“-filter_complex”上找到的所有示例都将使用两部已经存在的电影。相反,我想让颜色校正的流成为“-filter_complex”的即时输入,然后呈现 PIP。

这可行吗,一气呵成?

下面的两个单独的片段都可以正常工作,我现在想将它们结合起来并跳过中间颜色分级 TMP 输出的创建,然后在最终的 PIP 创建过程中将其与原始片段结合起来。
非常感谢您帮助将这两个单独的步骤组合成一个“-filter_complex”操作!

提前致谢,
掠夺。

[existing code snippets (M$ batch files)]

::declarations/defines::
set "INPUT=<path-to-movie>"
set "TMP=<path-to-intermediate-output-movie>"
set "OUTPUT=<path-to-movie>"
set "FFMPG=<path-to-executable>"
set "QU=9" :: quality settings

set "CONV='"0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 
0 -1 0:0 -1 0 -1 5 -1 0 -1 0'"" :: sharpening convolution filter

::color-grading part::
%FFMPG% -i %INPUT% -vf convolution=%CONV%,colorbalance=rs=%rs%:gs=%gs%:bs=%bs%:rm=%rm%:gm=%gm%:bm=%bm%:rh=%rh%:gh=%gh%:bh=%bh% -q:v %QU% -codec:v mpeg4 %TMP%

::PIP part::
%FFMPG% -i %TMP% -i %INPUT% -filter_complex "[1]scale=iw/3:ih/3 
[pip]; [0][pip] overlay=main_w-overlay_w-10:main_h-overlay_h-10" -q:v 
%QU% -codec:v mpeg4 %OUTPUT%

[/existing code]

最佳答案

ffmpeg -i input -filter_complex "[0]scale=iw/3:-1[pip];[0]convolution,colorbalance[bg];[bg][pip]overlay=main_w-overlay_w-10:main_h-overlay_h-10[v]" -map "[v]" -map 0:a -c:a copy output

这是一个简化的命令。您需要输入卷积和色彩平衡值并将其集成到批处理文件中。

描述:
  • [0]指第一个(并且仅在这种情况下)输入文件,并且是比例过滤器的输入。 scale 的输出任意命名为 [pip] .你可以给它任何你喜欢的名字。见 Filtering Introduction, Filtergraph description, and Filtergraph syntax了解更多信息。
  • [0]也用作卷积的输入。卷积的输出直接馈送到色彩平衡。过滤器的线性链通过逗号连接(见上面的链接)。 colorbalance 的输出命名为 [bg] .
  • 叠加需要两个输入,它们是 [bg][pip] . [pip]覆盖在 [bg] 上.覆盖的输出名为 [v] .
  • -map option用于手动选择要放入输出的流。养成使用 -map 的习惯通常是个好主意。除非你完全理解默认 stream selection行为。
  • 我假设输入音频是 AAC,因此您可以流式复制音频而不是重新编码。如果没有,那么您可以删除 -c:a copy并且将根据您的输出文件格式选择默认编码器,或者您可以选择特定的编码器。
  • 关于windows - ffmpeg - 使用 -filter_complex 对视频素材进行颜色分级并将原始源显示为画中画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58201025/

    相关文章:

    windows - 获取syscall.CreateProcess的输出

    windows - 在 Powershell 中检测 Windows 8

    debugging - Windows 批处理文件调试器?

    batch-file - Windows CMD 批处理 : FOR/R with DelayedExpansion

    c - C 中的 Windows 用户主文件夹 (MinGW)

    windows - 程序如何请求管理员权限?

    batch-file - 批量命令删除具有特定名称的所有子文件夹

    audio - ffmpeg 将 PCM 数据文件转换为 wav 文件得到失真(嘈杂)的数据

    shell - 为什么参数的顺序在这里很重要?

    linux - FFmpeg 自动同步音视频