TS→PS変換マシン

以前の日記にも書いたように,録画後の TS ファイルを PS ファイルに変換するのに Linux マシンを利用している. が,変換中は Linux マシンの負荷が高くなり,他の作業ができる状態では無い. というわけで,変換用の Linux マシンをエンコードマシン上の VMware player で実現することにする.

VMware player

言わずと知れた仮想マシン実行環境.

http://www.vmware.com/jp/ からインストーラをダウンロードし,インストールする.

debian lenny

http://www.debian.org/CD/netinst/ からネットワークインストール用 CD の ISO ファイルをダウンロード. ISO イメージは実 CD-ROM に焼く必要は無い.

VMware player 仮想マシンに debian をインストール

VMware player を起動し,仮想マシンを作成し,debian をインストールする. このとき,仮想 CD-ROM ドライブにダウンロードした ISO イメージを指定する.

なお,VMware 上の仮想ネットワーク設定は「ブリッジ」とする.

squeeze にアップグレード

インストールが終わったら /etc/apt/sources.list を書き換える.

  • 現在のテスト版である squeeze にアップグレード
  • www.debian-multimedia.org の apt line を追加

aptitude を起動し,パッケージをアップグレードする.

必要なパッケージのインストール

以下のパッケージをインストール

  • samba-client
  • smbfs
  • winbind
  • ffmpeg

/etc/nsswitch.conf の書き換え

hosts 行を

hosts:          files dns wins

と書き換えると,名前解決で Windows コンピュータ名を利用できるようになる.

変換スクリプト

こんな感じ. root 権限で実行する. 録画マシンから TS ファイルを読み込み,TS→PS 変換を行い,エンコードマシンに吐き出す. 入出力にはパイプラインを使っているので,仮想マシン上のストレージは不要.

最初,smbfs で Windows マシンの共有を mount して実行していたが,あまりにも速度が遅いので,smbclient によるアクセスに変更した.

#!/usr/bin/perl
#
# ts2ps: convert from MPEG-2 TS to MPEG-2 PS
#

$srcdir = '/media/m2ts';              # M2TS 共有を一時的に mount
                                      # するディレクトリ
$srcshare = '//jr0bak-rec/m2ts';      # 変換元共有
$destshare = '//jr0bak-xp/mpegconv';  # 変換先共有

# get filenames

`smbmount '$srcshare' '$srcdir' -o guest`;
$? and die;
@files= grep { s/\n$//g } `ls -tr1 $srcdir/*.m2ts`;
`umount '$srcdir'`;
$? and die;

foreach $s ( @files ) {
        ( $sb = $s ) =~ s|.*/||g;
        ( $db = $sb ) =~ s/m2ts$/mpg/;

        print "$sb -> $db\n";
        `smbclient $srcshare -U guest% -c 'get "$sb" -' | \
         ffmpeg -i - -f dvd -vcodec copy -acodec copy - 2>/dev/null | \
         smbclient $destshare -U guest% -c 'put - "$db"'`;
        ( $? != 0 ) and exit 1;
}
exit 0;

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-07-10 (土) 23:38:45 (4715d)