1

mpeg ファイルの作成に問題があります。2 つのビットマップ (2592*2160 32 ビット) があります。それらをmpegファイルに結合しようとしていますが、機能させることができません。試したコマンドは次のとおりです。

ffmpeg -i %d.bmp -b:v 99.99M -r 1 -s 2592x2160 vid.mpg

出力は

ffmpeg -i %d.bmp -b:v 99.99M -r 1 -s 2592x2160  vid.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
[image2 @ 01e6be40] Stream #0: not enough frames to estimate rate; consider incr
easing probesize
Input #0, image2, from '%d.bmp':
  Duration: 00:00:00.08, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: bmp, pal8, 2592x2160, 25 tbr, 25 tbn, 25 tbc
File 'vid.mpg' already exists. Overwrite ? [y/N] y
w:2592 h:2160 pixfmt:pal8 tb:1/25 sar:0/1 sws_param:flags=2
[ffmpeg_buffersink @ 02bb3ce0] No opaque field provided
[scale @ 02bb3f20] w:2592 h:2160 fmt:pal8 sar:0/1 -> w:2592 h:2160 fmt:yuv420p s
ar:0/1 flags:0x4
[mpeg1video @ 02b864a0] bitrate tolerance too small for bitrate
Output #0, mpeg, to 'vid.mpg':
    Stream #0:0: Video: mpeg1video, yuv420p, 2592x2160, q=2-31, 99990 kb/s, 90k
tbn, 5 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (bmp -> mpeg1video)
Error while opening encoder for output stream #0:0 - maybe incorrect parameters
such as bit_rate, rate, width or height

-r パラメータ (ffmpeg -i %d.bmp -b:v 99.99M -s 2592x2160 vid.mpg) を省略すると、出力は次のように変わります。

[mpeg @ 02f80120] buffer underflow i=0 bufi=749380 size=950639
[mpeg @ 02f80120] buffer underflow i=0 bufi=751421 size=950639
[mpeg @ 02f80120] packet too large, ignoring buffer limits to mux it
[mpeg @ 02f80120] buffer underflow i=0 bufi=751421 size=950639
[mpeg @ 02f80120] buffer underflow i=0 bufi=753462 size=950639
[mpeg @ 02f80120] packet too large, ignoring buffer limits to mux it
[mpeg @ 02f80120] buffer underflow i=0 bufi=753462 size=950639
[mpeg @ 02f80120] buffer underflow i=0 bufi=755503 size=950639
...

私は何を間違っていますか?

4

1 に答える 1

3

ffmpeg が何百万もの「M」文字を読み取るとは思わないため、最初のエラーが発生しています。そのため、パラメーターを 99.99 kb/s として読み取っています。これは、やりたいことを処理するには十分に高くありません。 「ビットレートに対してビットレート許容値が小さすぎます」という警告。十分な大きさのものを使用して ###k でビットレートを指定してみてください。2 番目の部分については、-r パラメーターを省略したときに部分的に機能する理由は、mpeg コンテナーが多くの異なるフレーム レートをサポートしていないためです。そのため、フレーム レートを強制的に 1 秒あたり 1 フレームにするビデオが必要な場合は、別のコンテナーを使用する必要があります。また、-r パラメータの現在の配置では、出力ビデオが 1 秒あたり 1 フレームで再生されると言っているだけです。各ビットマップがビデオの 1 フレームを表すわけではありません。後者を行うには、入力を指定する前に入力フレーム レートを指定する必要があります。

たとえば、指定したビットレートで 2 秒の avi ビデオ (この場合は 1 秒あたり 1 ビットマップ) を作成するには、次のようにします。

ffmpeg -r 1 -i %d.bmp -b:v 990k -s 2592x2160 vid.avi
于 2012-06-18T18:37:33.867 に答える