Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
FFMPEG:使特定范围的彩色像素透明_Ffmpeg_Video Conversion - Fatal编程技术网

FFMPEG:使特定范围的彩色像素透明

FFMPEG:使特定范围的彩色像素透明,ffmpeg,video-conversion,Ffmpeg,Video Conversion,我试图使用ffmpeg将一个视频叠加到另一个视频上,但无法完全理解错误。 我基于来自的现有命令 更具体地说,我想替换接近特定颜色的所有颜色(比如棕色r:82、g:44、b:11),然后将它们设置为透明 ffmpeg -i moonmen.mp4 -i transparent_overlay.mp4 -filter_complex "[1]split[m][a]; [a]geq='if(between(r(X,Y), 77, 87)*between(g(X,Y), 39, 49)*between

我试图使用ffmpeg将一个视频叠加到另一个视频上,但无法完全理解错误。 我基于来自的现有命令

更具体地说,我想替换接近特定颜色的所有颜色(比如棕色r:82、g:44、b:11),然后将它们设置为透明

ffmpeg -i moonmen.mp4 -i transparent_overlay.mp4 -filter_complex
"[1]split[m][a];
 [a]geq='if(between(r(X,Y), 77, 87)*between(g(X,Y), 39, 49)*between(b(X,Y), 06, 16) ,255:255:255,0:0:0)';
 [m][al]alphamerge[ovr];
 [0][ovr]overlay"
output.mp4
但我有一个错误:

[Parsed_geq_1 @ 0x7fc8e2e08400] Either YCbCr or RGB but not both must be specified
[AVFilterGraph @ 0x7fc8e2e07c60] Error initializing filter 'geq' with args 'if(between(r(X,Y), 77, 87)*between(g(X,Y), 39, 49)*between(b(X,Y), 06, 16) ,255:255:255,0:0:0)'
Error initializing complex filters.
Invalid argument

geq
过滤器可以在RGB和YUV格式输入上工作,因此必须对其中一个表达式进行标记以表明这一点。但更重要的是,您的输入可能不是RGB,也可能不是alpha,因此必须首先修复它

ffmpeg -i moonmen.mp4 -i transparent_overlay.mp4 -filter_complex
"[1]format=rgba,geq=r='r(X,Y)':a='if(between(r(X,Y),77,87)*between(g(X,Y),39,49)*between(b(X,Y),6,16),0,255)'[ovr];
 [0][ovr]overlay"
output.mp4

谢谢你的提示。从长远来看,像这样使用rgb是行不通的。我决定只适应ycrcb系统。