5

Я изо всех сил пытаюсь добиться стабильных результатов ffmpeg, которые работают на проигрывателях и платформах для видео, созданного из серии изображений, которые должны катиться со скоростью около 1 кадра в секунду.

ffmpeg -f image2 -r 1 -i %02d.png video.avi принимает файлы с именами « 01.png, 02.png » и т. д. и выводит их со скоростью 1 кадр / с. Но результат не будет проигрываться на VLC или Quicktime - кажется, что справится только WMP.

ffmpeg -f image2 -r 25 -i %02d.png video.mp4 обеспечивает более стабильный вывод, но только со скоростью около 25 кадров в секунду - слишком быстро для моих данных, а именно.

Очень благодарен за помощь. Кажется бессмысленным создавать дубликаты изображений для решения этой проблемы.


Консольный вывод:

ffmpeg version N-53284-gd0a34ae Copyright (c) 2000-2013 the FFmpeg developers
  built on May 20 2013 01:07:40 with gcc 4.7.3 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzli
b --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libblu
ray --enable-libcaca --enable-libfreetype --enable-libgsm --enable-libilbc --enable-libmp3lame --ena
ble-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libr
tmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwola
me --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264
 --enable-libxavs --enable-libxvid --enable-zlib
  libavutil      52. 33.100 / 52. 33.100
  libavcodec     55. 10.101 / 55. 10.101
  libavformat    55.  7.100 / 55.  7.100
  libavdevice    55.  1.100 / 55.  1.100
  libavfilter     3. 68.101 /  3. 68.101
  libswscale      2.  3.100 /  2.  3.100
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  3.100 / 52.  3.100
[image2 @ 00000000025977e0] max_analyze_duration 5000000 reached at 5000000 microseconds
Input #0, image2, from '%02d.png':
  Duration: 00:00:40.00, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: png, pal8, 1300x1100, 1 fps, 1 tbr, 1 tbn, 1 tbc
Output #0, avi, to 'video.avi':
  Metadata:
    ISFT            : Lavf55.7.100
    Stream #0:0: Video: mpeg4 (FMP4 / 0x34504D46), yuv420p, 1300x1100, q=2-31, 200 kb/s, 1 tbn, 1 tb
c
Stream mapping:
  Stream #0:0 -> #0:0 (png -> mpeg4)
Press [q] to stop, [?] for help
frame=   40 fps=6.6 q=31.0 Lsize=    3754kB time=00:00:40.00 bitrate= 768.9kbits/s
video:3748kB audio:0kB subtitle:0 global headers:0kB muxing overhead 0.173624%

1 ответ1

7

Я не уверен, почему проигрыватели не будут работать с 1 к / с, но вы можете использовать -framerate для вашего ввода и -r для вашего вывода, чтобы установить различные частоты кадров:

пример

ffmpeg -framerate 1 -i %02d.png -r 25 -pix_fmt yuv420p video.mp4

Заметки

  • Входы изображений используют -framerate для установки частоты кадров, в то время как видеовыход использует -r .

  • -f image2 обычно не требуется, поскольку демультиплексор распознает ваши входные данные как изображения.

  • В этом примере ffmpeg будет дублировать кадры для достижения более высокой выходной частоты кадров, но все равно будет отображать одно и то же "изображение" каждую секунду.

  • Некоторые кодировщики и контейнеры могут быть ограничены частотой кадров, которую они поддерживают, но они часто сообщают вам об этом в выводе консоли ffmpeg .

  • По умолчанию ffmpeg будет использовать libx264 (видео H.264) в качестве кодера для вывода контейнера MP4. Если он недоступен, то будет использоваться mpeg4 (видео MPEG-4, часть 2).

  • -pix_fmt yuv420p выведет широко совместимый выходной сигнал с дискретизацией цветности.

Просто из любопытства может быть интересно выяснить наименьшее значение выходного -framerate которое работает во всех ваших проигрывателях.

Также см

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .