Convertissez AVI en H.264 qui fonctionne dans une balise vidéo HTML5

7

Je voudrais convertir un AVI noir et blanc existant en une vidéo H.264 qui fonctionne dans une balise vidéo HTML5.

J'utilise actuellement cette commande ffmpeg:

ffmpeg -i file.avi -y -c:v libx264 file.h264

Cette commande ne fonctionne pas pour moi. Il produit le fichier H.264, mais il ne joue pas ailleurs que le lecteur VLC.

Développeur SF
la source

Réponses:

16

.h264est juste un bytestream H.264 brut. Il ne s'agit que de contenu vidéo pouvant être lu par des lecteurs sophistiqués, mais vous souhaitez généralement tout placer dans un format de conteneur, tel que MPEG-4 Part 14 ("MP4").

Alors, lancez:

ffmpeg -i file.avi -c:v libx264 -pix_fmt yuv420p file.mp4

Pour le téléchargement progressif HTML5, vous pouvez déplacer l' moovatome du conteneur MP4 au début du fichier, ce qui permet une lecture instantanée:

ffmpeg -i file.avi -c:v libx264 -pix_fmt yuv420p -movflags faststart file.mp4

Vous pourriez être intéressé par: Qu'est-ce qu'un codec (par exemple, DivX?) Et en quoi diffère-t-il d'un format de fichier (par exemple, MPG)?

slhck
la source
La sortie MP4 ne s'exécute ni sur une balise vidéo HTML5 ni sur Windows Media Player. Lorsque j’exécutais votre commande, j’obtenais un message jaune indiquant «Format de pixel obsolète utilisé, assurez-vous que vous avez correctement défini la plage. Aucun format de pixel spécifié, yuvj444p pour le codage h.264 choisi. je peux maintenant voir la vidéo sur une balise vidéo HTML5
SF Developer
Oui, c'est pourquoi ils ont le message là-bas. À l'avenir, publiez également le résultat complet en ligne de commande de vos commandes ffmpeg, et pas seulement la commande elle-même. Ensuite, je vous aurais probablement dit que vous deviez changer le format de pixel en raison de votre entrée non standard.
Slhck
Mon scénario actuel est le suivant: la vidéo est créée sur un ordinateur client local et convertie au format h264 pour la compression, la qualité et la taille (puisque je dois la télécharger via un API sur le serveur). L'avi de 70Mg devient une vidéo h264 de 100K par rapport à un MP4 de 1MG (donc pour des raisons de téléchargement, il est bon de le convertir d'abord en h264, puis sur le serveur en MP4 final). Je me demande si la commande -i file.avi -y -c: v libx264 fichier.h264 que j'ai exécutée sur le client devrait être différente ... sachant qu'il me faudra la reconvertir sur le serveur en mp4.
SF Developer
Le conteneur MP4 ne vous donne qu'une surcharge de quelques pour cent, pas 100 Ko pour la vidéo H.264 par rapport à 1 Mo pour la même vidéo dans un conteneur. Je pense que vous faites quelque chose de mal. Encodez tout en MP4 - vous aurez beaucoup plus de facilité à gérer les fichiers par la suite.
Slhck
Je vais essayer ça ... merci pour l'aide. et oui je téléchargerai la sortie entière la prochaine fois. Très appréciée !!
Développeur SF,