
私はffmpegサイトのこのドキュメントに従っています:
これにより、1 分ごとに 1 つのサムネイル画像が作成され、名前は img001.jpg、img002.jpg、img003.jpg などになります (%03d は、各サムネイル画像の序数を 3 桁でフォーマットする必要があることを意味します)。
ffmpeg -i myvideo.avi -f image2 -vf fps=fps=1/60 img%03d.jpg
これにより、thumb0001.bmp、thumb0002.bmp、thumb0003.bmp などの名前のサムネイル画像が 10 分ごとに 1 つ作成されます。
ffmpeg -i test.flv -f image2 -vf fps=fps=1/600 thumb%04d.bmp
しかし、1/600 オプションを使用すると機能せず、次のエラーが発生します。
ffmpeg -i src/e0b4c83e7ab2ada44c2785d25b0d4a9d45fc0c66.3gp -f image2 -vf fps=fps=1/250 thumbs/images%d.jpg
ffmpeg version 1.0.3 Copyright (c) 2000-2012 the FFmpeg developers
built on Oct 13 2013 21:48:31 with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-3)
configuration:
libavutil 51. 73.101 / 51. 73.101
libavcodec 54. 59.100 / 54. 59.100
libavformat 54. 29.104 / 54. 29.104
libavdevice 54. 2.101 / 54. 2.101
libavfilter 3. 17.100 / 3. 17.100
libswscale 2. 1.101 / 2. 1.101
libswresample 0. 15.100 / 0. 15.100
Guessed Channel Layout for Input Stream #0.1 : mono
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'src/e0b4c83e7ab2ada44c2785d25b0d4a9d45fc0c66.3gp':
Metadata:
major_brand : 3gp4
minor_version : 512
compatible_brands: isomiso23gp4
creation_time : 2013-11-27 14:02:52
Duration: 00:05:01.33, start: 0.000000, bitrate: 177 kb/s
Stream #0:0(und): Video: h263 (s263 / 0x33363273), yuv420p, 176x144 [SAR 12:11 DAR 4:3], 161 kb/s, 15 fps, 15 tbr, 15 tbn, 29.97 tbc
Metadata:
creation_time : 2013-11-27 14:06:48
handler_name : VideoHandler
Stream #0:1(und): Audio: amr_nb (samr / 0x726D6173), 8000 Hz, mono, flt, 12 kb/s
Metadata:
creation_time : 2013-11-27 14:06:48
handler_name : SoundHandler
[mjpeg @ 0x3621940] bitrate tolerance too small for bitrate
[mjpeg @ 0x363c1c0] ff_frame_thread_encoder_init failed
Output #0, image2, to 'thumbs/images%d.jpg':
Metadata:
major_brand : 3gp4
minor_version : 512
compatible_brands: isomiso23gp4
Stream #0:0(und): Video: mjpeg, yuvj420p, 176x144 [SAR 12:11 DAR 4:3], q=2-31, 200 kb/s, 90k tbn, 0k tbc
Metadata:
creation_time : 2013-11-27 14:06:48
handler_name : VideoHandler
Stream mapping:
Stream #0:0 -> #0:0 (h263 -> mjpeg)
Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
なぜ 1/60 は機能するのに 1/600 は機能しないのでしょうか? どうすれば修正できますか? また、サーバーを更新することもできません。
答え1
使用中にjpg出力のデフォルト設定がなぜなのかまだ分かりません。fps
ビデオフィルター特定の値を使用するとエラーが発生します:
[mjpeg @ 0x3621940] bitrate tolerance too small for bitrate
[mjpeg @ 0x363c1c0] ff_frame_thread_encoder_init failed
例
回避策としては、-qscale:v
(またはエイリアス-q:v
) オプションを使用します。
ffmpeg -i input.mkv -vf fps=1/250 -qscale:v 2 output%d.jpg
ノート
jpeg 出力時の有効範囲は
-qscale:v
2 ~ 31 の線形スケールです。値が低いほど品質が高くなります。-f image2
必要ありません。fps=
私の例に示すように、追加部分を省略することもできます。別の回避策としては、png などの別の出力形式を使用することですが、これは受け入れられる解決策ではない可能性があります。
もう一つの回避策は、
select
ビデオフィルター代わりに、それほどユーザーフレンドリーではありません。を使用するとエラーは
-threads 1
解消されますff_frame_thread_encoder_init failed
が、他のエラーは解消されません。-r
フィルターの代わりにを使用すると、同じエラーが表示されますfps
。
詳細がわかったら、この回答を更新します (適切な調査を行う時間がありませんでした...)。