DLNAサーバーを試す[MediaTomb]編 – トランスコードしてREGZAから視聴

MediaTombのトランスコード(変換)を有効にして、リアルタイムに”MPEG2″以外の動画がREGZA Z9000から視聴できるか試してみました。例として”MP4″を”MPEG2″にトランスコードして、REGZAから視聴する方法を記載します。 :o)

設定ファイルに”vlc”を使用した変換のサンプルが記載されていましたが、vlcの使い方がよく分からないので、TwonkyServer調査時の”ffmpeg”に変更しています。

MediaTombのトランスコードの設定は”config.xml”ファイルの”transcoding”タグ内で指定します。まず、トランスコーディングを有効にするため、”transcoding”タグの”enabled”を”yes”に設定します。

Select Code
1
<transcoding enabled="yes">

1.変換元MIMEと変換に使用するプロファイルの設定
“mimetype-profile-mappings”タグ内に、変換元動画の”MIME-TYPE”と、トランスコードで使用するプロファイルを、”using”で指定した”transcode”タグを追加します。

変換元動画が”mp4″で、変換に”ffmeg-video”のプロファイルを使用する設定は以下のようになります。プロファイル名は任意に決めてOKです。

Select Code
1
<transcode mimetype="video/mp4" using="ffmpeg-video"/>

2.プロファイルを作成し、変換後のMIMEと変換に使用するスクリプトを設定

“using”で指定したトランスコードプロファイル:”ffmpeg-video”を作成します。このプロファイルを動作させるために、”enabled=yes”を設定します。

Select Code
1
<profile name="ffmpeg-video" enabled="yes" type="external">

<mimetype>タグに変換後の”MIME-TYPE”を指定します。REGZA Z9000で視聴できるMPEG2へ変換するため、”video/mpeg”を指定します。前回と同じようにDLNA関連の属性を付加して指定します。

Select Code
1
<mimetype>video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC</mimetype>

次に、変換を受け持つスクリプトファイルを”agent”タグの”command”に設定します。”ffmpeg”のコマンドを直接記述した方法が動作しなかったので、スクリプトファイル:”mediatomb-ffmpeg-video”を使用する設定として記述しています。

ファイル名は任意に決めてOKです。

Select Code
1
<agent command="/home/p182/mediatomb-ffmpeg-video" arguments="%in %out"/>

◆トランスコードプロファイル : ffmpeg-video

Select Code
1
2
3
4
5
6
7
<profile name="ffmpeg-video" enabled="yes" type="external">
  <mimetype>video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC</mimetype>
  <accept-url>yes</accept-url>
  <first-resource>yes</first-resource>
  <agent command="/home/p182/mediatomb-ffmpeg-video" arguments="%in %out"/>
  <buffer size="14400000" chunk-size="512000" fill-size="120000"/>
</profile>

3.変換に使用するスクリプトを作成

設定したスクリプトファイル:mediatomb-ffmpeg-videoを作成します。スクリプトファイルは”ffmpeg”を使用して、”MPEG2″の動画へ変換するように設定します。

ここが肝になります。 :o)
“ffmpeg”は”exec”で起動しています。

◆スクリプトファイル : mediatomb-ffmpeg-video
※私の環境で試したコマンドです。
お使いの環境にあわせて変更してください。

Select Code
1
2
#!/bin/bash
exec "/usr/bin/ffmpeg" -i "${1}" -f mpegts -vcodec mpeg2video -b 4096k -acodec mp2 -ab 128k -ac 2 -aspect 4:3 -threads 4 - > "${2}"

保存先は何処でもいいですが、忘れずに”command”のパスもあわせて変更します。作成したスクリプトファイルのパーミッションを実行可能に変更します。

Select Code
1
sudo chmod 755 mediatomb-ffmpeg-video

ここまで完了したら、MediaTombをリスタートします。

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

REGZAから”MP4″の動画を選択してみると・・・、
トランスコーディングが機能してREGZAから視聴できるようになります。
img_5235

しかし、右下にタイムインジケータが表示されず、シーク(早送り、巻戻し)ができません。 ;-(
img_5247

この理由は、本来ならプロファイルに指定するDLNAの属性を

Select Code
1
"DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=01;DLNA.ORG_CI=0"

と記述したいのですが、”;”(セミコロン)以降が含まれていると、トランスコードが実行されなくなるため、

Select Code
1
"DLNA.ORG_PN=MPEG_PS_NTSC"

とセミコロンの前までをDLNAの属性に設定しているためです。

シーク(巻戻し、早送り)は、”DLNA.ORG_OP=01″を指定できれば可能になると思うのですが・・。

⇒ DLNAサーバーを試す[MediaTomb]編 – トラスコ時にシークバーを表示する (c)

それ以外の動画形式も、同じスクリプトファイルで処理するように、”transcode”タグを作成すればREGZAから視聴できるようになります。

※AVI
img_5241

※WMV
img_5242

※AVCHD
img_5245

シーク(早送り、巻戻し)は今のところ出来ていませんが、視聴自体は問題ありません。 (8) :-$

6 thoughts on “DLNAサーバーを試す[MediaTomb]編 – トランスコードしてREGZAから視聴

  1. ありがとうございます。うちでも無事再生できました。
    画像サイズによっては映像が表示されないものもありますが、
    -s でサイズ指定してやれば表示されました。
    ファンレスのPCで動かしていますので、
    画像と負荷の折り合いを見つけるのが手間ですが・・・

    これで、シークも出来るようになれば・・・ :-P

    p.s. agent タグの後ろが閉じていないので、そのままコピペだとエラーになりました。

    • べるみさん。こんにちは

      お役に立てて何よりです。 :o)
      ご指摘いただいた箇所、修正しました。
      以後気をつけます。 :-$

      シークが出来ない件、色々試してみたのですが、難しいかも・・・。

      現在、ISOファイル(イメージ)をトランスコードして
      REGZAから視聴できないものか試しております。
      また、暇があったら覗いてみてください。

  2. 私も挑戦してみました。
    mpeg2は問題なく動作しましたが、MP4をトランスコードしながらの再生は、
    PCのCPU使用率が100%に貼りついて映像が表示されず・・・音も途切れ途切れでした。残念。

    ちなみに、どのくらいのスペックのPCを使用されていますか?
    ウチのはceleron3Gのメモリ2Gです。
    やはりそろそろ買い替えなのかな・・・。

    • さいとーさん。 こんばんは。
      2台のPCで試していますが、今のところ問題なく視聴できています。

      PCスペックは以下を参照してください。 :-$
      1.リビングPCを作ってみる
      2.メインPCのパーツを変更

      どのような変換コマンドを使っていらっしゃるのか不明ですが
      もし、私が記載しているコマンドをそのままお使いなら
      4スレッドで変換作業を行っている”-threads 4″のオプションを削除したり、
      ビットレートを下げたり、キャッシュのサイズを増やすなどすれば
      安定するかもしれまん。

      • PCのスペックの情報ありがとうございました。
        うちのPCもMBとCPUをAthlon2×4に交換して試してみました。

        紹介されているシェルスクリプトではなぜか映像は表示されませんでした。

        PCのCPU使用率は100%に貼りついていないので、もしかしたらTV側もしくは、LANの問題なのかもしれません。
        近い内にTV-ルーター間を無線ではなくケーブルで接続して実験して見たいと思っています。

        ちなみに、以下のスクリプトで、とりあえず表示は出来ました。
        #!/bin/bash
        exec “/usr/bin/ffmpeg” -i “${1}” -target ntsc-svcd -b 512k -ab 64k -aspect 4:3 -threads 4 – > “${2}”

        有益な情報、ありかとうございました。
        自分的には、次はフラッシュ動画(拡張子がflv)のものを変換しながらREGZAでみる方法にチャレンジしてみる予定です。
        全然、知識がないので、まずは勉強からです。しばらく楽しめそうです(汗

        • 音声のみで映像が表示されない場合は、サイズ指定の
          “-s 720×480″などのオプションを追加すれば映像も表示されるはずです。

          私が試したのはHD動画(1280×720,1980×1020)なのですが、
          ffmpegを使用してHDサイズの動画を視聴するとREGZAがおかしな挙動になります。

          なので、ffmpegのオプションは”サイズ指定なし”の
          アス比をわざと4:3で指定しています。
          プレビュー表示のアス比はおかしいですが、実際に視聴を開始すると
          HD動画でも正しいサイズとアス比で表示されるため、
          記載しているようなオプションで運用しています。

          “-target ntsc-svcd”などの”-target”指定は
          ビットレートや画面サイズが固定されているはずなので、
          あえて使用しないようにしています。

コメントを残す

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

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