web-dev-qa-db-fra.com

Utilisation de ffmpeg pour encoder de yuv à m4v avec MPEG-4 encoder

J'essaie d'encoder un fichier yuv brut en m4v comme suit:

ffmpeg -s cif -r 30 -b 64000 -bt 3200 -g 30 -i akiyo_cif.yuv -vcodec mpeg4 a02.m4v

Mais cela n'a pas fonctionné et j'ai eu cette erreur de la sortie de la console:

ffmpeg version 2.4.3-1ubuntu1 ~ trusty6 Copyright © 2000-2014, les développeurs de FFmpeg construits le 22 novembre 2014 à 17:07:19 avec la configuration gcc 4.8 (Ubuntu 4.8.2-19ubuntu1): --prefix =/usr - extra-version = '1ubuntu1 ~ trusty6' --build-suffix = -ffmpeg --toolchain = durci --extra-cflags = --extra-cxxflags = --libdir =/usr/lib/x86_64-linux-gnu - shlibdir =/usr/lib/x86_64-linux-gnu --incdir =/usr/include/x86_64-linux-gnu --enable-gpl --enable-shared --disable-stripping --enable-avresample --enable- avisynth --enable-fontconfig --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable- libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable- libschroedinger --enable-libshine --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwav pack --enable-libwebp --enable-opengl --enable-x11grab --enable-libxvid --enable-libx265 --enable-libdc1394 --enable-libiec61883 --enable-libzvbi --enable-libzmq --enable- frei0r --enable-libx264 --enable-libsoxr --enable-openal --enable-libopencv

libavutil 54. 7.100/54. 7.100 libavcodec 56. 1.100/56. 1.100 libavformat 56. 4.101/56. 4.101 libavdevice 56. 0.100/56. 0.100 libavfilter 5. 1.100/5. 1.100 libavresample 2. 1. 0/2. 1 0 libswscale 3. 0.100/3. 0.100 libswresample 1. 1.100/1. 1.100 libpostproc 53. 0.100/53. 0.100

L'option b (débit vidéo (utilisez -b: v)) ne peut pas être appliquée au fichier d'entrée akiyo_cif.yuv - vous essayez d'appliquer une option d'entrée à un fichier de sortie ou inversement. Déplacez cette option avant le fichier auquel elle appartient.

Erreur lors de l'analyse des options du fichier d'entrée akiyo_cif.yuv

Erreur lors de l'ouverture des fichiers d'entrée: argument incorrect

Le fichier akiyo_cif.yuv peut être créé ici:

http://trace.eas.asu.edu/yuv/akiyo/akiyo_cif.7z

Quelqu'un peut-il m'aider avec cela s'il vous plaît, j'ai vraiment besoin de le faire fonctionner.

2
jjfotso

Vous avez placé votre bitrate option à la mauvaise place car l'erreur vous indique:

Option b (video bitrate (please use -b:v)) cannot be applied to input file 
akiyo_cif.yuv -- you are trying to apply an input option to an output file 
or vice versa. Move this option before the file it belongs to.

Rappelant que les options de FFmpeg utilisent toujours ce flux:

ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

La syntaxe ajustée suivante applique l'option de débit corrigé au fichier de sortie plutôt qu'au fichier d'entrée:

ffmpeg -s cif -r 30 -i akiyo_cif.yuv -c:v mpeg4 -b:v 64k -bt 32k -g 30 a02.m4v

La qualité du fichier de sortie n’est pas très bonne, car vous avez spécifié un débit assez faible, mais cela peut bien entendu être ajusté. Quelque chose comme les paramètres d'encodage vidéo de meilleure qualité suivants a fière allure sur mon système:

ffmpeg -s cif -r 30 -i akiyo_cif.yuv -c:v mpeg4 -q:v 5 a02.m4v

Mais vous avez peut-être un besoin très spécifique pour votre vidéo de sortie que cela ne conviendra pas ...

2
andrew.46