実践Linux
CentOS5/6.5 CentOS5/6.5 目次へ TOP(HOME)へ
ストリーミング(動画配信)サーバー
Helix server Basic Linux版 (CentOS5) 2009年8月
ここでは配信サーバーはLinux、エンコーダはカメラが扱いやすいWindowsを使うことにする。
●CentOS5ストリーミング配信サーバー(Helix server Basic Linux版 2009/08現在)
ダウンロード
http://www.jp.realnetworks.comよりBasic版(Helix server-Basic 無料、1年使用可)
@最初はOSの選択と個人データの記入
(@、Aは最初にsubmitボタンを押してみると必須項目がわかる。メールアドレスは正確に。)
Aアンケートへの回答
OSの選択はRedHat Enterprise Linux5を選択。これがCentOS5に対応している。
Bダウンロード(rs1201-ga-linux-rhel5.tar.gz)
インストール
@まず、メールが送られてくる(ライセンスファイルのダウンロードページが指定される)。
ダウンロードページを開いてライセンスキーファイルをダウンロード。
(Vistaではダウンロードできなかったので、Linuxでダウンロード。)
Ars1201-ga-linux-rhel5.binを実行可能ファイルにして、ターミナルより起動。
ライセンスファイルをフルパスで指定→ライセンス確認文が続くが、enterを押していくと最後までながれて、最初にインストールディレクトリの指定(デフォルトでbinファイルと同じディレクトリ)とユーザID/パスワードの入力となる。(ユーザID/パスワードはメモしておく)
Bポートの設定は基本的にデフォルトのまま(enterキー)。
RTSP 554
HTTP 8080 (これだけ8080に変更しておく。80だとWebサーバーと喧嘩する。)
MMS 1755
Admin 26565 (設定で使うのでメモしておく)
これらはrmserver.cfgを編集すれば変更できる。
起動
起動は、# /解凍したディレクトリ/Bin/rmserver /解凍したディレクトリ/rmserver.cfg &
これを、rc.localに書き込んでおく。
サーバーの設定
http://333.333.333.210:26565/admin/index.html (サーバーのIPアドレス:Administratorへのアクセスポート)
上のIDとパスワードを入力。
server setup→ports ここにポート情報がある。
mount points→RealSystem Content→Base Path /解凍したディレクトリ/Contentなど
HTTP delivery /adminなど
Logging&Monitoring→Server Monitor 接続のモニターができる。
ポートの設定(RTSPプロトコルを使う場合)
# iptables -A INPUT -p tcp --dport 554 -d 333.333.333.210 -j ACCEPT
# iptables -A OUTPUT -p tcp --dport 554 -s 333.333.333.210 -j ACCEPT
# iptables -A INPUT -p udp --dport 554 -d 333.333.333.210 -j ACCEPT
# iptables -A OUTPUT -p udp --dport 554 -s 333.333.333.210 -j ACCEPT
●windowsVista エンコーダ
ダウンロード
@Basic版realProducer
http://www.jp.realnetworks.com/よりダウンロード。
アンケートに答える。中程にOSの種類を選ぶ項目がある。
ArealPlayer
http://jp.real.com/より無償版をダウンロード。
エンコーダー(realProducer)の使用方法
画面左(エンコードの入力側)
Input file ファイルを使用する場合
Devices USBカメラなどのデバイスを使用する場合
Audio、Videoのドライバを選択する。必要に応じてSetting。
画面右(エンコード出力側)
●エンコードの設定 Audiencesボタン
●ファイルに出力する場合は、左下の1番目のアイコンで出力先ファイル(.rmファイル)を指定→encodeボタン。
疑似ストリーミング配信をしたい場合は、Outputのスピード設定を下げておかないとエラーが出やすくなるので注意。
正式のストリーミング配信をする場合は、ストリーミング・サーバーのContentフォルダに置いておく。
●ストリーミング・サーバーにストリーミング仮想ファイル(=ライブ)として出力する場合は、左下2番目のアイコン。
Destination name 適当な名前(適当にlive)
Stream name 仮想ファイル名 拡張子はrm(適当にlive.rm)
Broadcast method 「push, Account-Based Login(Helix Server)」
Server address 333.333.333.210
Path(Optional) なにも書かなくてよい。
Port アカウントベースの場合Helix Serverサーバー上のHTTPポートを指定(ここでは8080)。
Transport UDPまたはTCP
Username サーバーへのアクセスID
Password そのパスワード
(これらの設定は、「Templates」で保存しておくとよい。)
これで、encodeボタンを押すとエンコードが開始され、サーバーに仮想ファイル(=ライブ)として出力されていく。
サーバーのLogging&Monitoring→Server Monitorでモニターができる。
ブラウザで見る
●ストリーミング・サーバーを使用する
オンデマンド(エンコードされた.rmファイル《サーバーのContentフォルダに置いておく》を見る)
rtsp://333.333.333.210/test.rm (またはhttp://333.333.333.210:8080/ramgen/test.rm)
但し、後者の場合は新たに8080ポートを開いておかなければいけない。
また後者の場合、Vistaではダウンロード画面になってしまい、realplayerが開かない場合がある。
ライブ(サーバーに連続的に送られているストリーミング仮想ファイルを見る)
rtsp://333.333.333.210/broadcast/live.rm
(またはhttp://333.333.333.210:8080/ramgen/broadcast/live.rm)
ここで、ramgen、broadcastはストリーム・サーバーの仮想ディレクトリ。
●httpサーバーに置いたものを見る
http://www.my-dom.xxx/camera/test.rm
http://www.my-dom.xxx/camera/test.ram(後述)
配信には、rtspプロトコルとhttpプロトコルを使う方法があるが、ストリーミング・サーバーを設置しているならrtspを使う。rtspプロトコルは負荷が少ないし、複雑な使い方ができる。httpの場合は疑似ストリーミングと呼ばれ、ストリーミング・サーバーを置くことが出来ずhttpサーバーから配信しなければならないときに使う。
smilを使うとプレイヤーを多彩に表現することができる
ホームページで見せる
相手にRealPlayerがインストールされていなければならない。(ダウンロードサイトを指示してインストールするように促しておくとよい。)
●ポップアップタイプ(外部でプレイヤーを起動するタイプ)
オンデマンド
<a href="rtsp://333.333.333.210/test.rm">***</a>
ライブ
<a href="rtsp://333.333.333.210/broadcast/live.rm">***</a>
これで、自動的にRealPlayerが起動して一応見ることができるが、 下記の理由で、とりわけhttpサーバーでの配信ではメタファイルを使用するのが普通。
メタファイル(.ram)を利用する
・ストリーム・サーバーの場合、サーバーを隠す。
・本体をダウンロードされないようにする。
・基本的にwebブラウザはhttpで通信するためのソフトなので、webブラウザから直接ストリーミングサーバーにコンテンツを要求するのは奨められない。
・httpサーバーから配信する場合(=htmlコンテンツ・フォルダ内にrmファイルを置かざるをえない場合)、直接<a href="http://www.my-dom.xxx/camera/test.rm">***</a>などとするとキャッシュにダウンロードしてからの再生となってしまう。これを避けるためには、httpサーバーから配信する場合ではメタファイルが必須。
記述例
<a href="video.ram">***</a>
そして、このvideo.ramファイルに次のように書き込んでおく。
オンデマンド rtsp://333.333.333.210/test.rm
httpサーバーから疑似配信する場合 http://www.my-dom.xxx/camera/test.rm
ライブ rtsp://333.333.333.210/broadcast/live.rm
注意 Vistaではダウンロード画面になってしまい、realplayerが開かない。
メタファイルの自動生成
ramgenを使う。
<a href="http://333.333.333.210:8080/ramgen/test.rm">***</a>
(8080は、Helixサーバー設定のHTTPポート値で指定したもの。80なら記入しなくてよい。なお、この場合はHelixサーバーのTCPの8080ポートを開けておく必要がある。)
●エンベッドタイプ(埋め込みタイプ、プラグイン再生タイプ)
メタファイルは、.rpmを使う(拡張子が変わるだけ)。
<!-- ムービー部分(ImageWindow) -->
<object id="RP1" width="320" height="224" classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA">
<param name="src" value="./test.rpm" />
<param name="console" value="Clip1" />
<param name="controls" value="ImageWindow" />
<param name="backgroundcolor" value="black" />
<param name="autostart" value="false" />
<embed name="RP1" src="./test.rpm" type="audio/x-pn-realaudio-plugin" pluginspage="http://jp.real.com/" console="Clip1" controls="ImageWindow" backgroundcolor="black" width="320" height="224" autostart="true" nojava="false"></embed>
</object>
<div class='clearfix'>
<!-- 巻戻しボタン -->
<object id="RP1" width="26" height="26" classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" style="float:left;width:26px;height:26px;">
<param name="src" value="./test.rpm" />
<param name="console" value="Clip1" />
<param name="controls" value="RWCtrl" />
<embed name="RP1" src="./test.rpm" type="audio/x-pn-realaudio-plugin" pluginspage="http://jp.real.com/" console="Clip1" controls="RWCtrl" width="26" height="26" nojava="true"></embed>
</object>
<!-- 再生ボタン -->
<object id="RP1" width="36" height="26" classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" style="float:left;width:36px;height:26px;">
<param name="src" value="./test.rpm" />
<param name="console" value="Clip1" />
<param name="controls" value="PlayButton" />
<embed name="RP1" src="./test.rpm" type="audio/x-pn-realaudio-plugin" pluginspage="http://jp.real.com/" console="Clip1" controls="PlayButton" width="36" height="26" nojava="true"></embed>
</object>
<!-- 停止ボタン -->
<object id="RP1" width="36" height="26" classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" style="float:left;width:36px;height:26px;">
<param name="src" value="./test.rpm" />
<param name="console" value="Clip1" />
<param name="controls" value="StopButton" />
<embed name="RP1" src="./test.rpm" type="audio/x-pn-realaudio-plugin" pluginspage="http://jp.real.com/" console="Clip1" controls="StopButton" width="36" height="26" nojava="true"></embed>
</object>
<!-- 早送りボタン -->
<object id="RP1" width="26" height="26" classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" style="float:left;width:26px;height:26px;">
<param name="src" value="./test.rpm" />
<param name="console" value="Clip1" />
<param name="controls" value="FFCtrl" />
<embed name="RP1" src="./test.rpm" type="audio/x-pn-realaudio-plugin" pluginspage="http://jp.real.com/" console="Clip1" controls="FFCtrl" width="26" height="26" nojava="true"></embed>
</object>
<!-- 再生位置スライドバー -->
<object id="RP1" width="170" height="26" classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" style="float:left;width:170px;height:26px;">
<param name="src" value="./test.rpm" />
<param name="console" value="Clip1" />
<param name="controls" value="PositionSlider" />
<embed name="RP1" src="./test.rpm" type="audio/x-pn-realaudio-plugin" pluginspage="http://jp.real.com/" console="Clip1" controls="PositionSlider" width="120" height="26" nojava="true"></embed>
</object>
<!-- 消音ボタン -->
<object id="RP1" width="26" height="26" classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" style="float:left;width:26px;height:26px;">
<param name="src" value="./test.rpm" />
<param name="console" value="Clip1" />
<param name="controls" value="MuteCtrl" />
<embed name="RP1" src="./test.rpm" type="audio/x-pn-realaudio-plugin" pluginspage="http://jp.real.com/" console="Clip1" controls="MuteCtrl" width="26" height="26" nojava="true"></embed>
</object>
</div>
テストページ 現在サーバーは停止しています
TOP(HOME)へ