J'essaye de changer le framerate d'une vidéo MP4 (c'est une vidéo GoPro 120fps, je veux la lire à 30fps pour un effet de ralenti).
J'utilise avconv pour cela:
avconv -i SourceMovie.mp4 -vf setpts=4.0*PTS -r 30 DestMovie.mp4
Cela fonctionne techniquement, mais il réencode le film. En plus d'être lent, c'est évidemment un problème de qualité. Techniquement, il devrait y avoir un moyen de simplement définir les fps dans l'en-tête de la vidéo, comment puis-je changer cela? (Tout outil autre que avconv fonctionnerait aussi.)
video
avconv
video-conversion
EboMike
la source
la source
MP4Box -add source.mp4#video -raw 1 -new test
), puis enregistrez-le à nouveau en tant que MP4 (MP4Box -add test_track1.h264:fps=30 -new dest.mp4
). Vous pouvez également y ajouter une piste audio (via #audio).-single
option pour la première commande.MP4Box -single 1 -raw 1 SourceMovie.mp4
crée un seul fichierSourceMovie_track1.h264
au lieu de deux.La modification du débit d'images dans l'en-tête de la vidéo (conteneur) n'a aucun effet sur le flux vidéo (ou audio). Le réencodage est la seule option.
Les flux vidéo ont des horodatages et dans la plupart des vidéos, les images sont interdépendantes en raison de la compression inter-images. Certains joueurs peuvent accélérer et ralentir la vidéo, mais pas par des commandes intégrées ou quelque chose. Aucun joueur ne peut changer le framerate à la volée quand une commande de conteneur le demande. Le fichier vidéo se retrouvera hors spécifications (c'est-à-dire ne respectant pas les normes) et 99,9% des joueurs refuseront de s'y conformer. Il est tout à fait impossible de faire ce que vous voulez sans recodage. Bien sûr, vous pouvez attendre le recodage jusqu'à la dernière étape de votre montage.
la source
Dans le cas où votre intention principale est de le lire au ralenti, et de ne pas conserver le fichier en MP4, vous pouvez utiliser l'outil GUI MKVmerge pour le remuxer dans un conteneur Matroska qui peut facilement changer le framerate. Le remuxage est bien meilleur que le réencodage, car il ne fait que modifier les métadonnées, et non le flux lui-même.
Vous installez d'abord le package
Ensuite, vous démarrez l'interface graphique MKVmerge. Vous serez face à une fenêtre comme celle-ci
Appuyez simplement sur le bouton Ajouter et sélectionnez votre fichier ou même faites simplement glisser-déposer le fichier dans la zone "Fichiers d'entrée". À ce stade, vous devriez pouvoir sélectionner le flux vidéo dans votre vidéo. Vous pouvez également supprimer d'autres flux, car ils seront de toute façon gênants.
Après l'avoir sélectionné, vous devriez voir les onglets du bas devenir actifs:
Passer à "Formater des actions spécifiques"
Vous pouvez voir qu'il y a un champ "FPS", où vous pouvez entrer la valeur des images par seconde. Il semblait que vous prévoyiez de ralentir les choses quatre fois, donc environ 7 images par seconde serait votre objectif. Vous pouvez également utiliser l'option "Stretch by".
Après cela, vous pouvez simplement changer le nom du fichier de sortie (si vous le souhaitez) et appuyez sur "Démarrer le multiplexage".
Le programme s'exécutera et vous devriez avoir votre fichier.
la source
Je voulais également ralentir sans perte mes films à 120 FPS à 30 FPS. J'ai fait un script qui le fait en changeant le tempo du son et en modifiant FPS directement dans le conteneur MP4. Les outils suivants sont requis:
Le script utilisé pour la conversion est ici:
Ce script crée une copie de MP4 avec le suffixe _slow.
la source