2017-05-06 5 views
1

yuv420p 픽셀 형식으로 인코딩 된 비디오가 있고 그 픽셀을 이동하려고합니다. 저는 ffmpeg와 새로운 변위 필터를 사용하고 있습니다. 필터는 X 축과 Y 축 각각에 대해 두 개의 변위 맵 (displace map)과 입력 (비디오는 제외됩니다)을 취합니다. 나는 nullsrc 비디오 소스 필터와 geq 필터를 사용하여 변위 맵을 ffmpeg에 직접 작성하여 3 개의 평면 (lum, Cb, Cr)의 값을 지정하기로 결정했습니다. 스크립트는 다음과 같다 : GEQ에 사용 된 표현이 문제의 목적으로 관련이 있기 때문에왜 Cb 및 Cr 평면이 ffmpeg에서 displace 복합 필터에 의해 lum과 다르게 배치 되었습니까?

ffmpeg INPUT.mp4 -f lavfi -i nullsrc=size=${WIDTH}x${HEIGHT}:d=0.1,geq='lum=128+30*sin(2*PI*X/400):Cb=128+30*sin(2*PI*X/400):Cr='128+30*sin(2*PI*X/400)' -f lavfi -i nullsrc=size=${WIDTH}x${HEIGHT}:d=0.1,geq='lum=128+30*sin(2*PI*X/400):Cb=128+30*sin(2*PI*X/400):Cr=128+30*sin(2*PI*X/400)' -lavfi '[0][1][2]displace' OUTPUT.mp4 

내가는 FFmpeg의 문서에 제공된 예제를 사용했다.

계산에서, 나는 입력 비디오의 픽셀이 적절하게 옮겨지지 않았기 때문에, 난색 된 비디오 정보 비디오가 이동되었지만 흑백으로 보일 수 있음을 의미합니다. 몇 가지 테스트를 수행 한 결과, 변위 맵은 생성 된 휘도 평면이 올바르게 변위 된 반면, 색차 평면은 변위되었지만 다음과 같이 입력 비디오에서 평면이 어긋나는 원인 인 luma와는 다르게 나타났습니다 추출물 프레임 :

enter image description here

I는 변위 맵 인증 기관 및 CR 평면을 설명하는 동영상 루마 평면의 절반의 해상도를 가질 것으로 확인.

제 질문은 정확하게 정확하게 luma 평면과 동일하도록 geq 정의에서 Cr 및 Cb 평면을 올바르게 설정할 수 있습니까?

ffmpeg가 제공하는 기능이 동일하더라도 루마와 Cb, Cr면에서 왜 다른 결과를 내게 주는지 설명 할 수 있다면 좋을 것입니다.

ffmpeg 3.3 정적 빌드를 사용하고 있다면 도움이 될 것입니다.

감사합니다.

답변

1

YUV420P는 발견 한대로 Cb와 Cr을 절반으로 채집한다는 의미입니다. 각 Cb/Cr 픽셀/샘플은 4 픽셀 (이 경우 2x2)에 적용됩니다. 표현식은 각 채도 샘플을 luma와 동일한 양만큼 이동시킵니다. 이는 효과적인 변위를 배가시키는 효과가 있습니다. 해결 방법은 입력 및 변위 맵을 완전히 샘플링 된 크로마 평면으로 다시 스케일링하고 필요한 경우 필터링이 끝날 때 4 : 2 : 0으로 다운 샘플링하는 것입니다. 모든 픽셀 포맷 변환없이, YUV420P 입력 작업을 위해

ffmpeg -i in.mp4 -f lavfi -i nullsrc=size=1280x720:d=0.1,format=yuv444p,geq=lum='128+30*sin(2*PI*X/400)':cb='(128+30*sin(2*PI*X/400))':cr='(128+30*sin(2*PI*X/400))' -lavfi [0]format=yuv444p[v];[v][1][1]displace,format=yuv420p out.mp4 

,

ffmpeg -i in.mp4 -f lavfi -i nullsrc=size=1280x720:d=0.1,geq=lum='128+30*sin(2*PI*X/400)':cb='(128+15*sin(2*PI*2*X/400))':cr='(128+15*sin(2*PI*2*X/400))' -lavfi [0][1][1]displace out.mp4 
+0

당신의 대답을 많이 감사 사용, 그것은 문제가 해결! 비디오의 품질을 유지하는 데 가장 적합한 솔루션은 두 가지입니다. – Neb

+0

테스트에서 차이점을 많이 보지 못했지만 이전 테스트 방식을 선호합니다. – Mulvya