Usando o ffmpeg para codificar de yuv para m4v com o codificador MPEG-4

2

Estou tentando codificar um arquivo yuv bruto para o m4v da seguinte forma:

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

Mas não funcionou e recebi esse erro na saída do console:

  

ffmpeg versão 2.4.3-1ubuntu1 ~ trusty6 Copyright (c) 2000-2014 os desenvolvedores do FFmpeg     Construído em Nov 22 2014 17:07:19 com gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)     configuração: --prefix = / usr --extra-version = '1ubuntu1 ~ trusty6' --build-sufixo = -ffmpeg --toolchain = endurecido --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- decapagem --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- libwavpack --enable-libwebp --enable-opengl --enable-x11grab --enable-libxvid --enable-libx265 --enable-libdc1394 --enable-libiec61883 --enable-libzvbi --enab le-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

     

A opção b (bitrate de vídeo (use -b: v)) não pode ser aplicada ao arquivo de entrada akiyo_cif.yuv - você está tentando aplicar uma opção de entrada a um arquivo de saída ou vice-versa. Mova esta opção antes do arquivo ao qual pertence.

     

Opções de análise de erros para o arquivo de entrada akiyo_cif.yuv

     

Erro ao abrir arquivos de entrada: argumento inválido

O arquivo akiyo_cif.yuv pode ser encontrado aqui:

link

Alguém pode me ajudar com isso, por favor, eu realmente preciso fazer isso funcionar.

    
por jjfotso 28.07.2016 / 11:35

1 resposta

2

Você colocou sua opção taxa de bits no lugar incorreto, como o erro está dizendo:

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.

Lembrando que as opções do FFmpeg sempre usam esse fluxo:

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

A sintaxe ajustada a seguir aplica a opção de taxa de bits corrigida ao arquivo de saída em vez do arquivo de entrada :

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

A qualidade do arquivo de saída não é tão grande como você especificou uma taxa de bits muito baixa, mas isso pode ser ajustado. Algo como as seguintes configurações de codificação de vídeo de melhor qualidade ficam ótimas no meu sistema:

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

Mas talvez você tenha uma necessidade muito específica de seu vídeo de saída que não seja adequado ...

    
por andrew.46 28.07.2016 / 14:37