MD計算結果等の動画を作成する際には、まず連番画像ファイルをbmpやpng等の形式で作成し、それを動画に変換します。
この変換はffmpegによりコマンドライン上で行うことができますので、その手順を解説します。
(昔はAdobe Premiereに大量の画像ファイルを取り込んで動画に変換していたのですが、ffmpegでの変換を知ってからは作業効率が一気にあがりました)
ffmpegのインストール(CentOS 6.2のマシンにインストール)
http://ffmpeg.org/download.html からffmpegスタティックビルド版ををダウンロード、解凍し、/usr/bin にリンクを張ることでffmpegを実行できるようにします。
(ダウンロード元のアドレスは頻繁に変わります。今回はFFmpeg Linux Builds の「FFmpeg Static Builds by Burek」リンク先から64bit最新版を選びました)
su mkdir /usr/ffmpeg cd /usr/ffmpeg wget http://ffmpeg.gusari.org/static/64bit/ffmpeg.static.64bit.2012-12-24.tar.gz tar zxvf ffmpeg.static.64bit.2012-12-24.tar.gz ln -s `pwd`/ffmpeg /usr/bin/ffmpeg
ffmpegによる連番画像ファイルから動画への変換
以下のようにbmpsディレクトリ下に連番画像ファイルが保存されているとします。(bmp形式以外にも、png形式の連番画像ファイルでも動作することを確認しました)
ls bmps # BMP1.bmp BMP12.bmp BMP140.bmp BMP161.bmp BMP182.bmp BMP22.bmp BMP43.bmp BMP64.bmp BMP85.bmp # BMP10.bmp BMP120.bmp BMP141.bmp BMP162.bmp BMP183.bmp BMP23.bmp BMP44.bmp BMP65.bmp BMP86.bmp # BMP100.bmp BMP121.bmp BMP142.bmp BMP163.bmp BMP184.bmp BMP24.bmp BMP45.bmp BMP66.bmp BMP87.bmp # BMP101.bmp BMP122.bmp BMP143.bmp BMP164.bmp BMP185.bmp BMP25.bmp BMP46.bmp BMP67.bmp BMP88.bmp # BMP102.bmp BMP123.bmp BMP144.bmp BMP165.bmp BMP186.bmp BMP26.bmp BMP47.bmp BMP68.bmp BMP89.bmp # BMP103.bmp BMP124.bmp BMP145.bmp BMP166.bmp BMP187.bmp BMP27.bmp BMP48.bmp BMP69.bmp BMP9.bmp # BMP104.bmp BMP125.bmp BMP146.bmp BMP167.bmp BMP188.bmp BMP28.bmp BMP49.bmp BMP7.bmp BMP90.bmp # BMP105.bmp BMP126.bmp BMP147.bmp BMP168.bmp BMP189.bmp BMP29.bmp BMP5.bmp BMP70.bmp BMP91.bmp # BMP106.bmp BMP127.bmp BMP148.bmp BMP169.bmp BMP19.bmp BMP3.bmp BMP50.bmp BMP71.bmp BMP92.bmp # BMP107.bmp BMP128.bmp BMP149.bmp BMP17.bmp BMP190.bmp BMP30.bmp BMP51.bmp BMP72.bmp BMP93.bmp # BMP108.bmp BMP129.bmp BMP15.bmp BMP170.bmp BMP191.bmp BMP31.bmp BMP52.bmp BMP73.bmp BMP94.bmp # BMP109.bmp BMP13.bmp BMP150.bmp BMP171.bmp BMP192.bmp BMP32.bmp BMP53.bmp BMP74.bmp BMP95.bmp # BMP11.bmp BMP130.bmp BMP151.bmp BMP172.bmp BMP193.bmp BMP33.bmp BMP54.bmp BMP75.bmp BMP96.bmp # BMP110.bmp BMP131.bmp BMP152.bmp BMP173.bmp BMP194.bmp BMP34.bmp BMP55.bmp BMP76.bmp BMP97.bmp # BMP111.bmp BMP132.bmp BMP153.bmp BMP174.bmp BMP195.bmp BMP35.bmp BMP56.bmp BMP77.bmp BMP98.bmp # BMP112.bmp BMP133.bmp BMP154.bmp BMP175.bmp BMP196.bmp BMP36.bmp BMP57.bmp BMP78.bmp BMP99.bmp # BMP113.bmp BMP134.bmp BMP155.bmp BMP176.bmp BMP197.bmp BMP37.bmp BMP58.bmp BMP79.bmp # BMP114.bmp BMP135.bmp BMP156.bmp BMP177.bmp BMP198.bmp BMP38.bmp BMP59.bmp BMP8.bmp # BMP115.bmp BMP136.bmp BMP157.bmp BMP178.bmp BMP199.bmp BMP39.bmp BMP6.bmp BMP80.bmp # BMP116.bmp BMP137.bmp BMP158.bmp BMP179.bmp BMP2.bmp BMP4.bmp BMP60.bmp BMP81.bmp # BMP117.bmp BMP138.bmp BMP159.bmp BMP18.bmp BMP20.bmp BMP40.bmp BMP61.bmp BMP82.bmp # BMP118.bmp BMP139.bmp BMP16.bmp BMP180.bmp BMP200.bmp BMP41.bmp BMP62.bmp BMP83.bmp # BMP119.bmp BMP14.bmp BMP160.bmp BMP181.bmp BMP21.bmp BMP42.bmp BMP63.bmp BMP84.bmp
これら連番画像ファイルから動画への変換を ffmpeg によって以下のコマンドで実行できます。
ffmpeg -r 30 -i bmps/BMP%d.bmp -qscale 0 out.avi # ffmpeg version N-48152-g98b7a50 Copyright (c) 2000-2012 the FFmpeg developers # built on Dec 24 2012 05:22:43 with gcc 4.6 (Debian 4.6.3-1) # configuration: --prefix=/root/ffmpeg-static/64bit --extra-cflags='-I/root/ffmpeg-static/64bit/include -static' --extra-ldflags='-L/root/ffmpeg-static/64bit/lib -static' --extra-libs='-lxml2 -lexpat -lfreetype' --enable-static --disable-shared --disable-ffserver --disable-doc --enable-bzlib --enable-zlib --enable-postproc --enable-runtime-cpudetect --enable-libx264 --enable-gpl --enable-libtheora --enable-libvorbis --enable-libmp3lame --enable-gray --enable-libass --enable-libfreetype --enable-libopenjpeg --enable-libspeex --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-version3 --enable-libvpx # libavutil 52. 12.100 / 52. 12.100 # libavcodec 54. 81.100 / 54. 81.100 # libavformat 54. 50.102 / 54. 50.102 # libavdevice 54. 3.102 / 54. 3.102 # libavfilter 3. 30.101 / 3. 30.101 # libswscale 2. 1.103 / 2. 1.103 # libswresample 0. 17.102 / 0. 17.102 # libpostproc 52. 2.100 / 52. 2.100 # Input #0, image2, from 'bmps/BMP%d.bmp': # Duration: 00:00:08.00, start: 0.000000, bitrate: N/A # Stream #0:0: Video: bmp, bgr24, 600x600, 25 fps, 25 tbr, 25 tbn, 25 tbc # Please use -q:a or -q:v, -qscale is ambiguous # Output #0, avi, to 'out.avi': # Metadata: # ISFT : Lavf54.50.102 # Stream #0:0: Video: mpeg4 (FMP4 / 0x34504D46), yuv420p, 600x600, q=2-31, 200 kb/s, 30 tbn, 30 tbc # Stream mapping: # Stream #0:0 -> #0:0 (bmp -> mpeg4) # Press [q] to stop, [?] for help # frame= 200 fps=0.0 q=0.0 Lsize= 2602kB time=00:00:06.66 bitrate=3197.5kbits/s # video:2592kB audio:0kB subtitle:0 global headers:0kB muxing overhead 0.398684%
ここで「-r 30」はフレームレート30fpsを指定しています。「-i bmps/BMP%d.bmp」により連番画像ファイルを順番に(BMP1.bmp, BMP2.bmp, ..., BMP200.bmp)入力することができます。「-qscale 0」は入力クオリティを保つ(縦横ピクセル数も保たれる)オプションであり、このオプションにより入力画像から劣化無く動画に変換されます(以前のバージョンでは同様の処理を -sameq オプションで指定できましたが、最近のバージョンでは -sameq は削除されたようです)。
各種オプションの使い方は ffmpeg -h all で確認できます。
また以下のように出力動画のビットレートやサイズを変換することもできます。
# 出力動画ビットレートを1000kbit/sに、出力動画サイズを300x300に変換 ffmpeg -r 30 -i bmps/BMP%d.bmp -b 1000k -s 300x300 out.avi