stream.mを使ってwebmフォーマットのライブストリーミング 1
chakemiです。
本日は、オープンソースのstream.mを使ってwebmフォーマットのライブストリーミングを行なってみました。
stream.mはGPL V3のオープンソースで、HTML5のビデオタグとGoogleのwebmビデオフォーマットを使用して、ブラウザにライブストリーミング配信を可能とするソリューションだそうです。 実際には、webmフォーマットへの変換にはffmpegを使用して、stream.mへpostしstream.mによってストリーミング配信されているようです。
構築環境
- WindowsXP SP3
- vlc media player
- FFmpeg git-N-29196-ge61b83d
stream.mはJAVAで書かれていて、WindowsでもLinuxでも動かせたので、FFmpegを一から準備するのが億劫で今回はWindowsで試してみました。 エンコードで肝心な部分はlibvpxを使用する点で、FFmpegと言えばこの方、あべちんさんのサイトよりバイナリを頂戴致しました。 お気に入りの動画を携帯で見よう
zipを解凍しましたら、「server.conf.sample」をエディタで開き、配信に使用するポート、ストリーム名、パスワード、同時接続数を指定し、ファイル名を「server.conf」に変更して保存します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
今回はデフォルトのまま使用しました。
準備が出来たら、コマンドプロンプトからサーバを起動。
1 2 |
|
次にライブエンコード部分ですが、FFmpegからwebmへエンコード出来る形式ならファイルでもデバイスでもソースに出来そうです。
せっかくのライブストリームなので、例にならってwebカムのソースを配信してみました。 まず、vlc Media Playerで音声のみストリーム変換を行ないます。
1
|
|
次に、FFmpegでwebカムの映像とvlcからオーディオストリームをソースにして、webmへ変換→stream.mへpostします。
1
|
|
FFmpegのエンコードが無事開始されたら、stream.m側で「Segment found」と表示されると思います。
これで配信が開始出来ました。
ブラウザから「http://localhost:8080/consume/first」へアクセスすると、下のように確認ができます。
実際にHTML5で記述する際は、下記のように書きます。
1
|
|
また、stream.mには管理コンソール機能があります。 ダウンロードしたパッケージ内にconsole.zipが同梱されているので解凍し、
ブラウザから「http://127.0.0.1:8080/console/client.html」へアクセスします。
設定したストリーム名とパスワードを入力し、ログインすると下のようにBandwidthや接続数が確認出来ます。
実際に配信してみましたが、バッファリング毎にノイズだけ発生しているような感じで、vlcのバージョンが古いのが原因かと思いましたが、突き詰められてません。
ビデオソースもデバイスから入力しようと思ったら、FFmpegではvfwしか選択肢無いし、、、 rtmpのストリームを食わせられるんじゃないかとも思うので、空いた時間に少し試してみたいと思います。