web-dev-qa-db-fra.com

ffmpeg convertit un fichier mov en MP4 pour la balise vidéo HTML5 IE9

J'ai regardé partout ici et sur Google - il n'y a pas de commande valide qui fonctionne pour IE9 . Certains manquent à IE9. Tout ce que j'ai essayé a fonctionné partout ailleurs: chrome, safari, appareil mobile, etc Je veux une commande qui le convertira et je pourrai l’utiliser dans tous les appareils supposés supporter le mp4 dans les balises vidéo HTML5.

J'utilise ces commandes:

ffmpeg -i movie.mov -vcodec copy -acodec copy out.mp4
ffmpeg -i movie.mov -vcodec libx264 -vprofile high -preset slow -b:v 500k -maxrate 500k -bufsize 1000k -vf scale=-1:480 -threads 0 -acodec libvo_aacenc -b:a 128k -pix_fmt yuv420p outa.mp4
ffmpeg -i movie.mov -b:V 1500k -vcodec libx264 -preset fast -g 30 adel.mp4
ffmpeg -i movie.mov -acodec aac -strict experimental -ac 2 -ab 160k -vcodec libx264 -preset slow -f mp4 -crf 22 lamlam.mp4
ffmpeg -i movie.mov -acodec aac -strict experimental -ac 2 -ab 160k -vcodec libx264 -preset slow -profile:v baseline -level 30 -maxrate 10000000 -bufsize 10000000 -f mp4 -threads 0 adiel.mp4

etc .. à nouveau toutes ces commandes produisent un fichier mp4 valide qui fonctionne sur chrome, safari etc ... et fonctionne même lorsque je les lance dans windows lui-même en utilisant window media player . Quand je mets ce fichier dans la balise video ( J'utilise http://videojs.com/ ) dans IE9, cela ne fonctionne pas!

<div class="vidoco-content" style="margin-top: 20px;">
<video id="divVid" class="video-js vjs-default-skin vidoco-center" controls preload="none" width="600" height="400" poster="<?php echo(DOMAIN); ?>static/test.jpg">
    <source src="<?php echo(DOMAIN); ?>static/out.mp4" type="video/mp4" />
</video>

Si j'utilise le logiciel miro video converter pour convertir le même fichier mov en mp4, il est converti correctement et je peux le lire dans IE9! Miro converter utilise également embedd ffmpeg, je suis sûr que c'est seulement un indicateur de la commande ffmpeg droite et des paramètres . Dans mon Apache htaccess, je définis les types de mime corrects pour mes fichiers et je le vois réellement lorsque je regarde dans les outils de développement IE:

AddType audio/aac .aac
AddType audio/mp4 .mp4 .m4a
AddType audio/mpeg .mp1 .mp2 .mp3 .mpg .mpeg
AddType audio/ogg .oga .ogg
AddType audio/wav .wav
AddType audio/webm .webm

AddType video/mp4 .mp4 .m4v
AddType video/ogg .ogv
AddType video/webm .webm

Je me bats avec cela depuis longtemps, toute aide serait donc la bienvenue.

Merci!

48
Adidi

Pour ffmpeg:

ffmpeg -i {input}.mov -vcodec h264 -acodec aac -strict -2 {output}.mp4

Vous pouvez également ajouter le paramètre -q:v/-q:a pour spécifier la qualité de la vidéo. Vous pouvez également utiliser HandBrake qui est un encodeur plus simple que ffmpeg.

Pour HandBrake:

handbrakecli -i {input}.mov -e x264 -E facc -o {output}.mp4

EDIT: j'ai trouvé la solution! Voici un Zip avec une démo de travail que j'ai testée sur IE 9 et Firefox!

http://www.mediafire.com/download/kyavlpudybg0bc1/HTML5_video.Zip

En outre, la démo ci-dessus a un repli flash, il devrait donc fonctionner sur IE8 et moins.

Même commande ffmpeg utilisée.
EDIT: Je devais re-télécharger la vidéo, car mon service d’hébergement est hors service pour le moment. Maintenant, il est hébergé sur mediafire. J'ai trouvé qu'ils sont le meilleur service de partage de fichiers. Annonces minimales, pas d'inscription, pas d'attente de 30 secondes.

Consultez également cette discussion sur le site Web de videojs:  http://help.videojs.com/discussions/problems/1020-ffmpeg-command-produce-your-demonstration-video .

TRÈS IMPORTANT! Assurez-vous de cliquer sur le bouton "Autoriser le contenu actif" pour autoriser la vidéo lors de l'exécution locale!

Vidéo du problème que j'ai et de ma solution: Voir ma démo mentionnée ci-dessus.

Code HTML utilisé lors des tests:

<!DOCTYPE html>
<html>
<body>

<video width="320" height="240" controls>
  <source src="movie.mp4" type="video/mp4">
  <source src="movie.ogg" type="video/ogg">
  Your browser does not support the video tag.
</video>

</body>
</html>

J'ai analysé une vidéo de test de travail fournie par w3schools (cela fonctionne sous IE) et j'ai découvert qu'ils utilisaient HandBrake pour coder la vidéo.

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'movie.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: mp42isomavc1
    creation_time   : 2010-05-11 10:32:06
    encoder         : HandBrake 0.9.4 2009112300
  Duration: 00:00:12.61, start: 0.000000, bitrate: 202 kb/s
    Chapter #0.0: start 0.000000, end 12.612000
    Metadata:
      title           :
    Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 320x240, 80 kb/s, 29.65 fps, 29.97 tbr, 90k tbn, 59.31 tbc
    Metadata:
      creation_time   : 2010-05-11 10:32:06
    Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 115 kb/s
    Metadata:
      creation_time   : 2010-05-11 10:32:06
    Stream #0:2(und): Subtitle: mov_text (text / 0x74786574)
    Metadata:
      creation_time   : 2010-05-11 10:32:06`
91
MDTech.us_MAN

Un voyage primaire à ffmpeg


Téléchargez le dernier fichier ffmpeg et ses presets http://www.ffmpeg.org/download.html

Suivez les instructions pour installer Ffmpeg Binary Sous Windows


Instructions:

  1. Obtenez la dernière version de la page arrozcru autobuilds 
  2. Décompressez le dossier dans C:/Program Files/ffmpeg 
  3. Ajoutez C:/Program Files/ffmpeg/bin à la variable d’environnement PATH de votre système 

Configuration prédéfinie optionnelle de libx264: 

Si vous utilisez les préréglages libx264 (en utilisant l'indicateur -vpre), vous devez procéder à la configuration suivante. 

  1. Créez une variable d’environnement HOME pour votre utilisateur pointant vers votre répertoire personnel. (par exemple, pour Vista/7/8 C:/Utilisateurs/Moose ou pour XP C:/Documents and Settings/Moose) 
  2. Créez un dossier .ffmpeg dans votre répertoire personnel 
  3. Copiez les fichiers prédéfinis depuis C:/Program Files/ffmpeg/share/*. Ffpreset dans% HOME% /. Ffmpeg. 
  4. Vous pouvez maintenant ouvrir une invite de commande et utiliser ffmpeg. : D (par exemple, c’est ma commande de conversion vidéo Vimeo. Ffmpeg -i input.mov -vcodec libx264 -vpre hq -crf 24 -g 25 -acodec libmp3lame -ab 192k -ar 44100 output.mp4) 
    * NOTE: libfaac n’est pas inclus dans la construction puisque libfaac est considéré comme un plugin non libre. 

N'oubliez pas de définir la variable d'environnement HOME dans Windows

  1. Copier les préréglages dans le dossier de la variable d'environnement 
  2. Vous devez utiliser les commandes suivantes pour convertir en utilisant ffmpeg: 

Pour mp4 (H.264/ACC):

ffmpeg -i INPUTFILE -b 1500k -vcodec libx264 -vpre slow -vpre baseline -g 30 "OUTPUTFILE.mp4"

Pour webm (VP8/Vorbis):

ffmpeg -i "INPUTFILE"  -b 1500k -vcodec libvpx -acodec libvorbis -ab 160000 -f webm -g 30 "OUTPUTFILE.webm"

Pour ogv (Theora/Vorbis):

ffmpeg -i "INPUTFILE" -b 1500k -vcodec libtheora -acodec libvorbis -ab 160000 -g 30 "OUTPUTFILE.ogv"
11
7-isnotbad

de lien d'origine ...

WebM est entièrement pris en charge dans ffmpeg 0.6 et versions ultérieures. Sur la ligne de commande, exécutez ffmpeg sans paramètre et vérifiez qu'il a été compilé avec le support VP8:

you@localhost$ ffmpeg
FFmpeg version SVN-r23197, Copyright (c) 2000-2010 the FFmpeg developers
built on May 19 2010 22:32:20 with gcc 4.4.3
configuration: --enable-gpl --enable-version3 --enable-nonfree --enable-postproc 
--enable-pthreads --enable-libfaac --enable-libfaad --enable-libmp3lame 
--enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora 
--enable-libx264 --enable-libxvid --enable-x11grab --enable-libvorbis 
--enable-libvpx

Si vous ne voyez pas les mots magiques “--enable-libvorbis” et “--enable-libvpx”, vous n’avez pas la bonne version de ffmpeg. (Si vous avez vous-même compilé ffmpeg, vérifiez si deux versions sont installées. C’est bien, elles ne seront pas en conflit. Vous devrez simplement utiliser le chemin complet de la version de ffmpeg compatible VP8.)

Je vais faire un encodage en deux passes. Étape 1 analyse simplement le fichier vidéo d'entrée (-i pr6.dv) et écrit des statistiques dans un fichier journal (qui s'appellera automatiquement pr6.dv-0.log). Je spécifie le codec vidéo avec le paramètre -vcodec:

you@localhost$ ffmpeg -pass 1 -passlogfile pr6.dv -threads 16  -keyint_min 0 -g 250 -skip_threshold 0 -qmin 1 -qmax 51 -i pr6.dv -vcodec libvpx -b 614400 -s 320x240 -aspect 4:3 -an -y NUL

La plupart des commandes en ligne de ffmpeg n’ont rien à voir avec VP8 ou WebM. libvpx supporte un certain nombre d’options spécifiques à VP8 que vous pouvez transmettre à ffmpeg, mais je ne sais pas encore comment elles fonctionnent. Une fois que j’en ai trouvé une bonne explication, je vais la relier ici et les incorporer dans le récit si cela en vaut la peine.

Pour la deuxième passe, ffmpeg lira les statistiques qu'il a écrites lors de la première passe et effectuera l'encodage de la vidéo et de l'audio. Il écrira un fichier .webm.

you@localhost$ ffmpeg -pass 2 -passlogfile pr6.dv -threads 16  -keyint_min 0 -g 250 -skip_threshold 0 -qmin 1 -qmax 51 -i pr6.dv -vcodec libvpx -b 614400 -s 320x240 -aspect 4:3 -acodec libvorbis -y pr6.webm

Il y a cinq paramètres importants ici:

  • -vcodec libvpx indique que nous encodons avec le codec vidéo VP8. WebM utilise toujours la vidéo VP8.
  • -b 614400 spécifie le débit. Contrairement aux autres formats, Libvpx attend le débit en bits réels, pas en kilobits. Si vous voulez Une vidéo à 600 kbps, multipliez 600 par 1024 pour obtenir 614400.
  • -s 320x240 spécifie la taille cible, largeur par hauteur.
  • -aspect 4:3 spécifie le rapport de format de la vidéo . La vidéo en définition standard est généralement au format 4: 3, mais la définition la plus élevée en définition élevée est le format 16: 9 ou 16:10. Lors de mes tests, j'ai constaté que je devais spécifier explicitement ceci Sur la ligne de commande, au lieu de compter sur ffmpeg pour Le détecter automatiquement.
  • -acodec libvorbis indique que nous encodons avec le codec audio Vorbis. WebM utilise toujours l'audio Vorbis.
4
Robert Rowntree

Mon problème était le formatage en pixels.

L'ajout de -pix_fmt yuv420p l'a corrigé dans IE pour moi.

1
max kaplan

J'ai passé de nombreuses heures à essayer de comprendre cela. J'ai enfin trouvé comment faire cela correctement en utilisant avconv (ou ffmpeg)

  1. Convertissez la vidéo en MPEG4 à l'aide du codec H.264. Vous n'avez besoin de rien d'extraordinaire, laissez simplement avconv faire le travail pour vous:

    avconv -i video.mp4 -vcodec libx264 pre_out.mp4
    
  2. Déplacez les informations de fichier dans l'en-tête du fichier afin que le navigateur puisse commencer à les lire dès le début du téléchargement. CECI IS EST LA CLEF POUR IE9 !!!

    qt-faststart pre_out.mp4 out.mp4
    

qt-faststart est un utilitaire Quicktime qui prend également en charge le format de fichier H.264/ACC. Cela fait partie du package libav-tools.

1
Gael Lafond

Avait le même problème il y a un moment, et j'ai résolu avec succès de cette façon:

Commencez par télécharger la dernière version de ffmpeg (ou compilez-la à partir du référentiel officiel de github ( https://github.com/FFmpeg/FFmpeg ), si vous souhaitez effectuer des essais).

Alors essayez ceci:

ffmpeg -i input.mov -c:v libx264 -c:a libfaac -strict experimental output.mp4

J'espère que cela va aider!

0
enzo.rivello