ヘルプ

<< TSからPSへの変換 のページ検索結果にもどる

このページでは http://jr0bak.homelinux.net/~imai/pukiwiki/pukiwiki.php?%C6%FC%B5%AD%2F2010-07-10%2FTS%A2%AAPS%CA%D1%B4%B9%A5%DE%A5%B7%A5%F3のキャッシュを表示しています。

キャッシュとは、提携する検索エンジンが、検索結果表示用の索引を作る際に各ページの内容を保存したものです。
→ キャッシュとは?
元のページは変更されている可能性があります。現在のページ内容はこちらから確認できます。

※HTMLバージョンとして表示する際、レイアウトが崩れたり、文字が読めなくなる場合があります。ご了承ください。

Yahoo! JAPANはページ内のコンテンツとの関連はありません。

日記/2010-07-10/TS→PS変換マシン - BAK

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;

Last-modified: 2010-07-10 (土) 23:38:45 (5008d)