[ Top |Wiki |掲示版 ] powered by


L-penguin

TV番組のエンコード with mencoder

FreeBSD環境で、TV番組を録画してから、手動でCMカットして、つないでエンコードして一つのaviファイルを作るまでの道のりです。たぶんかなり我流です。基本的にmencoderの世話になります。

必要なソフト

xawtv
xawtvそのものは使わないのですが、付属のプログラム"streamer"を使います。
mplayer
付属のエンコーダ"mencoder"を使います。(mplayer本体も一応使いますが。)
transcode
付属のavi連結ツール"avimerge"を使います。

録画

実は、VHSなんです(ぉぃ)。

キャプチャ

streamerを使います。

# 30分の場合 (1800秒)
streamer -t 0:1800 -s 640x480 -r 29.97 -o output.avi -f mjpeg -F stereo

手動CMカット

カットポイント探索

mplayer -idx -speed 0.5 output.avi

速度半分のスロー再生(speed 0.5)です。mjpegはそのままではカーソルキーによるサーチが効かないので、-idxオプションをつけてインデックスを生成しています。

カーソルキーでムービー全体を飛び回りつつ、カットする地点が何秒なのかをさぐります。切り替わる地点を分かりやすくするため、スロー再生にしています。

「今何秒地点なのか」は、コンソールに出ています。

A:  34.5 V:  34.5 A-V:0.001 ct:  0.029 ...(略)
# これは34.5秒地点

…うーん、もっと楽にできないんでしょうか。

切り出し

CMを除いた本編を、ファイルから切り出します。

だったとしたら、次のようにします。

mencoder output.avi -idx -ss 8.7    -o output_a.avi -ovc copy -oac copy -endpos 208.8
mencoder output.avi -idx -ss 367.8  -o output_b.avi -ovc copy -oac copy -endpos 555.8
mencoder output.avi -idx -ss 1043.9 -o output_c.avi -ovc copy -oac copy -endpos 692.9

チェック

切り出し工程で作成したファイルがうまく切り出せているかどうか、ここで各ファイルを視聴して確かめます。 目と耳と反射神経で求めた数値ゆえ微妙にずれていることがあって、CMの先頭の音声が0.2秒くらい混ざっていることがあるので…。

失敗していたら、長さを微妙に変えて切り出しなおしです。

ファイル統合

一つのファイルにまとめます。

avimerge -o output_m.avi -i output_a.avi output_b.avi output_c.avi

エンコード

mencoder -forceidx output_m.avi -o output_enc.avi \
         -ovc lavc -lavcopts vcodec=mpeg4:vhq:v4mv:vqmin=2:vqmax=9:vbitrate=2000:keyint=300 \
         -vf pp=md \
         -oac mp3lame

ちなみに、もし比率が16:9なら、

-aspect 16:9

を加える必要があります。

できあがり

output_enc.aviが完成品です。


Since 2002, L-penguin.