web-dev-qa-db-fra.com

Convertir une vidéo en MP4 (H.264/AAC) avec ffmpeg

Si je ne me trompe pas, Safari a actuellement besoin de la vidéo MP4 (H.264/AAC) codée pour l'élément HTML5 <video>.

J'ai donc essayé de convertir une vidéo dans ce format avec ffmpeg. Cependant, lorsque j'entre la commande Shell ffmpeg -i video.flv video.mp4, l'erreur renvoyée est la suivante:

Semble la cadence d'images du codec du flux 0 diffère du taux de trame du conteneur: 2000.00 (2000/1) -> 29.92 (359/12) Entrée n ° 0, flv, à partir de 'video.flv':
Durée: 00: 05: 01.20, début: 0,000000, débit: 66 kb/s Flux # 0.0: Vidéo: h264, yuv420p, 320x240 [PAR 1: 1 DAR 4: 3], 66 kb/s, 29,92 tbr, 1k tbn, 2k tbc Flux # 0.1: Audio: aac, 22050 Hz, stéréo, s16 Sortie n ° 0, mp4, vers 'video.mp4': Flux # 0.0: Vidéo: mpeg4, yuv420p, 320x240 [PAR 1: 1 DAR 4: 3], q = 2-31, 200 kb/s, 90 ktbn, 29,92 tbc Flux # 0.1: Audio: 0x0000, 22050 Hz, stéréo, s16, flux de 64 kb/s cartographie: flux # 0.0 -> # 0.0
Stream # 0.1 -> # 0.1 Codec non pris en charge pour le flux de sortie # 0.1

Un codec AAC est nécessaire, mais je suis assez débutant avec Ubuntu et je ne sais pas vraiment comment résoudre ce problème. J'utilise Ubuntu 9.10 Karmik Koala (pour AMD64).

Merci beaucoup. :)

16
user176455

http://handbrake.fr est un outil de haut niveau de Nice avec de nombreux préréglages utiles pour mp4 pour iPod, PS3, ... avec des interfaces à la fois GUI et CLI pour Linux, Windows et Mac OS X.

Il est livré avec ses propres dépendances sous forme de graisse binaire unique liée statiquement, de sorte que tous les codecs x264/aac sont inclus.

  $ HandBrakeCLI -Z Universal -i myinputfile.mov -o myoutputfile.mp4

Pour lister tous les presets disponibles:

  $ HandBrakeCLI -z
15
ogrisel

Les brevets logiciels ont amené Debian/Ubuntu à désactiver les encodeurs H.264 et AAC dans ffmpeg. Voir /usr/share/doc/ffmpeg/README.Debian.gz.

Alors installez x264, mplayer/mencoder et l'encodeur AAC de Nero. (Ou, si vous voulez utiliser tous les logiciels libres et que vous vous souciez peu de la qualité audio, alors Sudo aptitude installe faac.)

Je ne me souviens pas si le paquet medibuntu de mencoder inclut l'encodage vid x264, puisque je construis le mien à partir de sources git x264 et svn mplayer. (x264 est très activement développé, avec des améliorations significatives en termes de qualité et de vitesse fréquemment ajoutées.) http://git.videolan.org/?p=x264.git;a=summary

x264 est également fourni, mais vous devriez vérifier qu'il est suffisamment à jour pour inclure weightp avec des corrections de bugs récentes et des améliorations encore plus récentes de la vitesse ...

Ou si vous êtes déjà prêt à convertir à partir du fichier .flv, au lieu de partir de la source de haute qualité à partir de laquelle le fichier flv a été créé, la version la plus récente de x264 sera probablement satisfaisante.

14
Peter Cordes

Vous essayez de convertir un fichier (plutôt rare) .flv contenant (déjà) une vidéo H.264 et un fichier audio AAC.

Le formatage de la sortie de votre console sous FFmpeg fait ressortir ces détails.

 Input #0, flv, from 'video.flv':
   Duration: 00:05:01.20, start: 0.000000, bitrate: 66 kb/s
    Stream #0.0: Video: h264, yuv420p, 320x240 [PAR 1:1 DAR 4:3], 66 kb/s, 29.92 tbr, 1k tbn, 2k tbc 
    Stream #0.1: Audio: aac, 22050 Hz, stereo, s16

Le fichier flv d'origine est converti en un fichier .mp4 avec une vidéo H.264 et un fichier audio AAC (exactement comme le fichier .flv d'origine):

Output #0, mp4, to 'video.mp4': 
    Stream #0.0: Video: mpeg4, yuv420p, 320x240 [PAR 1:1 DAR 4:3], q=2-31, 200 kb/s, 90k tbn, 29.92 tbc 
    Stream #0.1: Audio: 0x0000, 22050 Hz, stereo, s16, 64 kb/s

Les données audio et vidéo du fichier .flv étant déjà au format/codecs requis pour le fichier .mp4, il vous suffit de tout copier dans le nouveau conteneur .mp4. Ce processus sera massivement plus rapide que le décodage et le recodage de tout:

ffmpeg -i video.flv -vcodec copy -acodec copy video.mp4

ou plus simplement:

ffmpeg -i video.flv -codec copy video.mp4

La vraie erreur que vous obtenez est la suivante:

Codec non pris en charge pour le flux de sortie # 0.1

Ce qui signifie que FFmpeg ne peut pas convertir l’audio (flux # 0.1) en AAC. 

Vous pouvez ignorer l'erreur en:

  • copier les données audio car elles sont déjà encodées au format AAC (utilisez la commande de copie ci-dessus)

ou vous pouvez résoudre l'erreur en:

  • en utilisant une construction FFmpeg avec le support du décodage/encodage AAC. FFmpeg prend actuellement en charge 4 bibliothèques AAC (voir FFmpeg et AAC Encoding Guide ).

Pour plus de détails, vous devriez également lire Conversion de FLV en MP4 avec FFmpeg - Le guide ultime

4
Octavian Naicu

Vous devez recompiler ffmpeg (à partir du source) pour qu'il prenne en charge x264 . Si vous suivez les instructions de cette page, vous serez en mesure d’effectuer le type de conversion souhaité.

3
user1297157

Vous pouvez également essayer d'ajouter Motumedia PPA à vos sources apt et mettre à jour vos paquets ffmpeg.

1
axel_c

Vous devez compiler ffmpeg avec un encodeur AAC. Vous pouvez en trouver un sur AudioCoding .

0
mouviciel

Avait récemment ce problème avec la conversion de WMV méchant en Final Cut Pro X pour l'édition. Le joueur Flow peut le faire, mais il laisse une marque d’eau, alors je me suis un peu tripoté avec ffmpeg jusqu’à ce que quelque chose se passe.

Première installation de ffmpeg - j’ai utilisé brew install ffmpeg De toute évidence, vous devez installer Brew en premier, google ce bit.

Ensuite, j’ai écrit un script de ligne de commande simple avec le contenu suivant: vous pouvez substituer le $ 1 à un fichier d’entrée/sortie ou créer un fichier de script Shell.

echo "Pass one" ffmpeg -y -i "$1" -c:v libx264 -preset medium -b:v 1555k -pass 1 -c:a libfaac -b:a 256k -f mp4 /dev/null && echo "Pass two" ffmpeg -i "$1" -c:v libx264 -preset medium -b:v 1555k -pass 2 -c:a libfaac -b:a 256k "$1.mp4"

Ensuite, pour convertir votre vidéo ........ sh convert.sh monvideofile.wmv Si tout s'est bien passé, vous devriez voir un nouveau fichier appelé myvideofile.wmv.mp4.

J'espère que cela fonctionne pour vous.

0
user1808087

Essayez celui-ci :: Libav in Linux 

Installation: run command  
               Sudo apt-get install libav-tools 

Video conversion command::Go to folder contains the video and run in terminal
               avconv -i oldvideo.flv -ar 22050 convertedvideo.mp4
0
Vishal