Y a-t-il un moyen précis de prendre une vidéo brute et d'en extraire une nouvelle vidéo contenant uniquement des cadres impairs ou même des cadres (par choix)?
Par exemple:
J'ai "bla.yuv" avec 400 cadres (0-399). Je veux créer "blahodd.yuv" qui contient des cadres 1-399 (1,3,5,7 ... 399) et "blaheven" qui contient des cadres 0-398 (0,2,4,6 ... 398 ).
Des idées Comment le faire en utilisant uniquement FFMPEG?
Pour travailler avec précision, convertissez d'abord la vidéo en Bitstream RAW YUV (s'il n'est pas déjà) par:
ffmpeg -i input.mp4 -an -vcodec rawvideo -pix_fmt yuv420p rawbitstream.yuv
Étape suivante: le select
filtre prend ne expression , où n
est le numéro de cadre.
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
Pour avoir ffmpeg
non des cadres en double, vous devez forcer la moitié de votre entrée de votre entrée - de sorte que vous définissez "2" comme entrée et "1" à la sortie. N'oubliez pas de remplacer le WXH avec les dimensions réelles de votre clip car le Bitstream brut n'a pas d'en-tête qui porte cette information.
Au lieu de ce qui précède, une autre possibilité serait d'ajouter le setpts
filtre pour définir de nouveaux horodatages pour la sortie. Mais soyez prudent car il tombe des cadres de manière non précise. Ici, 25 est le taux de trame de sortie réel que vous souhaitez:
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
Vous pouvez bien sûr choisir un autre format de pixel (n'importe lequel de ffmpeg -pix_fmts
). Assurez-vous que lorsque vous lisez le fichier, vous connaissez le format de pixel et le format pixel:
ffmpeg -f rawvideo -s:v 1280x720 -pix_fmt yuv420p input.yuv …