web-dev-qa-db-ja.com

ffmpegを使用してpngファイルからムービーを作成する

Island_sizes-CSH(II)-###。pngという形式のファイル名を持つ277 800x600 pngファイルがあり、###は084で始まり360で終わる番号です。

私がやっている

ffmpeg -i island_sizes-CSH\(II\)-*.png output.mpg -y

しかしそれは機能しません:

 ffmpeg -f image2 -i island_sizes-CSH \(II \)-*。png video.mpg -y 
 ffmpeg version 1.2.1 Copyright(c)2000-2013 the FFmpeg開発者
 2013年5月10日15:14:14にgcc 4.4.6(GCC)20120305(Red Hat 4.4.6-4)
構成でビルド:--prefix =/usr --libdir =/usr/lib64 --shlibdir =/usr/lib64 --mandir =/usr/share/man --enable-shared --enable-runtime-cpudetect --enable-gpl --enable-version3 --enable-postproc --enable -avfilter --enable-pthreads --enable-x11grab --enable-vdpau --disable-avisynth --enable-frei0r --enable-libopencv --enable-libdc1394 --enable-libgsm --enable-libmp3lame --enable -libnut --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libvpx --enable- libx264 --enable-libxavs --enable-libxvid --extra-cflags = '-O2 -g -pipe -Wall -Wp、-D_FORTIFY_SOURCE = 2 -fexceptions -fstack-protector --param = ssp-buffer-size = 4 -m64 -mtune = generic -fPIC '--disable-stripping [._ ___。] libavutil 52. 18.100/52. 18.100 
 libavcodec 54. 92.100/54. 92.100 
 libavformat 54. 63.104/54. 63.104 
 libavdevice 54. 3.103/54. 3.103 
 libavfilter 3. 42.103/3. 42.103 
 libswscale 2. 2.100/2. 2.100 
 libswresample 0. 17.102/0. 17.102 
 libpostproc 52. 2.100/52 。2.100 
入力#0、image2、 'island_sizes-CSH(II)-084.png'から:
期間:00:00:00.04、開始:0.000000、ビットレート:N/A 
ストリーム#0:0:ビデオ:png、rgba、800x600 [SAR 3937:3937 DAR 4:3]、25 tbr、25 tbn、25 tbc 
 [png @ 0x1468c20] ff_frame_thread_encoder_init failed 
出力#0、image2、「island_sizes-CSH(II)-085.png」:
ストリーム#0:0:ビデオ:png、rgba、800x600 [SAR 1:1 DAR 4:3 ]、q = 2-31、200 kb/s、90k tbn、25 tbc 
出力#1、image2、to 'island_sizes-CSH(II)-086.png':
ストリーム# 1:0:ビデオ:png、rgba、800x600 [SAR 1:1 DAR 4:3]、q = 2-31、200 kb/s、90k tbn、25 tbc 
 ... 
出力#274、image2、「island_sizes-CSH(II)-359.png」に:
ストリーム#274:0:ビデオ:なし、rgba、800x600 [SAR 1: 1 DAR 4:3]、q = 2-31、200 kb/s、90k tbn、25 tbc 
出力#275、image2、to 'island_sizes-CSH(II)-360.png':
ストリーム#275:0:ビデオ:なし、rgba、800x600 [SAR 1:1 DAR 4:3]、q = 2-31、200 kb/s、90k tbn、25 tbc 
出力# 276、mpeg、「video.mpg」に:
ストリーム#276:0:ビデオ:なし、yuv420p、800x600 [SAR 1:1 DAR 4:3]、q = 2-31、200 kb/s 、90k tbn、25 tbc 
ストリームマッピング:
ストリーム#0:0->#0:0(png-> png)
ストリーム#0:0->#1 :0(png-> png)
 ... 
ストリーム#0:0->#274:0(png-> png)
ストリーム#0:0-> #275:0(png-> png)
ストリーム#0:0->#276:0(png-> mpeg1video)
出力ストリームのエンコーダーを開くときにエラー#218:0-多分bit_rate、rate、width、height 
などの不正なパラメータ
11

これは、ffmpegへの入力として複数の画像を渡すための間違った構文です。 ビデオスライドショーの作成 および image2デマルチプレクサオプション のFFmpeg Wikiガイドをご覧ください。

シーケンス番号に3桁を使用するように指示し、84から開始する必要があります。

ffmpeg -start_number 84 -i island_sizes-CSH\(II\)-%03d.png output.mpg

さらにいくつかのヒント:

  • ビデオコーデックとしてのMPEG-1は最適ではなく、ファイルサイズが大きいと品質が低下します。古いデバイスまたはコンピューター(またはWindows XPコーデックなし))との互換性が必要でない限り、それをスクラッチして、MPEG-4パート10エンコーダー(H. 264)、libx264など:

    ffmpeg -i … -c:v libx264 out.mp4
    

    X264オプションのチュートリアル(品質の変更方法など)については、 x264エンコーディングガイド を確認してください。

  • PNGファイルはRGBピクセル形式を使用しますが、これは通常のビデオコーデックではサポートされていません。 MPEG-1では問題ではありませんが、MPEG-4コーデックでは、ffmpegが自動的にピクセル形式を非サブサンプリングされたYUVに変換するため、そうなります。その場合、これを クロマサブサンプリングされたフォーマット YUV 4:2:0などに変換する必要があります。そうしないと、ほとんどのアプリケーションでビデオが再生されない可能性があります。

    ffmpeg -i … -c:v libx264 -pix_fmt yuv420p out.mp4
    
23
slhck