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/ |

