这是我在这个论坛上的第一篇文章,所以请保持温和,以防我不小心绊倒了我还不知道的任何论坛规则:)。
我想对水下 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行为。 -c:a copy
并且将根据您的输出文件格式选择默认编码器,或者您可以选择特定的编码器。 关于windows - ffmpeg - 使用 -filter_complex 对视频素材进行颜色分级并将原始源显示为画中画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58201025/