DLNAサーバーを試す[MediaTomb]編 – DVDISOイメージのトランスコード再生

MediaTombを使って、DVDのISOイメージが視聴できないか試してみました。試したISOイメージはDVDからフルバックアップしたもので、メニューや音声などは再編集していません。

MediaTombのドキュメントを見る限り、拡張子が”ISO”のファイルを登録(公開)する際、スクリプトの”import-dvd.js”が実行され、イメージの内容をハンドリングしながら階層に振分けて登録してくれるらしい。視聴も大丈夫なのかな?

この機能を使ってみたかったのですが、Ubuntuのパッケージではこの機能が有効になっていないらしく、残念ながら使えませんでした。 :-( 有効にするため、再コンパイルも考えましたが、
面倒くさいので今回も却下しました。 :-$

今回は、ISOイメージ”が扱える”MEncoder”を使ったスクリプトを作成して”MPEG2″にトランスコードしながらリアルタイムにREGZAから視聴できるかやってみました。
mediatomb-iso-01

考え方は、前回に試したトランスコード視聴と変わりません。外部スクリプトで使用するコマンドが”ffmpeg”から”mencoder”に変わります。

まずは、拡張子:”ISO”に対するMIME-TYPEを登録します。トランスコードするのが前提なので、ここで指定する”MIME-TYPE”は”video/”が必須で、その後に続く文字はなんでも構いません。

Select Code
1
<map from="iso" to="video/dvd-iso"/>

次に、登録したMIME-TYPEで使用するプロファイル:”mencoder-iso”を指定します。

Select Code
1
<transcode mimetype="video/dvd-iso" using="mencoder-iso"/>

次に、指定したプロファイル:”mencoder-iso”を作成し、使用する変換スクリプトとして”mediatomb-mencoder-iso”を指定しました。

Select Code
1
2
3
4
5
6
7
8
<profile name="mencoder-iso" enabled="yes" type="external">
  <mimetype>video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC</mimetype>
  <accept-url>no</accept-url>
  <first-resource>no</first-resource>
  <use-chunked-encoding>yes</use-chunked-encoding>
  <agent command="/usr/local/bin/mediatomb-mencoder-iso" arguments="%in %out"/>
  <buffer size="14400000" chunk-size="512000" fill-size="240000"/>
</profile>

最後に、指定した変換スクリプト:”mediatomb-mencoder-iso”を作成します。変換するコマンドは”MEncoder”を使用します。

Select Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/bash
exec mencoder -dvd-device "${1}" dvd://01 -o "${2}" \
 -oac lavc \
 -ovc lavc \
 -of mpeg \
 -mpegopts format=dvd:tsaf \
 -vf scale=720:480,harddup \
 -srate 48000 \
 -af lavcresample=48000 \
 -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=18:vstrict=0:acodec=ac3:abitrate=192:aspect=16/9 \
 -ofps 30000/1001 \
 -alang ja \
 -slang en \
 -channels 6 \
# -chapter 48-51 \
# -dvdangle 1 \
 &>/dev/null

このスクリプトで最も重要なのは”dvd://”に設定しているトラックの値です。今回はトラック:”01″を指定していますが、この値はDVDの内容により異なります。通常は再生時間が一番長いトラックを指定すれば大丈夫なのですが、どのトラック値が一番再生時間が長いのかわかりません。そこで、指定したDVDイメージの情報を出力してくれる”lsdvd”のコマンドを使用して一番再生時間が長いトラック値を取得し、その値を使用するスクリプトを作成してみました。

“lsdvd”は再生時間が一番長いトラックとして”Longest track”情報を出力してくれます。
mediatomb-iso-02

data-ad-format="auto"> data-ad-format="auto">

“lsdvd”はいろいろな言語に対応する情報を出力してくれます。今回は、”-Op”オプションを指定してPERLで扱える情報を出力し、その情報から”Longest track”を取得し、”mencoder”で使用するスクリプトを作成しました。
mediatomb-iso-03

※lsdvdを追加した”mediatomb-mencoder-iso”スクリプト

Select Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash
CMD=$(lsdvd -Op "${1}")
TRACK=$(perl -e "$CMD print \$lsdvd{longest_track}")
exec mencoder -dvd-device "${1}" dvd://$TRACK -o "${2}" \
 -oac lavc \
 -ovc lavc \
 -of mpeg \
 -mpegopts format=dvd:tsaf \
 -vf scale=720:480,harddup \
 -srate 48000 \
 -af lavcresample=48000 \
 -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=18:vstrict=0:acodec=ac3:abitrate=192:aspect=16/9 \
 -ofps 30000/1001 \
 -alang ja \
 -slang en \
 -channels 6 \
# -chapter 48-51 \
# -dvdangle 1 \
 &>/dev/null

その他のオプションで-alangは音声、-slangは字幕になります。
-chapterはチャプター、-dvdangleはアングルです。←※今回はコメントにしています。

作成したスクリプトのパーミッションを忘れずに変更します。

Select Code
1
sudo chmod 755 mediatomb-mencoder-iso

ここまで完了したら、MediaTombをリスタートし、”ISO”ファイルを登録します。

Select Code
1
sudo /etc/init.d/mediatomb restart

REGZAから”ISOファイル”を選択するとDVDの再生が始まります。音声と字幕を日本語、英語と切り替えてみましたが問題なく視聴できました。 :o)

※日本語音声:英語字幕
img_5256

img_5258

※英語音声:日本語字幕
img_5269

img_5265

ここまでできたので満足な結果です。 (Y)

この方法は、”ISO”の拡張子に対して、一つのトランスコード設定(スクリプト)しか指定できません。MediaTomb標準のISO振り分けが機能すれば、いろいろできるかもしれないのですが。

シークができるかもしれないし、コンパイルしてみるかな。 C:-)

8 thoughts on “DLNAサーバーを試す[MediaTomb]編 – DVDISOイメージのトランスコード再生

  1. こんにちは、以前はwild media serverで色々とサポートいただきありがとうございました。
    今度は、MediaTombでアドバイスいただけたらと思います。
    当方の環境は、Ubuntu 12.04 サーバ(x64)+Lubuntuデスクトップに
    最新版のMediaTombを導入しています。
    レグザは2006年に購入したZ2000です。

    DVDISOファイル(主に英語音声+日本語字幕で視聴)をレグザで再生・視聴しようと、
    上記記事の記載内容と全く同じ設定をしてトライしました。
    映像は問題なく出ましたが、音声は英語で字幕は表示できませんでした。
    音声・字幕の切り替えもZ2000では操作できません。
    このDVDISOファイルはWindowsでは何の問題もなく字幕付きで視聴できています。
    2、3のDVDISOファイルを試して見ましたが、結果は全敗でした。

    こんな状況ですが、何かコメントやアドバイスをいただけると大変光栄です。
    すみませんが、どうぞよろしくお願いいたします。

    • ひろじんさん こんばんは。

      ご質問の内容から勘違いされている部分も見えますので、
      MediaTombの基本的な動きを説明します。

      MediaTombはDLNAガイドラインに従い、
      対象コンテンツをクライアントへ配信します。
      その際、コンテンツを変換ができるコマンドが指定できるようになっています。

      変換するコマンドはユーザーが決めます。
      今回はDVDISOを扱いたかったので、Mencoderを使用するコマンドを作成しました。
      これ以外にFFmpegやvlcなどのコマンドを使用することもできます。

      ここに記載した記事の内容を単純に言うと
      コンテンツを指定したフォーマットに変換し、
      クライアントへ配信しているということです。

      ご質問の中に、
      「音声・字幕の切り替えもZ2000では操作できません。」
      とありますが、これは正しい動きです。
      配信されたコンテンツは既に変換されており、
      英語音声や字幕が合成されたものになるので、
      そのような切替はできません。

      逆に映像は配信されているようなので、
      MediaTombの設定は正しいように思います。
      字幕や音声が意図したように変換されないのは
      Mencoderの変換が正しく動作していないよう思われますので、
      そのあたりを調査してみてはいかがでしょうか?

      その際、REGZAからMediaTombを動作させる必要はなく
      単純にUbuntu内でMediaTombで視聴したいISOファイルを
      指定したコマンドで変換したファイルを視聴して、
      音声や字幕を確認します。

      正しく出力されていない場合は引数などを変更します。
      そのあたりはネットなどでご確認ください。

  2. 早々とアドバイスをありがとうございます。
    念のため、コマンドラインからlsdvdを実行してみたところ、
    なんとlsdvdがまだインストールされていないことが分かりました。 :-(

    直ぐにインストールしてlsdvdが正常に機能していることを確認
    そのあとに再度レグザからMediaTomb上のDVDISOファイルを再生してみました。
    出ました日本語字幕が!! :o)
    すごいですね、DVDISOをリアルタイムにエンコードし且つ字幕まで出るって。

    この方法を生み出した知識と力にただ驚くばかりです。
    本当にありがとうございました。
    今後とも有益な情報のアップを期待しています。ご活躍ください。

  3. こんにちは。
    無事英語音声+日本語字幕が出るようになって安心していましたが、
    きょう一つのDVDISO映画をジックリ視聴しようとレグザから再生したところ、
    映像と英語音声がずれていました。字幕は問題なさそうです。

    mediatomb-mencoder-isoスクリプトのどこを調整すれば良いか勉強不足で分かりません。
    すみませんが、アドバイスいただけますでしょうか。
    なお、私のmediatomb-mencoder-isoスクリプトは、デジ備忘様と全く同じ記述をしています。

    よろしくお願いいたします。

    • ひろじんさん こんにちは。

      私が記載したスクリプトは
      以下のページのNTSC DVD用が元になります。
      ※参考
      http://www.mplayerhq.hu/DOCS/HTML/en/menc-feat-vcd-dvd.html

      音ズレが起こる理由はいろいろあるため
      ここを変更すれば解消できると断言することができません。

      例えば、GOPのMAXフレーム数を18から15に変更したらどうなるでしょうか?
      ※修正内容
      keyint=18 ⇒ keyint=15

      解消には色々パラメータを変更して試すしかないので、
      上記ページなどをご参考にしてください。

  4. こんにちは、アドバイスをどうもありがとうございます。
    keyint=18を15にしたり、abitrateを変更したり、channnelsをコメントアウトしたりと
    幾つか試してみましたが、全敗でした。

    ソース(DVDISOファイル)が悪いのかと思って、Windows PC にRDLNAとVLCをインストールして
    MediaTomb上のソースをWindows PCのVLCで再生してみましたが、
    音声ずれもなく正常に再生できましたので、ソースの問題ではなさそうです。

    REGZA(Z2000)の問題なのでしょうか?

    あるいは、mencoderのパラメータ設定がまだ調整しきれていないのでしょうか?
    もう1歩のところまで来ているのに残念です。
    もう少しパラメータをコツコツといじってみたいと思います。
    何か変化がありましたら改めてご報告します。
    また、何かお気づきのことがありましたらコメントいただけると大変光栄です。

  5. こんばんは。その後の報告です。
    教えていただきた参考ページを見ながら、しつこくあれやこれやと変更してみました。
    そして、-ofps 30000/1001 を -ofps 24000/1001 に変更して(他のパラメータは元に戻しました)
    レグザから再生してみたところ、やっと映像と英語音声が一致したようです。

    なぜこれだけの変更でうまくいくようになったのかさっぱり分かりませんが、
    苦労した甲斐がありました。最後まで視聴して音ズレがなければ、これで行こうと思います。
    色々とありがとうございました。

    • ひろじんさん こんばんは。

      音ズレ解消されたようですね。
      おめでとうございます。 (*)

      ちなみにofpsは出力のフレームレートの設定です。
      24000/1001は23.97fpsでの視聴になります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

数字を入力してください。(CAPTCHA) * Time limit is exhausted. Please reload CAPTCHA.