←Browsing! Mac OS X

QuickTimeで生中継
QuickTime Broadcasterの使い心地

新居雅行(msyk@msyk.net)
2004年 1月 21日 (水)更新

Appleが開発したマルチメディアシステムのQuickTimeはよく知られていますが、ビデオやサウンドなどのストリーミング配信を行うためのサーバ「QuickTime Streaming Server(QTSS)」もリリースされています。Mac OS X Serverには付属しますが、オープンソースとなっていて同一のソースコードから生成したDarwin Streaming Serverは、Mac OS X、Windows、Linuxなどクロスプラットフォームでの稼働が可能である点も注目されています。

さらに、Mac OS Xで利用できる「QuickTime Broadcaster」というアプリケーションを利用する事で、ビデオや音声を含む生中継ができてしまいます。今回、SNSの月例会で生中継をする機会があったので、いったいどれくらいのものかというあたりのレポートを残しておきます。今後の参考になればと思います。

記録しておいた実際の映像はこちらのページからごらんいただけます。映像そのものの映り具合等については、さほどベストを目指したものではない事をご了承ください。ミーティングに参加しながらの会場中継というところです。

システム構成

生中継をいちばん簡単にする方法は、QTSSが稼働するMacのFireWireポートにカメラを接続する事で、この方法だと、QuickTime Broadcasterを立ち上げてボタンをクリックするだけでOKです。しかし、サーバに直接カメラを接続できるということはあまりないと思われます。通常は、Mac OS Xが稼働するサーバとは異なるマシン上でQuickTime Broadcasterを起動してそこを「中継基地」として利用し、ネットワークを通じてQTSSにいったんキャストし、そのQTSSを通じて多数のクライアントに配信をするというシステム構成になるかと思います。

今回のSNSの月例会では、松伏町で地元のみなさんをオブザーバとして交えて行うということで、PowerBookを持って会場に行き、そこから生中継を行いました。会場は、町で行っているパソコン関連のセミナーなどでも使っているような場所なので、ADSL回線が入っていたため、その意味では通信環境は申し分ありません。全体的には次のようなシステム構成になっています。細かな設定もまとめておきます。

QuickTime Broadcaster利用環境
  • 本体:PowerBook G4 12"(初期マシンでスペックはCPU 867MHz、メモリ512MB、ハードディスク40GB)
  • OS:Mac OS X 10.3.2(QuickTime 6.5をインストール)
  • QuickTime Broadcaster 1.0
  • カメラ:iSight(内蔵のFireWireポート接続)
  • ネットワーク:Ethernetポートから施設のLANへ(施設からはADSL回線で接続)

QTSS利用環境
  • 本体:Power Mac G4(ミラードドライブ、CPUは1.25GHzシングル、メモリ512MB、ハードディスク60GB、NICを追加)
  • OS:Mac OS X Server 10.3.2
  • QuickTime Streaming Server 5.0.1
  • ネットワーク:内蔵EthernetポートからB・フレッツに接続、プロバイダはアニーインターネット、PPPoEを利用する接続だが固定IPアドレスを取得しそれを利用

QTSSサーバの設定

以下、画面ショットはクリックする事で別のウインドウに原寸表示させることができます。

QTSSの設定にいたるサーバの設定等もありますが、ともかくB・フレッツで外部から接続できるようになっています。QTSSのドキュメントファイルは既定値から別の場所に移動していますが、それ以外では、QuickTime Broadcasterからキャストを受け付けるように設定をする必要があります。サーバ設定の「QuickTimeストリーミング」の設定にある「アクセス」のタブで、「受信ブロードキャストを受け付ける」のチェックをオンにします。そして「パスワード設定」ボタンをクリックするとシートが出てきますので、ブロードキャストする側で入力するユーザ名とパスワードを入力します。このユーザ名は、誰も彼もが勝手に生中継されないようにするためのものと考えればいいわけです。Mac OS X Serverに登録してあるユーザとの連動はできず、ここで設定・登録したユーザ名は、キャストのためだけのものです。名前もパスワードも自由でかまいませんが、もちろん、忘れないようにそれなりの対処は必要です。

また、QTSSは80番ポートを使ってのストリーミングにしています。「IPバインド」のチェックを入れるだけで済むので、その点は楽です。ただし、同じサーバでそのままWebサーバを動かせないのですが、私が対外的に使っているWebサーバは別にあり、このサーバは異なるポートでWebのサービスをしています。デフォルトでは554番ポートですが、以前からストリーミングをやりながら様子を見たところ、やはり80番でやる方が「見えない」とかいったクレームは圧倒的に少なくなっています。経験的に言えば、80番ポートを使うのが無難であると言えます。

QuickTime Broadcasterの設定

生中継の送り出しを行うQuickTime Broadcasterは、QuickTimeのエンコードの細かな設定ができるので、設定ポイントはたくさんありますが、今回はおおむねデフォルトで設定をしました。次回に生中継する機会があればまた検討するとして今回はこれでやったという記録です。

オーディオについては、プリセットで言えば「DSL/Cable-Speech」の設定を使いました。ただ、そうするとマイクは内蔵のものを使うので、入力減としてiSightを選択しました。実際に中継しているときは、「スピーカで再生」はオフにしています。オプションなどはそのままですから、MPEG-4で16ビットモノラル、32kHzのサンプリングレートで、ビットレートは32kbpsとなっています。なお、ここの設定だけでなく、システム環境設定の「サウンド」で、入力装置のゲイン必ず調整しましょう。Macの入力装置は内蔵もiSightもちょっと小さ目な感じがします。ゲインを最大にしてもちょっと小さいなと思う感じになります。ましてや、会場でマイク等を使うとは言え、音って思ったほどクリアには入りませんので、ゲインを最大にしても音が割れることはなかったです。このあたりは現場で注意するところの最大のポイントでもあります。

ビデオの設定ですが、こちらはプリセットの「DSL/Cable-Hight Motion」にしました。MPEG-4で毎秒10フレーム、サイズは240×180となっています。ビデオについては、撮影結果を見ていただければ分かりますが、ズーム等ができないとなるとこうしたイベント映像は雰囲気が分かる程度です。たとえば、プレゼンテーション画面を見れるくらいとなると、もっと解像度を上げないといけませんが、一方、講演の中継なら、動きがぎくしゃくしていてもいいのではないかと思われます。たとえば、640×480で、毎秒2フレームくらいでもいいという気がします。その辺りは次回の課題でしょう。

ネットワークの設定は、まず、転送のところで「自動ユニキャスト(アナウンス)」を選択します。サーバのアドレスなどを設定します。ユーザ名とパスワードは、サーバ設定アプリケーションで追加したユーザ名とパスワードを入れておきます。「TCPを介したブロードキャスト」はオフでもいいのですが、経験上、オンにしておくのがいいようです。オフにすると、落ちる機会が増えるような気がします。また、オフにするということはUDPを使うということなので、インターネットの経路をUDPで搬送します。UDPを何らかのフィルタにかけているようなところはあちらこちらにある模様であり、しかもその実態はつかめないのが難点です。遠方との確実なやりとりをしたいのなら、UDPではなくTCPにするのが無難でもあります。さらに「バッファ遅延」という数値が設定できますが、これによって中継と配信のディレイを調整できるとのかと思ったらどうも違うようです。

なお、左側にある「場所」というところのURLをみなさんに教えてあげて、QuickTime Playerで見てもらうというのがいちおう基本です。あとは「ブロードキャスト」ボタンをクリックすると、中継が始まります。

実際に生中継をやってみて

もともとQTSSは使っていたので、ともかく生中継するのはいたって簡単でしたが、連続して滞りなくできるかという点については不安でもありました。ただ、何時間もテストランとかしても落ちなかったのですが、本番中、1度、接続が切れてストリーミングを中断するという事態になりました。あと、別のときに後少しで終わるというあたりでなぜかビデオ側が静止画になりました。切断したときは、QuickTime Broadcaster側に「接続エラー」を示すシートが出てブロードキャストを止めた訳で、慌てて再度始めましたが、中継を見ている人は改めてURLを指定して開き直すか、あるいはコントロールで再度プレイしてみるなどの処置をしなければ復帰しません。切断はどうしても見ている人たちに「手作業」を強いるのでなるべくないようにしたいなと思っていましたが、やはり3時間の間に1、2回は起こってしまったということです。

こればっかりは仕方ないとは言え、やはり、そうなったときの対処をきちんとしておくということが必要かと思いました。また、落ちないためには中継機器の休憩も必要でしょう(笑)。ということで、休憩に入る前に「しばらく中継を中断します」みたいな文言を書いた紙を用意してそれを見せてから切るなどの準備も必要だったかと思います。

なお、月例会の遠隔地への参加者からは「QTSSは良いですね。映像も音声も完璧でした。Realとは比べ物にならないです」との感想もいただいています。

実際の統計情報ですが、イベント終了時に慌てて「サーバ管理」で参照できるものを画面ショットしておいたものを示します。良く考えたら、グラフをデスクトップにドラッグ&ドロップするのでよかったんですが、慌てていて、すっかり忘れていました(笑)。

QTSSの平均接続数はこんなものです。時間時のまんなかあたりで0人になっているあたりが、イベント開催直前です。最大で6人くらいですので、負荷的にはたいした事はないという感じです。

次は、QTSSのスループットです。ピーク時で700Kbpsくらいですが、1つのコネクションで150〜200kbpsくらいだったので、おおむね計算とおりでしょう。

CPUの利用率はこんなところです、数人程度なら、さほどCPUの負荷は取られないようです。ちなみに今回のシステムでいちばんCPU負荷を必要とするのは、QuickTime Broadcasterを動かすマシンで、こちらは常時30〜50%くらいのCPU負荷になっています。リアルタイムでエンコーディングしていることになるのでそれもうなずけます。

一方、ネットワークのトラフィックはこんな感じで、ちょっと不思議なのですが、増減がありません。キャストを受け付けているとこういう状態になるのかもしれませんが、別の機会で改めてチェックをしてみたいと思います。

その他のこと

QuickTimeで見てもらう場合、Macについてはおそらくほとんどのユーザがシステムにインストールされているかと思いますが、やはりエンコードの問題があるので、最新版にしてもらうことをともかくお願いするしかありません。今回も、QuickTime 5ではうまく参照できなかったと報告をいただいています。

一方、Windowsのみなさんには、タダですからということで、ともかくインストールをしてもらわないといけません。なお、インストール途中で名前やシリアル番号を入れるところもあって一瞬ひるむのですが、そこは無視してもらって進んでもインストールは可能です。

なお、RTSP、MPEG-4という標準規格を使っているにもかかわらず、RealOne Player無償版では受信ができません。映像は見えるのですが、音声がだめです。QuickTime側でどんな設定をやっても、Real側は「QuickTimeの音声」と認識しそのデコーダは用意されていないようです。

視聴者へ依頼する事

現在のQuickTimeは、ほとんど設定なしにストリーミングは利用できるようにはなっていますが、それでも「接続速度」の設定を必ず変更してもらいましょう。クライアント側のこの設定をサーバは認識しますので、せっかくブロードバンドで接続していてもモデム並みの低速で配信してしまう結果になります。デフォルトはモデムになっているので、設定としては要注意なところです。

Mac OS Xだとシステム環境設定のQuickTimeの「接続」タブに「接続速度」のポップアップメニューがありますので、回線に合わせた適切なものを選択します。

Windowsの場合は、コントロールパネルにあるQuickTimeでドロップダウンリストから「接続速度」を選びます。なお、この設定はインストール時にも行うようになっていますが、適当にはしょる人も多いのかもしれません。

録画

QuickTime Broadcasterは、中継をしながらディスクにムービーを録画できます。送り出すエンコードそのままのムービーを作るので、単に通信回線で送っている内容をファイルにするだけですが、ディスク記録しているからといって不安定になることはないようで、これは便利な機能です。ファイル名やフォルダなどは環境設定で設定できますが、たとえば、mymovieというファイル名ならmymovie1、mymovie2などと順次数字をつけてファイル保存を行うので、キャストを止めて再開しても前のファイルが消されるということはありません。このあたりはうまく動いてくれます。また、ファイルのサイズも、1時間ほどで150MBくらいですので、たいした事はありません。当然、ストリーミング可能な圧縮がかかっているので、すでにデータは小さくなっています。もちろん、このサイズはエンコードの形式によって違ってくるはずです。

ビデオ編集

後からのビデオ編集ですが、すでにかなり画質を落とした状態のムービーなので、あまりいろいろいじりたくはないと考えました。そこで、QuickTime Playerの機能だけを使ってともかくトリミングだけをするという方針にしました。ここでまずひっかかったのがヒントです。ストリーミングに使ったデータなので、ムービーにはもとからヒントがありますから安心していたら、トリミングをしたらヒントトラックも作り直す必要があるということがありました。トラックを消して作るまではしなくても、別名を保存の機能を使って、ムービーからヒントムービーに変換して保存するという作業をしなければなりません。

さらに、テキストのトラックがあると、ストリーミングがうまくいきません。テキストのトラックはストリーミングをしても画面に出てきませんし、それに引き続くビデオ映像がむちゃくちゃになります。これはバグなのでしょうか? いちおう、テキストトラックもストリーミングができるようなことがドキュメントには書いてあります。で、どうしてもテキストを入れたかった(中継が中断したときの言い訳)ので、結果的にいったんDVストリームに落として、それを改めてMPEG-4にエンコードしました。DVストリームにすると、ビデオと映像が合成されるという感じです。ちょっと画質も荒れていますが、もともとさほどクリアでなかったので、それで妥協です。

もっとも、最初からここまで画質が荒れているのなら、もはやクオリティを論じるところでもないのかもしれません。


QuickTimeはMacとOSを購入する意外にはほとんど直接的な経費がかからないというのがある意味特徴ではないかと思います。安いかどうかはさておき、すでにMacでサーバをたててれば、QTSSを動かすだけです。Macのサーバがなくても、LinuxのサーバでQTSSを運用すればいいでしょう。ただ、生中継をするには、ここで説明したような設定ユーティリティは使えないので、少し手間はかかりますが、素材としては利用可能です。

最後に、助言や感想、あるいは利用の場を与えていただいたSOHOネットワーク埼玉の関係者の皆さんにお礼を申し上げます。