2013-12-23

FFserver + MediaTomb でビエラに映像を配信

PCに接続したキャプチャデバイスでリアルタイムに映像を取り込み, パナソニックのテレビ (Viera) に映像を配信する方法をメモする.

FFmpeg はキャプチャデバイスから映像を取り込んだり様々な映像フォーマットに変換することができる. FFmpeg に付属する FFserver で HTTP 形式での映像配信は可能. 残念なことに FFserver は DLNA には対応していないので, DLNA での配信は MediaTomb に任せることにする. ここでは主に FFserver から MediaTomb にストリームを渡す部分を説明する.
FFmpeg でデータの変換, FFserver でストリームを配信可能にし, MediaTomb で配信をする.

FFserverの設定

FFserver の設定の中に Launch を書いておくことで, FFmpeg を呼び出すことが可能.
フォーマットやコーデックを下記のように指定すると, Viera で再生することができる.
Port 9999
RTSPPort 9990
BindAddress 0.0.0.0
MaxClients 1000
MaxBandwidth 100000
CustomLog -

<Feed feed1.ffm>
File /dev/shm/feed1.ffm
FileMaxSize 100M
Launch /usr/local/bin/ffmpeg -f video4linux2 -i /dev/video0 -f alsa -i hw:0
</Feed>

<Stream mpegts.mpeg>
Feed feed1.ffm
Format mpegts

VideoCodec mpeg2video
VideoBitRate 2048
VideoFrameRate 29.97
VideoSize 720x480
VideoGopSize 12
PixelFormat yuv420p

AudioCodec mp2
AudioBitRate 64
AudioChannels 2
AudioSampleRate 44100
</Stream>

<Stream teststat.html>
Format status
</Stream>

MediaTomb config.xml

MediaTomb から CURL を呼び出し, FFmpeg の配信するストリームを MediaTomb に渡す.
CURLを呼び出すため, まずはシェルスクリプトを実行可能にする. 拡張子.shvideo/scriptというMIMEtypeにマップする. video/scriptは, bashというプロファイルでトランスコード. 最後に, プロファイルbashを定義する. -xオプションを付けておくことで, どのようなスクリプトが実行されたのか分かり, デバッグに役立つ.
...
        <map from="sh" to="video/script"/>
...
          <transcode mimetype="video/script" using="bash"/>
...
      <profile name="bash" enabled="yes" type="external">
        <mimetype>video/mpeg</mimetype>
        <accept-url>yes</accept-url>
        <first-resource>yes</first-resource>
        <accept-ogg-theora>yes</accept-ogg-theora>
                <agent command="/bin/bash" arguments="-x %in %out"/>
        <buffer size="14400000" chunk-size="512000" fill-size="120000"/>
      </profile>
...
CURLを実行するスクリプトを用意し, MediaTomb に追加する. 引数$1%outになるので, これへ出力する. 実際には名前付きパイプになっているようだ.
#! /bin/bash
exec curl -s -o "$1" http://localhost:9999/mpegts.mpeg

Vieraでの操作

操作方法がやや複雑なので, 以下に手順を書いておく.
  • リモコンのボタンビエラリンクを押す.
  • お部屋ジャンプリンクを選び, 決定を押す.
  • MediaTombを選び, 決定を押す.
  • Videoを選び, 決定を押す.
  • All Videoを選び, 決定を押す.
  • stream1.shを選び, 決定を押す.
  • を選び, 決定を押す. 当然のことながら, 発売時期などによって対応状況や操作方法が異なるので, 型番を調べて記載する予定である.

    お部屋ジャンプに対応しているテレビを以下に挙げる.

  • 0 件のコメント:

    コメントを投稿