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を呼び出すため, まずはシェルスクリプトを実行可能にする. 拡張子
.sh
をvideo/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
0 件のコメント:
コメントを投稿