ffmpeg: criar vídeo a partir de resultados de imagem em apenas 1 segundo de vídeo

ffmpeg: criar vídeo a partir de resultados de imagem em apenas 1 segundo de vídeo

Estou tentando criar um pequeno arquivo de vídeo a partir de uma única imagem por 5 segundos em uma máquina Windows usando ffmpeg. O arquivo de vídeo deve ser usado para concatenar na frente de arquivos de vídeo capturados com uma câmera que produz 1920x1080 60fps. O seguinte cria um fluxo de 1 segundo em vez de um fluxo de 5 segundos. Alguma ideia? antecipadamente grato.

"c:\program files\ffmpeg\ffmpeg32" -f image2 -i "c:\program files\ffmpeg\imput1.jpg" -loop 1 -vcodec mpeg1video -b:v 104857200 -r 59.94 -s 1920x1080 -aspect 16:9 -t 5 "c:\program files\ffmpeg\banner.MPG"

Aqui estão meus resultados de saída:

<pre>c:\Program Files\ffmpeg>"c:\program files\ffmpeg\ffmpeg32" -f
image2 -i "input1.jpg" -loop 1 -vcodec mpeg1video -b:v 10 4857200 -r
59.94 -s 1920x1080 -aspect 16:9 -t 5 "c:\program files\ffmpeg\banner. MPG" ffmpeg version N-52045-g694fa00 Copyright (c) 2000-2013 the
FFmpeg developers built on Apr 12 2013 16:54:51 with gcc 4.8.0 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads
--enable-av isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab le-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetyp e --enable-libgsm --enable-libilbc --enable-libmp3lame --enable-libopencore-amrn b --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libr tmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheo ra --enable-libtwolame --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-li bvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --ena ble-zlib 
55. 0.100 libavfilter 3. 53.101 / 3. 53.101 libswscale 2. 2.100 / 2. 2.100 libswresample 0. 17.102 / 0. 17.102 libpostproc 52. 3.100 / 52. 3.100 Input #0, image2, from 'c:\program files\ffmpeg\input1.jpg': Duration: 00:00:00.04, start: 0.000000, bitrate: N/A Stream #0:0:
Video: mjpeg, yuvj420p, 722x267 [SAR 1:1 DAR 722:267], 25 tbr, 25 tbn,
25 tbc File 'c:\program files\ffmpeg\banner.MPG' already exists.
Overwrite ? [y/N] y VBV buffer size not set, muxing may fail Output
#0, mpeg, to 'c:\program files\ffmpeg\banner.MPG': Metadata: encoder : Lavf55.2.100 Stream #0:0: Video: mpeg1video, yuv420p, 1920x1080 [SAR
1:1 DAR 16:9], q=2-3 1, 104857 kb/s, 90k tbn, 59.94 tbc Stream
mapping: Stream #0:0 -> #0:0 (mjpeg -> mpeg1video) Press [q] to stop,
[?] for help frame= 1 fps=0.0 q=9.8 Lsize= 130kB time=00:00:00.01
bitrate=63812.1kbits /s video:130kB audio:0kB subtitle:0 global
headers:0kB muxing overhead 0.373990%

c:\Program Files\ffmpeg>> libavutil 52. 26.100 / 52. 26.100 libavcodec 55. 2.100 / 55. 2.100
libavformat 55. 2.100 / 55. 2.100 libavdevice 55. 0.100 /
</pre>

ATUALIZAÇÃO: consegui o vídeo de 5 segundos para funcionar com o seguinte, mas os vídeos não combinam com o recém-criado. Acho que isso provavelmente justifica uma nova pergunta.

"c:\program files\ffmpeg\ffmpeg32" -loop 1 -i graphic.jpg -s 1920x1080 -aspect 16:9 -t 5 -c:v libx264 banner.mp4 

Responder1

A -loopopção se aplica ao próximo arquivo de entrada, portanto provavelmente não será analisado no seu caso. Tente isto – deixei de fora as outras opções por uma questão de brevidade:

ffmpeg -loop 1 -i input.jpg -t 5 output.mp4

Algumas dicas:

  • Sua versão do ffmpeg já está um pouco desatualizada. Sempre tente usaruma construção recentese algo falhar.

  • -f image2é supérfluo, pois as imagens JPG são analisadas image2automaticamente com o demuxer.

  • Para obter uma taxa de bits realmente constante, acredito que você precisa definir todos os três -b:ve -minratecom -maxrateo mesmo valor.

  • Normalmente, você não deseja usar vídeo MPEG-1 ( mpeg1videocodificador em ffmpeg) atualmente, especialmente para conteúdo HD. Você acabará com arquivos enormes ou com qualidade muito ruim para taxas de bits restritas. Embora você tenha especificado uma taxa de bits muito grande (é realmente isso que você deseja?), talvez seja melhor usar pelo menos vídeo MPEG-2 ou até mesmo MPEG-4 Parte 12 (AVC, H.264). Veja oguia de codificação x264para algumas opções.

informação relacionada