Ограничения ffmpeg?
Я пытаюсь преобразовать avi-файл в mpeg, но ffmpeg выдает мне эти сообщения об ошибках: "переполнение буфера" и "слишком большой пакет"
Я использую команду:
ffmpeg -I input.avi -s 2592x2160 -b 1200 output.mpg
Размеры видео - есть ли ограничения?
Я заметил, что если я беру видео с меньшими размерами, оно, кажется, работает нормально, есть ли способ разместить файлы с большими размерами, как это?
Частота кадров - может ли ffmpeg дополнять видео?
У меня также есть проблемы с определенными частотами кадров, в сообщении об ошибке сообщается, что формат mpeg1 поддерживает только определенные частоты кадров. Могу ли я получить ffmpeg для добавления моего avi-файла для учета этого?
Размер файла - есть ли ограничения по максимальному размеру файла, который можно конвертировать?
Спасибо, Имонн
ВЫХОД
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 миллионов