FFmpeg 在视频上应用滤色器
FFmpeg apply color filter on video
我是 FFmpeg
的新手,我想对我的视频应用滤色器。我搜索了很多,根据我的发现 here 这个命令似乎是从 RGBA 矩阵应用颜色。例如:
colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
但是 运行 完整命令:
" -i $videoPath
-i $waterMarkPath
-filter_complex [1:v]scale=iw*$scale:-1[v1],[0:v][v1]overlay=0:0[mark],
colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
-pix_fmt yuv420p
-map [mark]
-preset ultrafast -crf 23
-y $outputPath "
我有这个错误:
Cannot find a matching stream for unlabeled input pad 0 on filter Parsed_colorchannelmixer_2
ERROR ON EXPORT VIDEO (CODE 1)
- 我做错了什么,为什么?
- 在视频上应用滤色器是否正确?还有其他方法吗?
- 如何只对视频或水印应用滤镜?
感谢您的帮助
What am I doing wrong here and why?
你的过滤器标签乱七八糟。您要求 ffmpeg 将 [mark]
输出到视频文件。但这会使 colorchannelmixer 的输出孤立。所有过滤器输出必须由其他过滤器使用或发送到输出文件。
您可以这样做:
" -i $videoPath
-i $waterMarkPath
-filter_complex [1:v]scale=iw*$scale:-1[v1];[0:v][v1]overlay=0:0,colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131[mark]
-pix_fmt yuv420p
-map [mark]
-preset ultrafast -crf 23
-y $outputPath "
或依赖默认的 stream selection 行为:
" -i $videoPath
-i $waterMarkPath
-filter_complex [1:v]scale=iw*$scale:-1[v1];[0:v][v1]overlay=0:0,colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
-pix_fmt yuv420p
-preset ultrafast -crf 23
-y $outputPath "
有关如何制作过滤图的概述,请参阅 FFmpeg Filtering Intro。
Is it the right way to apply color filters on video?
是的,如果你想使用 colorchannelmixer。
There are another ways to do it?
是的,有很多filters与颜色有关。
How can I apply the filter only on the video or only on the watermark?
这取决于过滤器的顺序以及您向过滤器提供的输入。
仅在主视频上使用 colorchannelmixer:
" -i $videoPath
-i $waterMarkPath
-filter_complex [0:v]colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131[main];[1:v]scale=iw*$scale:-1[v1];[main][v1]overlay=0:0
-pix_fmt yuv420p
-preset ultrafast -crf 23
-y $outputPath "
仅水印颜色通道混合器:
" -i $videoPath
-i $waterMarkPath
-filter_complex [1:v]scale=iw*$scale:-1,colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131[v1],[0:v][v1]overlay=0:0
-pix_fmt yuv420p
-preset ultrafast -crf 23
-y $outputPath "
我是 FFmpeg
的新手,我想对我的视频应用滤色器。我搜索了很多,根据我的发现 here 这个命令似乎是从 RGBA 矩阵应用颜色。例如:
colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
但是 运行 完整命令:
" -i $videoPath
-i $waterMarkPath
-filter_complex [1:v]scale=iw*$scale:-1[v1],[0:v][v1]overlay=0:0[mark],
colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
-pix_fmt yuv420p
-map [mark]
-preset ultrafast -crf 23
-y $outputPath "
我有这个错误:
Cannot find a matching stream for unlabeled input pad 0 on filter Parsed_colorchannelmixer_2
ERROR ON EXPORT VIDEO (CODE 1)
- 我做错了什么,为什么?
- 在视频上应用滤色器是否正确?还有其他方法吗?
- 如何只对视频或水印应用滤镜?
感谢您的帮助
What am I doing wrong here and why?
你的过滤器标签乱七八糟。您要求 ffmpeg 将 [mark]
输出到视频文件。但这会使 colorchannelmixer 的输出孤立。所有过滤器输出必须由其他过滤器使用或发送到输出文件。
您可以这样做:
" -i $videoPath
-i $waterMarkPath
-filter_complex [1:v]scale=iw*$scale:-1[v1];[0:v][v1]overlay=0:0,colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131[mark]
-pix_fmt yuv420p
-map [mark]
-preset ultrafast -crf 23
-y $outputPath "
或依赖默认的 stream selection 行为:
" -i $videoPath
-i $waterMarkPath
-filter_complex [1:v]scale=iw*$scale:-1[v1];[0:v][v1]overlay=0:0,colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
-pix_fmt yuv420p
-preset ultrafast -crf 23
-y $outputPath "
有关如何制作过滤图的概述,请参阅 FFmpeg Filtering Intro。
Is it the right way to apply color filters on video?
是的,如果你想使用 colorchannelmixer。
There are another ways to do it?
是的,有很多filters与颜色有关。
How can I apply the filter only on the video or only on the watermark?
这取决于过滤器的顺序以及您向过滤器提供的输入。
仅在主视频上使用 colorchannelmixer:
" -i $videoPath
-i $waterMarkPath
-filter_complex [0:v]colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131[main];[1:v]scale=iw*$scale:-1[v1];[main][v1]overlay=0:0
-pix_fmt yuv420p
-preset ultrafast -crf 23
-y $outputPath "
仅水印颜色通道混合器:
" -i $videoPath
-i $waterMarkPath
-filter_complex [1:v]scale=iw*$scale:-1,colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131[v1],[0:v][v1]overlay=0:0
-pix_fmt yuv420p
-preset ultrafast -crf 23
-y $outputPath "