RTMP Streaming on Linux
Linux 環境のスクリーンキャストをRTMP プロトコルを利用して、音声付きでストリーミング配信します。最終的には、Peercast ネットワークに配信してみようと思います。
http://www.maartenbaert.be/simplescreenrecorder/live-streaming/
http://www.rtmpd.com/
http://www.pecastation.org/
配信環境
- Ubuntu 14.04 x86_64, GNOME Shell 3.12.1
- SimpleScreenRecorder
デスクトップ上の矩形を音声付きでFLV 形式にエンコードします。 - C++ RTMP Server
RTMP プロトコルで、FLV 形式のデータを受信し、RTMP プロトコルで配信します。 - PeerCastStation
RTMP サーバに接続し、Peercast ネットワークにストリームを配信します。
SimpleScreenRecorder (Linux) |
上記が目標とする構成で、RTMP サーバへの接続と公開まではできました。
Linux 環境上で、PeerCastStation 1.7.9.1 がRTMP サーバからうまく受信できなかったので、Peercast ネットワークへの配信については暫定構成で実行しました。
C++ RTMP Server のビルドと起動
http://wiki.rtmpd.com/quickbuild
$ sudo apt-get install g++ subversion cmake make libssl-dev |
もしくは、crtmpserver
というパッケージを利用してもよいかもしれません。
SimpleScreenRecorder の設定
$ sudo apt-get install simplescreenrecorder |
項目 | 設定値 |
---|---|
Video Input: | select “Record a fixed rectangle” |
set Left, Top, Width, Height Value | |
set Frame rate: “10” | |
Audio Input: | “Pulse Audio” |
“Monitor of 内部オーディオ アナログステレオ” | |
File: | Save as: rtmp://localhost/live/livestream |
Separate file per segment: DO NOT CHECK! | |
Container: select “other…”, then “flv” | |
Video | Codec: “Other…”, then “libx264” |
Bit rate (inkbps): “100” | |
Custom options: preset=fast, minrate=100, maxrate=100, bufsize=2000, keyint=60 |
|
Audio: | Codec: “AAC” |
Bit rate (in kbps): “64” |
動作確認1
ブラウザで、http://dl.dropboxusercontent.com/u/2918563/flvplayback.swf
にアクセスして、以下を確認します。別のPC から接続する場合はサーバのIP アドレスに置き換えます。
rtmp://127.0.0.1/flvplayback
にコネクトできていることlivestream
を選択して、Play
ボタン押下でデスクトップの映像と音声が再生されること
動作確認2
以下のコマンドで、デスクトップの映像と音声が再生されるか確認します。
$ ffplay "rtmp://localhost/flvplayback/livestream" |
以下のエラーは後で調べておこう。
[rtmp @ 0x7f4008001600] Server error: call to function _checkbw failed |
動作確認3
Android のBSPlayer FREE でrtmp://192.168.0.2/flvplayback/livestream
を開くと再生されます。
https://play.google.com/store/apps/details?id=com.bsplayer.bspandroid.free&hl=ja
PeerCastStation の設定
PeerCastStation の開発版(1.7.9.1)をダウンロードして展開します。
$ mono PeerCastStation.exe |
ブラウザでhttp://localhost:7144
にアクセスします。ページが開けない場合は、lsof -i -P
でmono
のプロセスがリッスンしているポート番号を指定します。
「リレー」ページの「配信」ボタンを押下します。
項目 | 設定値 |
---|---|
ソース | RTMP Source |
ストリームURL | rtmp://localhost/flvplayback/livestream |
ストリームタイプ | Flash Video (FLV) |
チャンネル名 | (任意の名称を設定) |
Error になってしまって、Searching やReceiving とならないのはなんでだろう?
暫定構成
http://fukure.sakura.ne.jp/wordpress/archives/1168
Peercast がうまくRTMP を受信できなかったので、HTTP で受信できるような構成にしました。
そのために必要なFlazrDumper がLinux でうまく動かなかったので、途中からWindows PC を経由するようにしました。
SimpleScreenRecorder (Linux) |
アプリ | 設定値 |
---|---|
SimpleScreenRecorder | rtmp://192.168.0.4/live/livestream |
FlazrDumper | rtmp://localhost/live/livestream |
PeercastStation | http://localhost:8888/ |