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 :
Comment puis-je convertir la vidéo en une vidéo codée H264 (format vidéo brut H264)
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?
Comment utiliser les options de ffmpeg -vcodec
et -formats
?
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 ...
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
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
"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é.