[[diary/Kojima]]
・動画関係のメモ
ほとんど個人的な備忘録。間違っているところがあれば指摘よろしく。
- mpeg2 以外の動画ファイルを DVD 互換の mpeg2 形式に変換するオプション指定
mencoder hoge.AVI -o hoge.mpeg -oac lavc -ovc lavc -lavcopts acodec=ac3 \
-lavcopts vcodec=mpeg2video -ofps 30000/1001 -of mpeg -mpegopts format=dvd:tsaf \
-srate 48000 -af lavcresample=48000 -vf scale=720:480
順番がどう影響するかとかは確認してないけど,
-oac lavc -lavcopts acodec=ac3 -srate 48000 -af lavcresample=48000
が音声を適切なレートで ac3 化(liba52経由)する指定
-oav lavc -lavcopts vcodec=mpeg2video -ofps 30000/1001 -of mpeg \
-mpegopts format=dvd:tsaf -vf scale=720:480
が動画を mpeg2 形式,29.97fps で,720x480 に変換する指定らしい.
- 防犯カメラみたいな fps が 30(29.97)にならない動画を mpeg2 に変換する方法
mplayer の -vo オプションで動画を複数枚の jpeg 画像に変換
$ mplayer fixed_camera.avi -vo jpeg
生成された jpeg 画像を水増しするためのシェルスクリプトを作る perl スクリプト
$ perl conv.pl
conv.pl はこんな感じのコード
opendir(DIR, ".") || die "can't open directory";
@FILES=grep(!/^\.\.?}$/, readdir(DIR));
closedir(DIR);
$c = 0;
foreach $file (@FILES) {
if ($file =~ /jpg/) {
for ($i = 0; $i < 6; $i++) {
printf(" cp %s dt_%04d.jpg \n", $file, $c++);
}
}
}
この結果,
cp 00000001.jpg dt_0000.jpg
cp 00000001.jpg dt_0001.jpg
cp 00000001.jpg dt_0002.jpg
cp 00000001.jpg dt_0003.jpg
cp 00000001.jpg dt_0004.jpg
cp 00000001.jpg dt_0005.jpg
cp 00000002.jpg dt_0006.jpg
cp 00000002.jpg dt_0007.jpg
こんな感じの シェルスクリプトができる(この例では,1枚の画像を6枚に水増し)ので,
それを実行して必要な画像ファイルを生成する
新たに生成した画像ファイルを別のディレクトリに移して,mencoder で mpeg2 化
$ mencoder mf://\*.jpg -mf fps=24000/1001:type=jpg -ovc lavc \
-lavcopts vcodec=mpeg2video -of mpeg -mpegopts format=dvd:tsaf -o output.mpeg
生成された mpeg2 ファイルの確認
$ file output.mpeg
output.mpeg: MPEG sequence, v2, program multiplex
-私的には,ffmpegを使ってます。「ffmpeg -i hoge.avi -target ntsc-dvd hoge.mpg」これで,mpeg2以外の動画ファイルをDVD互換のmpeg2形式に変換できるけど,画質的に差があるかどうかは興味深いところ。 -- [[tamu]] &new{2007-12-20 (木) 23:53:54};
-ffmpeg -target ntsc-dvd は手元でも試したことがあるんだけど、Youtube あたりからダウンロードした flash なデータとかを変換しようとすると、
kojima@xeon[~]% ffmpeg -target ntsc-dvd -i honpen_chara.flv test.mpeg
FFmpeg version SVN-r8507, Copyright (c) 2000-2007 Fabrice Bellard, et al.
configuration: --prefix=/usr --mandir=${prefix}/share/man
-enable-shared --enable-pthreads --enable-gpl --enable-pp --enable-liba52
--enable-liba52bin --enable-libdts --enable-libfaac --enable-libfaad --enable-libfaadbin
--enable-libmp3lame --enable-libogg --enable-libvorbis --enable-x264 --enable-xvid
libavutil version: 49.4.0
libavcodec version: 51.40.0
libavformat version: 51.11.0
built on Mar 25 2007 22:34:45, gcc: 3.4.3
Seems stream 0 codec frame rate differs from container frame rate: 1000.00 (1000/1) -> 29.97 (30000/1001)
Input #0, flv, from 'honpen_chara.flv':
Duration: 00:03:43.0, start: 0.000000, bitrate: 64 kb/s
Stream #0.0: Video: flv, yuv420p, 320x240, 29.97 fps(r)
Stream #0.1: Audio: mp3, 22050 Hz, mono, 64 kb/s
Output #0, mpeg, to 'test.mpeg':
Stream #0.0: Video: mpeg2video, yuv420p, 320x240, q=2-31, 6000 kb/s, 29.97 fps(c)
Stream #0.1: Audio: ac3, 22050 Hz, mono, 448 kb/s
Stream mapping:
Stream #0.0 -> #0.0
Stream #0.1 -> #0.1
Error while opening codec for output stream #0.1 - maybe incorrect parameters such as bit_rate, rate, width or height
みたいな感じでエラーになるんですよね。たぶん、bit_rate とかの変換オプションを指定すればなんとかなりそうな気はしているんだけど、google とかで
調べても ffmpeg のビットレート変換オプションとかはよく分からなかったので、とりあえず手元では mencoder をつかってみた、というのが正直なところ。
最近の ffmpeg だと何故か liba52 をちゃんと使えないため ac3 なコーデックにエンコードできないような問題もあったりするので、ffmpeg ではまるより
は、とりあえずmencoderで変換しておこうか、、というところ -- [[kojima]] &new{2007-12-21 (金) 21:31:54};
-FLV形式な動画ファイルでは試してないのだけど,ffmpegはオプションの順番がかなりシビアで「ffmpeg -i honpen_chara.flv -target ntsc-dvd test.mpeg」じゃないとダメかも。手元で,-iと-targetの順番を逆にしたところ,生成に失敗しました。 -- [[tamu]] &new{2007-12-25 (火) 22:43:11};
-[連絡]12/26日ごろからPlamoMLの取りこぼしあり28日頃以降の投稿返信ありませんチエック願えませんでしょうか。 -- [[名倉]] &new{2007-12-31 (月) 10:32:34};
-ここしばらくのマイコンボード関連のメールはロクに見てなかったんだけど、MLサーバのログのあたらしいところはこんな
感じですね。
07/12/26 10:48:53 [28720:karma@XXX] Firefox 3
07/12/26 19:01:38 [28721:uetake-s813@XXX] Re: Firefox 3
07/12/26 19:33:10 [28722:m_kaneko@XXX] 新製品のご紹介 ご意見を聞かせていただけませんでしょうか?
07/12/27 15:41:33 [28723:karma@XXX] Re: 新製品のご紹介 ご意見を聞かせていただけませんでしょうか?
07/12/27 16:02:30 [28724:kinneko@XXX] Re: 新製品のご紹介 ご意見を聞かせていただけませんでしょうか?
07/12/27 16:33:55 [28725:mkishida@XXX] Re: 新製品のご紹介 ご意見を聞かせていただけませんでしょうか?
07/12/27 16:47:22 [28726:nagura-s@XXX] Re: 新製品のご紹介 ご意見を聞かせていただけませんでしょうか?
07/12/27 17:17:35 [28727:m_kaneko@XXX] Re: 新製品のご紹介 ご意見を聞かせていただけませんでしょうか?
07/12/27 18:12:27 [28728:mkishida@XXX] Re: 新製品のご紹介 ご意見を聞かせていただけませんでしょうか?
07/12/27 18:46:09 [28729:karma@XXX] Re: 新製品のご紹介 ご意見を聞かせていただけませんでしょうか?
07/12/27 19:50:02 [28730:m_kaneko@XXX] Re: 新製品のご紹介 ご意見を聞かせていただけませんでしょうか?
07/12/28 03:02:44 [28731:jado@XXX] Re: 新製品のご紹介 ご意見を聞かせていただけませんでしょうか?
07/12/28 09:21:03 [28732:mkishida@XXX] Re: 新製品のご紹介 ご意見を聞かせていただけませんでしょうか?
Plamoではないけど、同じサーバで動かしているMLへの投稿は配送されているので、特にサーバトラブルというわけではなさそう。-- [[kojima]] &new{2007-12-31 (月) 14:58:48};
-当方も [plamo:28721] [plamo:28731] が届きませんでした。 [plamo:28722] は 12/29 に届きました。経路にトラブルでもあったかな程度に思っていました。 -- [[M.tomi]] &new{2007-12-31 (月) 16:03:26};
-うちも[plamo:28721] [plamo:28731]届いていませんhttp://mlog.euqset.org/archives/cat_plamo.htmlでも[plamo:28721]が無かったので連絡しました。なぜだろう?もうすこし待ってみます。 -- [[名倉]] &new{2007-12-31 (月) 16:34:26};
-ふむ、確かに手元のメールを調べても、結構歯抜けになってますね。ざっと見だけど、28721, 28731,28732 は届いてないみたい。よく分からないけど、メールを送ろうとした際にサーバのload averageが閾値を越えてたら postfix のレベルで配送を控える、みたいな機能があったので、そのへんでキューに溜っている可能性もありますね。一度 postfix を再起動してみるかな。 -- [[kojima]] &new{2007-12-31 (月) 17:01:30};
-28732は届いてました。28721,28731はサーバのspoolには保存されているのだけど、手元にも届いてないみたい。もうしばらく様子を見て配送されないようなら、再配送しておくかな。 -- [[kojima]] &new{2007-12-31 (月) 17:51:08};
-.wmv のビデオで ffmpeg で -an を指定しないと使用できないファイルがあり mencoder で mpeg2 にすると音が数秒遅れるのと重複フレームというのが多発します。対策は無いものでしょうか。 -- [[早間義博]] &new{2008-01-08 (火) 07:00:25};
-どうやって、pgmからmpegに変換するの??宜しく -- [[nash]] &new{2008-02-01 (金) 10:47:29};
-man によると 'mencoder "mf://*.jpg" -mf fps=25 -o output.avi -ovcvc -lavcopts vcodec=mpeg4' のような例がでてきますので、とりあえず imagemagick 等で pgm を jpg に変換した後 mpeg に、というところではないでしょうか。 -- [[ohno]] &new{2008-02-02 (土) 00:22:12};
#comment