web-dev-qa-db-fra.com

Utilisation de ffmpeg pour encoder une vidéo au format codec H264

J'ai un fichier vidéo * .mp4 (codec vidéo MPEG4) et j'essaie de le convertir au format codec vidéo H264 (format raw h.264) à l'aide de ffmpeg sous Linux (Version - FFmpeg version SVN-r0.5.1-4: 0.5.1-1ubuntu1, Copyright (c) 2000-2009 Fabrice Bellard,) en ligne de commande, comme indiqué ci-dessous,

ffmpeg -i input .mp4 output.h264 

mais j'obtiens une erreur en disant -

Unsupported codec for output stream #0.0

Alors quand j'essaye cette option:

ffmpeg -i input .mp4 -formats h264 output.h264 

cela ne fonctionne toujours pas, et donne -

Seems stream 0 codec frame rate differs from container frame rate: 59.94 (5994/100) -> 29.97 (30000/1001)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Rapture.mp4':
  Duration: 00:02:06.44, start: 0.000000, bitrate: 26574 kb/s
    Stream #0.0(eng): Video: h264, yuv420p, 1920x1080, 29.97 tbr, 29.97 tbn, 59.94 tbc
    Stream #0.1(eng): Audio: aac, 48000 Hz, stereo, s16

Et puis, il affiche une aide sur les formats que nous obtenons lorsque nous faisons ffmpeg -formats

Quand j'ai vérifié l'aide, ffmpeg -formats, Je vois ci-dessous des informations relatives au format de fichier H264 et au codec:

File format : 

DE h264            raw H.264 video format

Codecs:

D V D  h264         H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10

Mes questions :

  1. Comment puis-je convertir la vidéo en une vidéo codée H264 (format vidéo brut H264)

  2. Quand je fais ffmpeg -formats, Je vois de nombreux acronymes pour les codecs pris en charge, je vois de nombreux acronymes avant le nom/type de codec tels que - D V D S E A, que représentent-ils?

  3. Comment utiliser les options de ffmpeg -vcodec et -formats?

34
goldenmean

Je crois que tu as libx264 installé et configuré avec ffmpeg pour convertir une vidéo en h264... Ensuite, vous pouvez essayer avec -vcodec libx264... Le -format option est pour montrer les formats disponibles, ce n'est pas une option de conversion, je pense ...

30
Muhammad Razib

J'ai utilisé ces options pour convertir au format H.264/AAC .mp4 pour la lecture au format HTML5 (je pense que cela pourrait aider d'autres personnes à résoudre ce problème):

ffmpeg -i input.flv -vcodec mpeg4 -acodec aac output.mp4

MISE À JOUR

Comme @LordNeckbeard l'a mentionné, la ligne précédente produira MPEG-4 Part 2 _ (en 2012, cela a fonctionné, je ne me souviens ni ne comprends pourquoi). Utilisez le libx264 _ encodeur pour produire la bonne vidéo avec H.264/AAC. Pour tester le fichier de sortie, vous pouvez simplement le faire glisser dans une fenêtre du navigateur et la lecture devrait bien se dérouler.

ffmpeg -i input.flv -vcodec libx264 -acodec aac output.mp4

28
Alex K

Je crois que les réponses ci-dessus sont à présent obsolètes (ou du moins obscures), alors voici mon petit détail. J'ai essayé de compiler ffmpeg avec l'option --enable-encoders=libx264 et cela ne provoquera aucune erreur mais ne permettra rien (je n'arrive pas à trouver où j'ai trouvé cette suggestion).

Quoi qu'il en soit, étape par étape, vous devez d'abord compiler libx264 car la version du référentiel est obsolète:

  wget ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2
  tar --bzip2 -xvf last_x264.tar.bz2
  cd x264-snapshot-XXXXXXXX-XXXX/
  ./configure
  make
  Sudo make install

Et puis obtenez et compilez ffmpeg avec libx264 activé. J'utilise la dernière version qui est "Happiness":

wget http://ffmpeg.org/releases/ffmpeg-0.11.2.tar.bz2
tar --bzip2 -xvf ffmpeg-0.11.2.tar.bz2
cd ffmpeg-0.11.2/
./configure --enable-libx264 --enable-gpl
make
Sudo install

Enfin, vous avez le codec libx264 à encoder. Pour le vérifier, vous pouvez exécuter

ffmpeg -codecs | grep h264

et vous verrez que les options que vous aviez étaient le premier D signifie décodage et le premier E signifie codage

3
JunCTionS
"C:\Program Files (x86)\ffmpegX86shared\bin\ffmpeg.exe" -y -i "C:\testfile.ts" -an -vcodec libx264 -g 75 -keyint_min 12 -vb 4000k -vprofile high -level 40 -s 1920x1080 -y -threads 0 -r 25 "C:\testfile.h264"

Ce qui précède a fonctionné pour moi sur une machine Windows utilisant une version partagée de FFmpeg Win32 par Kyle Schwarz. La compilation a été compilée le: 22 févr. 2013, à: 01:09:53

Notez que -an définit que l'audio doit être ignoré.

3
Shjiemon