simplescreenrecorder rtmp

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)
-> C++ RTMP Server (Linux)
-> PeerCastStation (Linux)
-> Internet

上記が目標とする構成で、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
$ svn co --username anonymous --password "" https://svn.rtmpd.com/crtmpserver/trunk crtmpserver
$ cd crtmpserver/builders/cmake/
$ ./run

もしくは、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
[flv @ 0x7f40080008c0] Stream discovered after head already parsed

動作確認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 -Pmono のプロセスがリッスンしているポート番号を指定します。

「リレー」ページの「配信」ボタンを押下します。

項目 設定値
ソース 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)
-> FlazrDumper (Windiows)
-> PeerCastStation (Windows)
-> Internet
アプリ 設定値
SimpleScreenRecorder rtmp://192.168.0.4/live/livestream
FlazrDumper rtmp://localhost/live/livestream
PeercastStation http://localhost:8888/

screencast linux desktop