Ограничения ffmpeg?

Я пытаюсь преобразовать avi-файл в mpeg, но ffmpeg выдает мне эти сообщения об ошибках: "переполнение буфера" и "слишком большой пакет"

Я использую команду:

ffmpeg -I input.avi -s 2592x2160 -b 1200 output.mpg

  1. Размеры видео - есть ли ограничения?

    Я заметил, что если я беру видео с меньшими размерами, оно, кажется, работает нормально, есть ли способ разместить файлы с большими размерами, как это?

  2. Частота кадров - может ли ffmpeg дополнять видео?

    У меня также есть проблемы с определенными частотами кадров, в сообщении об ошибке сообщается, что формат mpeg1 поддерживает только определенные частоты кадров. Могу ли я получить ffmpeg для добавления моего avi-файла для учета этого?

  3. Размер файла - есть ли ограничения по максимальному размеру файла, который можно конвертировать?

Спасибо, Имонн

ВЫХОД

ffmpeg -i neoAvi.avi -s 2592x2160 -b 1200k neoMpg.mpg
ffmpeg version N-41416-g718607b Copyright (c) 2000-2012 the FFmpeg developers
  built on Jun  8 2012 12:46:19 with gcc 4.6.3
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-ru
ntime-cpudetect --enable-avisynth --enable-bzlib --enable-frei0r --enable-libass
 --enable-libcelt --enable-libopencore-amrnb --enable-libopencore-amrwb --enable
-libfreetype --enable-libgsm --enable-libmp3lame --enable-libnut --enable-libope
njpeg --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libth
eora --enable-libutvideo --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-
libvorbis --enable-libvpx --ena  libavutil      51. 56.100 / 51. 56.100
  libavcodec     54. 25.100 / 54. 25.100
  libavformat    54.  6.101 / 54.  6.101
  libavdevice    54.  0.100 / 54.  0.100
  libavfilter     2. 78.101 /  2. 78.101
  libswscale      2.  1.100 /  2.  1.100
  libswresample   0. 15.100 /  0. 15.100
  libpostproc    52.  0.100 / 52.  0.100
[avi @ 01d2be20] Something went wrong during header parsing, I will ignore it an
d try to continue anyway.
[avi @ 01d2be20] Stream #0: not enough frames to estimate rate; consider increas
ing probesize
[avi @ 01d2be20] Stream #1: not enough frames to estimate rate; consider increas
ing probesize
[avi @ 01d2be20] Could not find codec parameters (Subtitle: none)
Input #0, avi, from 'neoAvi.avi':
  Duration: 00:00:01.49, start: 0.000000, bitrate: 1493071 kb/s
    Stream #0:0: Video: rawvideo, pal8, 2592x2160, 33.33 tbr, 33.33 tbn, 33.33 t
bc
    Stream #0:1: Subtitle: none
Please use -b:a or -b:v, -b is ambiguous
File 'neoMpg.mpg' already exists. Overwrite ? [y/N] y
[mpeg @ 02ba71a0] packet too large, ignoring buffer limits to mux it
[mpeg @ 02ba71a0] buffer underflow i=0 bufi=921414 size=946200
[mpeg @ 02ba71a0] buffer underflow i=0 bufi=923455 size=946200
[mpeg @ 02ba71a0] packet too large, ignoring buffer limits to mux it
[mpeg @ 02ba71a0] buffer underflow i=0 bufi=923455 size=946200
[mpeg @ 02ba71a0] buffer underflow i=0 bufi=925496 size=946200
[mpeg @ 02ba71a0] packet too large, ignoring buffer limits to mux it
[mpeg @ 02ba71a0] buffer underflow i=0 bufi=925496 size=946200
[mpeg @ 02ba71a0] buffer underflow i=0 bufi=927537 size=946200
...
[mpeg @ 02ba71a0] packet too large, ignoring buffer limits to mux it
[mpeg @ 02ba71a0] buffer underflow i=0 bufi=921414 size=946200
[mpeg @ 02ba71a0] buffer underflow i=0 bufi=923455 size=946200
[mpeg @ 02ba71a0] packet too large, ignoring buffer limits to mux it
[mpeg @ 02ba71a0] buffer underflow i=0 bufi=923455 size=946200
[mpeg @ 02ba71a0] buffer underflow i=0 bufi=925496 size=946200
[mpeg @ 02ba71a0] packet too large, ignoring buffer limits to mux it
[mpeg @ 02ba71a0] buffer underflow i=0 bufi=925496 size=946200
[mpeg @ 02ba71a0] buffer underflow i=0 bufi=927537 size=946200
frame=    4 fps=3.2 q=5.5 size=    1380kB time=00:00:00.06 bitrate=169573.6kbits
frame=   13 fps=7.3 q=29.1 size=    1604kB time=00:00:00.36 bitrate=35836.2kbits
frame=   22 fps=9.5 q=31.0 size=    2100kB time=00:00:00.66 bitrate=25804.8kbits
frame=   31 fps= 11 q=31.0 size=    2490kB time=00:00:00.96 bitrate=21101.5kbits
frame=   40 fps= 12 q=31.0 size=    3010kB time=00:00:01.26 bitrate=19466.8kbits
frame=   47 fps= 12 q=31.0 Lsize=    3128kB time=00:00:01.53 bitrate=16711.7kbit
s/s dup=0 drop=3
video:3116kB audio:0kB global headers:0kB muxing overhead 0.372684%

2 ответа

Решение

2592 на 2160 - это ~20 МБ на несжатый кадр. Скорость передачи 1200 бит / с будет слишком низкой.

Чтобы ответить на ваши перечисленные вопросы по очереди:

1. Размеры видео - есть ли ограничения?

У FFmpeg нет особых ограничений, о которых я знаю, но разные форматы кодеков и контейнеров часто ограничивают размер и скорость кадра (или битрейт, который неявно ограничивает последние два). Вы должны проверить спецификации для используемого кодека и формата контейнера.

2. Частота кадров - может ли ffmpeg дополнять видео?

Как вы заметили и упомянули выше, кодеки и контейнеры не всегда допускают произвольную частоту кадров. (А программное обеспечение для воспроизведения может работать некорректно, даже если кодек / контейнер позволяет вам установить сумасшедшую частоту кадров.) Однако FFmpeg будет подбирать вам видео. Из документов:

-r [:stream_specifier]fps(вход / выход, для каждого потока)
В качестве опции вывода дублируйте или отбрасывайте входные кадры для достижения постоянной частотыкадров на выходе fps.

3. Размер файла - есть ли ограничения по максимальному размеру файла, который можно конвертировать?

Не то, чтобы я знал.

Возможный предел размера, но только в случае одного проходного примера для кодирования (MP4 16/9 HD) с размером 100 млн.

ffmpeg -y -i "imput.avi" -f mp4 -r 29.97 -vcodec libx264 -preset veryslow -vf setdar=16:9 -fs 100000000 -acodec libvo_aacenc -ab 112k -ar 48000 -ac 2 output.mp4

-fs 100000000 = 100 миллионов

Другие вопросы по тегам