J'ai un flux vidéo avec les propriétés suivantes:
Stream #0:0: Video: mpeg4 (Advanced Simple Profile) (XVID / 0x44495658), yuv420p, 720x416 [SAR 1:1 DAR 45:26], 1908 kb/s, 25 fps, 25 tbr, 25 tbn, 25 tbc
Lorsque je l'exécute dans VLC, je dois appuyer sur "A" pour changer le rapport d'aspect en "4: 3" pour que la vidéo s'affiche avec le rapport d'aspect correct.
En regardant les faits vidéo, l'erreur est-elle que a) la vidéo réelle a été incorrectement étirée dans les données de pixels, ou b) il y a simplement une valeur de métadonnées qui a été incorrectement définie?
Si le premier, je sais que je peux ré-encoder la vidéo et changer la largeur et la hauteur. Mais dans ce dernier cas, quelle commande ffmpeg exécuter pour corriger les métadonnées sans réencoder la vidéo elle-même?
-c copy
et évoluer en même temps; toutefois, vous pouvez utiliser-aspect
pour modifier le rapport hauteur / largeur au niveau du conteneur (mais pas au niveau du flux).-aspect
fonctionne pour la lecture dansffplay
, mais pas dans WMP ou MPC-HC. Il ajoute un élément SAR / DAR supplémentaire à laStream #…
ligne d'informationsFFmpeg/probe/play
mais ne semble pas être une solution pour la lecture générale. Étirer la vidéo avec la fenêtre semble être la solution la plus simple pour la lecture MPC-HC.La réponse de Delgado est correcte: MP4Box peut le faire, mais l'
-par
option ne fonctionne pas exactement comme décrit. Avec un-out
paramètre (pour ne pas perturber votre fichier d'origine):Lorsque vous utilisez
-par stream-number=width:height
, vous définissez le rapport hauteur / largeur des pixels, c'est-à-dire le résultat de la division du rapport hauteur / largeur du périphérique par le rapport hauteur / largeur de stockage. (De manière équivalente, vous décrivez le rapport d'aspect d'un pixel source.) Par exemple, supposons que vous ayez une source DVD de 720 × 480 et que le rapport d'aspect d'affichage correct soit de 4: 3. Pour ce cas, vous avez besoin de:car (4/3) / (720/480) = 8/9.
Si la source représente de vrais pixels SD NTSC (auquel cas seuls les 704 × 480 pixels centraux sont censés correspondre à un écran 4 × 3, avec un surbalayage de 8 pixels de chaque côté), la commande correcte serait:
car (4/3) / (704/480) = 10/11 - exactement le rapport d'aspect en pixels de référence pour la vidéo NTSC en définition standard.
Pour le cas donné dans la question, si c'est vraiment 4: 3, cela donne un rapport d'aspect pixel très étrange: (4/3) / (720/416) = 104/135. Il fait 720 de large, ce qui suggère une source DVD; c'est une vidéo à 25 ips, suggérant PAL, mais le PAR fonctionne à moins de 1, suggérant NTSC. Cela pourrait être 4: 5, je suppose (très proche de 104: 135), mais je ne connais rien qui produise ce rapport d'aspect en pixels; essayez peut-être d'abord, puis essayez 3: 4 s'il semble toujours un peu trop étiré horizontalement. Si vous êtes certain que c'est exactement 4: 3, bien sûr, utilisez simplement 104: 135.
la source
ffmpeg ne peut pas modifier les paramètres d'un flux vidéo sans ré-encodage, MP4Box (partie de gpac ) et mkvmerge le peuvent. Dans le cas d'un flux vidéo et d'un rapport d'aspect réel / correct de 4: 3, vous pouvez essayer:
Pour vérifier avant et après:
ffmpeg -i VideoFile.mp4
la source
Modification du SAR sans réencodage aussi avec des œuvres
ffmpeg
sur l'.mp4
utilisation duh264_metadata
comme Gyan a souligné ici :la source