2012-06-14 97 views
0

我想轉換AVI文件到MPEG,但ffmpeg的是給我這些錯誤信息,「緩衝溢出」和「包過大」ffmpeg的侷限性?

我使用的命令是:

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

  1. 視頻尺寸 - 是否有任何限制?

    我注意到,如果我拍攝一個尺寸較小的視頻,它似乎工作正常,有沒有辦法容納這樣的大尺寸文件?

  2. 幀率 - 可以ffmpeg填充視頻嗎?

    我也有某些幀率的問題,錯誤信息告訴我只有某些幀速率支持mpeg1格式,我可以得到ffmpeg來填補我的avi文件來解釋這個嗎?

  3. 文件大小 - 可以轉換的最大文件大小是否有任何限制?

謝謝, 埃蒙

OUTPUT

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% 
+0

在過去我有問題時維度不能被16整除'vertSize%16 == 0'。嘗試使用下一個尺寸的比例都可以被16整除。 –

+0

@EricFortis我在尺寸上犯了一個錯誤,他們實際上是2592 * 2160,可以被16整除。感謝您的建議 –

+0

完整的ffmpeg控制檯輸出是失蹤。這通常包含有用的信息,並且總是建議用於FFmpeg使用問題(這種方式更適合於superuser.com)。 – LordNeckbeard

回答

2

2592通過2160是每〜未經壓縮的幀20MB。 1200比特/秒的比特率將會太低。

爲了把你列舉的問題依次是:

1視頻的尺寸 - 是否有什麼限制嗎?

FFmpeg的具有我所知,沒有特別的限制,但不同的編解碼器和容器格式做往往限制幀的大小和速率(或隱含地限制後兩個比特率)。您應該檢查您使用的編解碼器和容器格式的規格。

2.幀速率 - 可以ffmpeg填充視頻嗎?

如上所述,上面提到的編解碼器和容器並不總是允許任意的幀速率。 (即使編解碼器/容器確實允許您設置瘋狂的幀頻,播放軟件也可能無法正常工作。)但FFmpeg會爲您填充視頻。從the docs

-r [:stream_specifier] FPS輸入/輸出,每流
作爲輸出選項,重複或丟棄輸入幀,以實現恆定的輸出幀速率fps

 

3.文件大小 - 在那裏可以轉換的最大文件大小有限制嗎?

不是我所知道的。

+0

我可以使用-s參數來減小輸出視頻的大小,還是僅用於指定輸入視頻尺寸? –

+0

我可以,我似乎完全錯過了-s參數的點,通過減少輸出圖像的大小,我能夠正確地轉換視頻。 –

0

可能大小限制,但只有當單遍 例如用於編碼(MP4 16/9 HD)與大小100Mio

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億= 100Mio