Doğru şekilde çalışmak için, önce videoyu RAW YUV bit akışına (zaten değilse) şu şekilde dönüştürün:
ffmpeg -i input.mp4 -an -vcodec rawvideo -pix_fmt yuv420p rawbitstream.yuv
Sonraki adım: selectfiltre alır bir ifade , nçerçeve sayısıdır.
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
Sahip olmak ffmpegdeğil yinelenen kareleri, doğrudan giriş yapmanız frame oranının kuvvet yarısına sahip - ayarladığınız yüzden "2" çıkışına giriş ve "1" olarak. Ham bit akımının bu bilgileri taşıyan bir başlığı olmadığından Gxy'yi klibinizin gerçek boyutlarıyla değiştirmeyi unutmayın.
Yukarıdakilerin yerine setpts, çıkış için yeni zaman damgaları ayarlamak üzere filtre eklemek başka bir olasılık olabilir . Ancak çerçeveleri doğru bir şekilde düşürmediğinden dikkatli olun. Burada 25, istediğiniz gerçek çıktı kare hızıdır:
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
Elbette başka bir piksel formatı (herhangi biri ffmpeg -pix_fmts) seçebilirsiniz . Dosyayı okurken piksel boyutunu ve piksel biçimini bildiğinizden emin olun:
ffmpeg -f rawvideo -s:v 1280x720 -pix_fmt yuv420p input.yuv …