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 を書き換える.
aptitude を起動し,パッケージをアップグレードする. 必要なパッケージのインストール †以下のパッケージをインストール
/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; |