2017-12-28 71 views
1

ffmpegを使用して1つのビデオを別のビデオの上に重ねようとしていますが、エラーをよく理解できませんでした。 私は既存のコマンドに基づいていますhereFFMPEG:特定の範囲のカラーピクセルを透明にする

具体的には、特定の色(たとえば、茶色の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 

答えて

2

geqフィルタは、RGBとYUVの両方の形式の入力で動作することができ、その表現の一つは、それを示すためにラベル付けする必要があります。しかし、もっと重要なのは、あなたの入力がRGBでないか、またはアルファを持っている可能性があるので、まずそれを修正する必要があるということです。

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 
+0

ヒントありがとうございます。長期的にはうまくいかないようなrgbを使うように感じました。私はycrcbシステムだけに適応することにしました。 –

関連する問題