第6回 Linux + Che-ez! SPY(Z)でストリーミング配信(ソフトウェア編)
2002/8/13作成
2003/1/30更新
思いがけず前後編になってしまったこのコンテンツ。
ソフトウェア編で続きをさせてもらいます。
今回ProducerとServerを同じマシンにインストールしましたが、別々にすることも可能です。
一番はじめに動作確認が取れた時はRealServerとRealProducerだったのですが、いつの間にかHelixに変わっていました。
HelixServerは問題なく動作してくれたのですが、HelixProducerはRealProducerからかなりの変更が加えられたみたいでなかなかうまいこと動いてくれませんでした。
その後、bt878チップのビデオキャプチャボードが手に入ったのでこれで試したらちゃんと動きました。
どうもコマンドが間違っていたようです。そこは直してあります。
1.RealNetworks
ストリーミング配信をする方法はいくつかあります。
WindowsMediaによる方法と、QuickTimeによる方法、Realによる方法が一般的です。
WindowsMediaやQuickTimeなどは機種依存な感じがするので今回はRealを選択しました。
Realで配信するためには2つのソフトが必要です。
HelixUniversalServer Realコンテンツを配信するためのサーバソフトウェア HelixProducer Realコンテンツを作成するツール。取り込んだソースをリアルタイムでエンコードする
二つともRealNetworksのサイトにあるので取ってきましょう。
ソフトを入手するためには英語でいろいろ聞かれますが、よくわかんないので適当に答えてあげましょう。
ちなみにIE6.0を使っていると、うまくダウンロードページにいけないようです。英語でセキュリティ優先権を解除してからアクセスするようにとかかれてありましたが、よくわからないのでネスケでダウンロードすることにしました。
HelixUniversalBasicServerは以下の質問をされます。質問内容はよくわかんないです。
とにかくわけのわかんない質問ばっかりです。
Operating System 今回はLinuxを選択します。 First Name なまえ Last Name 名字 Company 会社名、個人なので適当に答えておきます Title よくわかんないです。これも適当に。 E-mail Address メールアドレスです。ここにライセンスが送られてきます。 Work Phone 会社の電話番号です Address Line1 たぶんこれも電話番号だとおもいます。 Address Line2 FAX番号か何かでしょう City 住所のようです。よくわかんないのでJapanと入れました。 State/Province ここは無視します。 Country Japanを選択しましょう。 Zip/Postal Code 郵便番号・住所です Web Site URL サイトのURLです In order to better serve you, please describe
your application, intended project,
and any particular questions:よくわからない質問でした。
用途を聞いているみたいなので適当に答えます。What is your timeframe to deploy
streaming multimedia to your web site?これもよくわからない質問です。
サーバ構築のタイムリミットを聞いているような気がします。Do you currently have a budget to support
a streaming media purchase?これもよくわかりません。選択なので適当なのを選びましょう。 What type of Internet connection do you have? 線の太さを聞かれているので近いのを選択します。 Which term best describes your organization? 業種を聞かれているようです。 Which category best describes your organization? 仕事の内容を聞いているんだと思います。
多少嘘や間違いがあっても問題ないのでとりあえず入手するために全部埋めましょう。
ダウンロードしたファイルはrs900-linux-22libc6-ia32.binです。
HelixProducerをダウンロードする時は、以下の内容を聞かれます。
こっちは簡単な質問です。
入力してDownloadを押すとサイトが表示されます。近いところで大阪を選んでおきましょう。
First Name 名前 Last Name 名字 Company Name(Optional) 会社名。回答は任意です。 メールアドレスです Country 国名、日本と答えてあげましょう Select Platform/Version Linux版ですね。 How many people do you expect will be
simultaneously experiencing your media?よくわからんので適当に25くらいで
答えておきますWhat industry would you classify your
organization in?お仕事の内容を聞かれているようなので
これも適当に答えてあげましょう。What do you use streaming audio/video for? 目的を聞いているようです。 Why are you downloading the Basic version
instead of the Plus version?なんで無料版を使うのかを聞いているようです。 Please notify me about news, updates and offers
regarding RealSystem content creation and server products.チェックを入れておくとメールが送られてきます。
ダウンロードされたファイルはhelix_producer_basic_9_linux.binでした。
2.HelixUniversalBasicServerのインストール
RealNetworksでアンケートに答えるとHelixServerとライセンスキーが入手できると思います。
HelixServerはダウンロード。ライセンスはアンケートに書いたメールアドレスにメールで届いていると思います。
ライセンスはあとで使うので大事に取っておきましょう。
HelixServerを適当なディレクトリに移動させます。
HelixServerのパッケージは実行形式のファイルなのですが、パーミッションで実行が付いていないので実行を追加してさっそく実行してみましょう。
# mkdir /usr/local/realserver
# mv rs900-linux-20-libc6-i386.bin /usr/local/realserver/
# cd /usr/local/realserver
# chmod 755 rs900-linux-20-libc6-i386.bin
# ./rs900-linux-20-libc6-i386.bin
実行するといろいろ聞かれます。重要なのは
(1) ライセンスについて
(2) realのユーザ名とパスワード
(3) ポート番号
(4) インストール先
ライセンスはあとで設定するのでここでは無視しておきます。
ユーザ名とパスワードはreal配信をさせるときに重要になりますので、忘れないようにしましょう。
具体的にはHelixProducerの起動時に使います。面倒なのでここでは仮にhelixadmin/helixadminということにしておきます。
ポート番号はデフォルトでいいと思います。意図的に変えることもできます。
pnm 7070 pnmプロトコルでの通信 rtsp 554 rtspでの通信 http 80 httpでの通信 mms 1755 mmsでの通信 admin ランダム 管理用サイトのポート番号
インストール先はお好みにあわせて好きなところに入れてください。
仕上げにライセンスです。
メールで送られてきたライセンスをHelixServerを入れたディレクトリのLicenseディレクトリに入れます。
私は/usr/local/realserverにHelixServerを入れたので/usr/local/realserver/Licenseになります。
ところでこのライセンスですがzip形式で圧縮されていますが、ひょっとしたらうまいこと解凍できないかもしれません。
そういうときはzcatを使ってリダイレクトしてあげるといいと思います。
# mv RNKey-Helix_Universal_Server-xxxxxxxxx.zip /usr/local/realserver/License
# cd /usr/local/realserver/License
# zcat RNKey-Helix_Universal_Server-xxxxxxxxx.zip > RNKey-Helix_Universal_Server-xxxxxxxxx
xxxxxxxxxは任意の数字が入ります。
あとは起動してみましょう。
# cd /usr/local/realserver
# ./Bin/rmserver ./rmserver.cfg &
ps axするとすごい数のHelixServerが立ち上がっていることでしょう。
3.HelixProducerのインストール
続いてHelixProducerのインストールです。
HelixServerと同じく適当なディレクトリに移動させます。
こちらもパーミッションで実行が付いていないので実行を追加してさっそく実行してみましょう。
# mkdir /usr/local/realserver
# mv rs900-linux-20-libc6-i386.bin /usr/local/realserver/
# cd /usr/local/realserver
# chmod 755 helix_producer_basic_9_linux.bin
# ./helix_producer_basic_9_linux.bin
インストール方法をいきなり聞かれます。
面倒なのでexpressを選択します。
expressを選択すると、自動的に/usr/local/realnetworks/producerにバイナリが展開されます。
その後、ライセンスが表示されます。飛ばしたいところですが、中断できないので最後まで読みましょう。
ライセンスに同意するか聞かれるのでここでyesを選択。
以上でインストールは完了です。
4.ポートの開放とhostsの解決
RedHatの場合、ポートがガチガチに閉じられているので、HelixServerで通信するためにはポートを開放する必要があります。
上記で書いた。pnm,rtsp,mms,adminのポートをあけるためには/etc/sysconfig/ipchainsに変更を加えます。
# cd /etc/sysconfig
# vi ipchains
以下の10行くらいを加えておきます。たぶんよけいなのも入っていると思います。
なお、ポートの開放は自己責任の範囲で行ってください。
-A input -s 0/0 -d 0/0 7070 -p tcp -y -j ACCEPT
-A input -s 0/0 -d 0/0 554 -p tcp -y -j ACCEPT
-A input -s 0/0 -d 0/0 1755 -p tcp -y -j ACCEPT
-A input -s 0/0 -d 0/0 4040 -p tcp -y -j ACCEPT
-A input -s 0/0 -d 0/0 xxxxx -p tcp -y -j ACCEPT
-A input -s 0/0 -d 0/0 7070 -p udp -y -j ACCEPT
-A input -s 0/0 -d 0/0 554 -p udp -y -j ACCEPT
-A input -s 0/0 -d 0/0 1755 -p udp -y -j ACCEPT
-A input -s 0/0 -d 0/0 4040 -p udp -y -j ACCEPT
-A input -s 0/0 -d 0/0 xxxxx -p udp -y -j ACCEPT
xxxxxはadminポートの置き換えてください。
4040は書いてないのですが、ProducerとServer間の通信を4040でやっているのでこれも空けておくことにします。
編集が終わったら再起動してください。
ipchainsコマンドで直接追加してもいいです。
続いてhostsファイルの編集です。
これはProducerが必要としている情報です。
Producer起動時にServerのホスト名を書きますが、このホスト名からIPアドレスが解決できるようになっていなければいけません。
1台のPCでProducerとServerの両方を立てる場合でも必要になります。
# /etc/hosts
127.0.0.1 localhost
192.168.0.xxx realserver
5.起動
準備ができたので起動しましょう。
まずはServerから起動します。
# cd /usr/local/realserver
# ./Bin/rmserver rmserver.cfg &
さっきの手順どおりです。
ps axで確認すると30個くらいプロセスが立ち上がっています。
次はHelixProducerを起動します。
# producer -ac /dev/audio -ap 0 -vc /dev/video0 -vp 0 -sg realadmin:realadmin@realserver:4040/test.rm
acはオーディオのデバイス、apはオーディオのポートです。詳しくはマニュアルに付いていますが、ポートの0はマイク入力、1はライン入力です。
vcはビデオデバイスです。ハードウェア編でインストールが完了すると/dev/video0がChe-ez!になっているのでここで指定しています。
ビデオポートというのは、普通のキャプチャボードの場合、コンポジットとS端子が付いていたときなどに使い分けるのに使うようです。今回はUSBカメラなので気にせず0を指定します。
ちなみにproducer -hで簡易版のhelpが、producer -mで詳細なマニュアルが表示されるようになります。
6.アクセス
Producerがうまく立ち上がったらさっそくRealPlayerでアクセスしてみます。
ポートを空けたはずなのでpnmもrstpも使えるようになっているはずです。
RealのホームページからPlayerをダウンロードしてインストールしましょう。
インストールしたらアドレスバーに次のように入力します。
pnm://realserver/encoder/test.rm
リアルタイム配信の場合、デフォルトでは/encoderにストリーミングファイルがマウントされます。
管理用のサイトで変更も可能なので気に入らない場合は変更してください。
OKだったらrstpでも試してみましょう。
pnmよりもrstpの方が気持ち速めだと思います。
後日談(03/01/30更新)
bt878チップ搭載のキャプチャカードを入手できたので、これでも試してみました。
バージョンはRedhatが8.0になってカーネルのバージョンも変わってしまいましたが。あと、ipchainsじゃなくiptablesに変わってますね。
んで、動作ですが噂どおりですごい安定して動きます。
あとproducerも動きました。コマンド間違ってたようです。
<参考文献>
Software Design 2002/7月号 Linuxで楽しむストリーミング
Real.com(日本語サイト)
RealNetworks
ZDNet Linux How-To ADSLを利用したストリーミングサーバ構築(前編)
ZDNet Linux How-To ADSLを利用したストリーミングサーバ構築(後編)