2017-12-28 26 views
1

ffmpeg를 사용하여 하나의 비디오를 다른 비디오 위에 겹쳐 쓰려고하는데 오류를 이해하지 못했습니다. 내가 더 구체적으로 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 시스템에 적응하기로 결정했다. –