답변:
정확하게 작동하려면 먼저 RAW YUV 비트 스트림으로 비디오를 변환하십시오 (아직없는 경우).
ffmpeg -i input.mp4 -an -vcodec rawvideo -pix_fmt yuv420p rawbitstream.yuv
다음 단계 : select
필터 걸리다 표현 , 어디서 n
프레임 번호입니다.
ffmpeg -r 2 -s WxH -i rawbitstream.yuv -filter:v select="mod(n-1\,2)" \
-c:v rawvideo -r 1 -format rawvideo -pix_fmt yuv420p -an odd.yuv
ffmpeg -r 2 -s WxH -i rawbitstream.yuv -filter:v select="not(mod(n-1\,2))" \
-c:v rawvideo -r 1 -format rawvideo -pix_fmt yuv420p -an even.yuv
가지고있다 ffmpeg
프레임을 복제하지 않으면 입력의 프레임 속도의 절반을 강제해야합니다. 그래서 "2"를 입력으로 지정하고 "1"을 출력으로 설정합니다. 원시 비트 스트림에이 정보를 전달하는 헤더가 없으므로 WxH를 클립의 실제 크기로 바꾸는 것을 잊지 마십시오.
위의 방법 대신 다른 방법으로 setpts
필터를 사용하여 출력에 대한 새 타임 스탬프를 설정합니다. 그러나 프레임을 정확하게 떨어 뜨리지 않으므로 조심하십시오. 여기에서 25는 원하는 실제 출력 프레임 속도입니다.
ffmpeg -i input.mp4 -filter:v select="mod(n-1\,2)",setpts="N/(25*TB)" \
-c:v rawvideo -r 12.5 -format rawvideo -pix_fmt yuv420p -an odd.yuv
ffmpeg -i input.mp4 -filter:v select="not(mod(n-1\,2))",setpts="N/(25*TB)" \
-c:v rawvideo -r 12.5 -format rawvideo -pix_fmt yuv420p -an even.yuv
물론 다른 픽셀 형식을 선택할 수 있습니다 ( ffmpeg -pix_fmts
). 파일을 읽을 때 픽셀 크기와 픽셀 형식을 알고 있는지 확인하십시오.
ffmpeg -f rawvideo -s:v 1280x720 -pix_fmt yuv420p input.yuv …
-vf
별칭입니다. -filter:v
. 나는 지금 그것을 안정적으로 테스트 할 수는 없지만 나중에 기계로 돌아올 때 이것을 조사 할 것입니다. 어쩌면 tinterlace
필터 똑같이 할 수 있니?
ffmpeg가 AviSynth 플래그로 빌드 된 경우 나는 믿는다 당신은 .avs
파일.
달리기로 확인할 수 있습니다. ffmpeg
찾고 --enable-avisynth
~ 안에 구성 데이터.
그것이 있으면 다음과 같이 사용할 수 있습니다 : ffmpeg -i blahEven.avs blahEven.yuv
.
어디에 blahEven.avs
간단합니다 :
ffvideosource ( "blah.yuv"). SelectEven ()
홀수 프레임의 경우 SelectOdd()
.
고급 사용법은 SelectEvery 선적 서류 비치.
--enable-avisynth
AviSynth가 ffmpeg에 내장되어 있다는 의미 였지만, 확실하지 않습니다.