まつけんです。
今回は、新たにリリースされた新機能であるLiveShell PROのRTSPサーバ機能を利用して、Wirecastからの利用方法、Windowsの仮想カメラとして認識させる方法等のRTSPサーバの活用方法をご紹介します。
RTSP対応って何?
とりあえず、今回のRTSP対応って何?というところを簡単に説明しておきます。
RTSPっていうのはプロトコルの名前で、そこのところの詳しくはWikipediaで、という感じではありますが、もう少しユースケース寄りの例をだして簡単に説明をば。
いままでLiveShellといえば、Ustrem, ニコ生, 独自のRTMPサーバへの配信という対応を謳っていましたが、並べているサービスを見ても最後に独自のRTMPサーバと書かれている通り、対応しているプロトコルという観点から見ると、要するにRTMPサーバーへ配信できる、という機能をもっていたことになります。詰まるところ、LiveShellシリーズはRTMPプロトコルに対応したクライアントですので、当然配信にはその配信を受け、実際にエンドユーザにライブ配信を届けるサーバを用意するのは必須ということになります。
という状況の中、実際に販売してからのフィードバックの一部として、
- LiveShellに入力されている映像をiPhone,iPadもしくはPCから直接見たい
- PCの入力として扱いたい(Wirecastなどのソフトの入力ソースにしたい)
というような要望をたくさんいただきました。
そういったご要望にお応えするための対応としての回答が今回のRTSPの対応になります。もうちょっと言葉を正確にすると、RTSPサーバになり、直接クライアントに動画を配信する機能に対応しました、というのが今回のファームウェアアップデートの具体的な内容、ということになります。つまり、視聴できる人数は限られるものの、ライブを視聴するのに、LiveShell PROだけあれば配信ができるようになったわけです。
今回のアップデートの概要や背景はそういうことでして、じゃあ、実際、RTSPサーバを活用する方法ってどんな感じなの?という部分を下記でご紹介していきます。
※ 直接閲覧に関しては、特にこの記事では言及していませんが、こちらのマニュアルを参考にしていただいて、各OS上でプレーヤをインストールしていただき、URLを入れれば再生ができるはずです。Windows, Mac, iOS, Androidに関しては、VLC, GoodPlayer, MX動画プレーヤーを使って実際に動画を視聴できることを確認しています。
Wirecastへの対応
まず、今回のRTSP対応には、映像のみとはなります(VLCなどのプレーヤを使えば音声も受信/再生ができます。)が、IPカメラのAXIS M1104互換の動作をするような実装も含んでいます。そのため、Wirecast Pro, UstreamProducer Studioが対応しているIPカメラをソースとする機能を使って、入力ソースの1つとして認識させることが可能です。そうすることで、複数のLiveShell PROを用意すれば、Wirecast上でLiveShell PROの映像をスイッチングしながら配信といったことも可能となりますし、WirecastにはVirtualCamera機能もありますので、さらに別のソフトへのソースとすることも可能になってくるかと思います。(ただし、台数分の720pのH.264を受信してデコードすることになりますので、そういった複数台のスイッチングはそれなりに高性能なマシンでWirecastを動作させる必要があります。)
LiveShellPROでこの動作をさせる場合はシンプルで、LiveShell PROをRTSP待ち受け状態にし、Wirecast側でソースとしてIPカメラを追加します。そのときに、IPアドレスにLiveShell PROのIPアドレス(RTSPのURLからIPアドレス部分だけを抜き取ってください。)を入力し、カメラの種類を選択のところで、「AXIS M1104」を選択します。そうすると、ソースとして認識され、プレビューが表示されるはずです。
Wirecastを使わずに、Windowsにカメラとして認識させる方法
とこれだけで終わってもあまりおもしろくないというのと、Wirecast Pro, Ustream Producer Studioを用意するのは、$500-$1000程度の費用がかかるのでもうすこし安い方法欲しいよねというような場合もあるかとおもいますので、LiveShell PROをFlash Media Live EncoderやWirecastの入力ソースとして利用できる、もう少し安価な方法を以下でご紹介したいと思います。こうすることで、PCに内蔵されていたりUSBやIEEE1394で接続されたほかのカメラとスイッチしながら、PCで配信するというようなことを実現できます。
さっそく具体的な手順ですが、簡単に箇条書きすると以下のような形になります。
- LiveShell PROをRTSPサーバとしてセットアップし、オンラインにして、RTSP接続の待ち受け状態にします。(詳しくは、マニュアルを参照してください。)
- PCにe2esoftのVCam,VCam VLC plugin, VLCをインストールします。
- VLCにVCam VLC output pluginを認識させ、出力用プラグインとして選択します。
- VCamの入力ソースとして、External Sourceを選択してキャプチャを開始します。
- FMEを起動し、映像の入力ソースとして、e2esoft VCamを選択します。
- これでVCamにLiveShell PROから受信した映像が入力され、キャプチャデバイスとしてVCamが振る舞うため、FMEのソースとして利用できているはずです。
すこし複雑ですが、これが今のところ、試した限りでは一番安定している方法ではないかと思っています。
こういったソフトだと、もうすこしメジャーなWebcamXPやWebcam7などのIPカメラを仮想カメラにしてしまう機能を使えればよかったのですが、どうもH.264/AACだからなのか、ソースとしてうまく認識させられませんでした。RTSP/RTPをうけて、WDMなキャプチャデバイスとして見せられるもっとよいソフトがあれば是非おしえてください。
(追記)ここから —
e2esoft VCAM以外にもvMixという選択肢もあります
上記以外の仮想キャプチャデバイスとして動作するソフトとして、vMixというソフトも問題なく動作するようです。
Free版でもRTSP入力自体は動作するようですので、無料でも始められる分こちらがよいかもしれません。
Add Inputを押して、入力の選択肢のタブから、RTSPを選択肢、URLを下記手順に記載されているのと同様に入力します。設定として、Buffer, Low Latency Mode, TCPの3つがありますが、特にBufferの設定が重要で、できれば800ms程度の値を入力しないと映像が正しくキャプチャできない場合が多かったです。また同様に、Low Latency Modeにチェックを入れてもうまくキャプチャはできないようですのでこちらのチェックも外していただく必要があります。TCPに関しては、チェックのON/OFFどちらでも動作するようですので、環境に合わせて必要であればチェックを入れてください。
こうすると、Inputの一つとして、LiveShell PROがInputとして追加されます。これを選択した状態で、Externalをクリックして有効にすると、キャプチャデバイスとして、vMix Video Deviceというのがあるので、これをFMLEやWirecastの入力として指定すると、映像と音声がキャプチャできるはずです。
こちらのほうが、操作が簡単で、無料なので、e2esoftのVCamよりもオススメかもしれません。e2esoftはVLCを使うので、細かい制御が効きやすく極めて低遅延で受信したいなどの要望がある場合は、VCamのほうが要望にかなうかと思います。
(追記)– ここまで
それでは、それぞれのステップを具体的に解説していきます。
1. LiveShellをRTSPサーバとして利用する
こちらはマニュアルに記載がありますので、そちらを利用してセットアップをおこなってください。RTSPサーバとして起動している状態では、右下のボタンを5回押すと、RTSPサーバとしてのURLが表示されます。この時点ではこのURLをまずはメモしておいてください。VLCなどで、メモしたURLで再生がちゃんとできるかなどを確かめておくとよいかもしれません。
2. e2esoft VCam, VCam VLC output plugin, VLCをインストールします。
肝になるのはこのe2esoft VCam(http://www.e2esoft.cn/vcam/
)です。上記にも挙げたように、ほかにもこういった仮想WebCamのソフトはいくつもあるのですが、こちらで試した限り、RTSP/RTPでH.264/AACをうまく受信してデコードできるようなものが意外に少なく、有料($29)ですが手元ではうまく動いているのでこちらを紹介します。WebcamXPなどがうまく動くかと期待していたのですが、どうも現時点ではうまく動かないようです。
まずは、WaterMarkがついてはしまいますが、Free Trialが可能なのでこちらからダウンロードをして試してみてください。インストール手順などは割愛しますが、そのまま日本語でインストールすると、なかなか奇妙な翻訳にUIがなってしまい、抵抗がなければ英語での利用がよいかもしれません。
$29で買うか、ちょっとお得なセットで、最後に紹介する仮想サウンドカードとセットで買って、$50でシリアルコードを入力すると左上のWaterMarkは表示されなくなります。
3.VLCにVCam VLC Pluginを認識させます
また、同時に、VCam VLC pluginもインストールします。こちらは同梱されているREADMEにも書かれていますが、VLCがインストールされたフォルダー(通常であれば、C:\Program Files (x86)\VideoLAN\VLC\plugins\video_output)に、libvcam_plugin.dllをコピーして、VLCを再起動します。
その後、VLCのツール→設定を選択し、サイドバーからビデオを選びます。設定項目のなかに、出力を選択できるところがダイアログの上部にあるので、デフォルトとなっているものをe2eSoft VCamとして選択をします。
この状態で、VLCのメディア→ネットワークストリームを開くから、さきほどメモしたRTSPアドレスを入力して再生をします。
4.VCamでVLCをExternal Sourceとして取り込みます。
その状態までくると、次はe2esoft VCamを設定します。まずは、VCam側の設定を一部調整します。解像度とFPSをLiveShell PROの設定に合わせます。今回は、光回線/動き有線のプリセットになっているため、解像度を1280×720(16:9)に、FPSを30に設定しました。
その後、e2esoft VCamのSourceから、External Video Sourceを選択します。その状態からStartボタンを押します。そうすると、VCam側にVLCで再生しているのと同じ映像がプレビューされるはずです。
5. FMEを起動して、映像の入力ソースとしてe2eSoft VCamを選択します。
これでLiveShell PROからの映像がFMEに正しく認識されていれば成功です。Wirecastなどを使えばほかのソースとスイッチさせながらつかえるでしょう。
ただ、こういったソフト全般に言えることですが、Webカムなどに比べると、RTSP経由でH.264/AACをデコードした上で、再度メモリ経由でドライバにデータを渡していることになるので、それなりに負荷がかかります。たとえば、手元の環境でためしたところ、Core i5 2500K 3.3GHz程度のデスクトップマシンで、1台のLiveShell PRO(光回線/動き優先)をカメラとして追加して、FMEでUstreamに配信したところ、CPU使用率は30-40%を使うような状況です。実際の利用では高スペックのマシンでの配信をオススメしたいところです。
RTP over RTSPによるNAT越え
また、今回のRTSP対応には、RTP over RTSPの対応の実装も含まれています。そのため、NAT越しに映像を取り込みたいというような場合には、クライアント側でRTP over RTSP(VLC, Wirecastは対応しているようです。)に対応さえしていれば、ルータでポート554番をポートフォワード設定さえしてもらえれば、インターネット越しのアクセスなどにも容易に対応できます。
VLCの場合、「入力/コーデック」→「デマルチプレクサ」→「RTP/RTSP」の「RTPオーバーRTSP(TCP)の使用」を有効にすると、RTP over RTSPが使われるようになり、UDPでの通信ではなく、RTSPの554番だけで通信が完結するようになります。Wirecastは自動的にRTP over RTSPも利用してくれるようです。
これを使えば理論的には遠隔地の複数のカメラを切替ながらWirecastで配信ということも可能になるかとおもいますので、更にバラエティに富んだ配信などにも活用いただけるのではないかと思っています。
今回の手順ではとりあえず映像のみがキャプチャされる形ですが、これに加え、同じe2esoftのVSCという仮想サウンドカードソフトを使えば、VSCを起動した状態で、VLCのサウンド出力をVSCのSpeakerに向け、FME側でVSC Line-inを選択すれば音声も同様にFME側でキャプチャすることができるようになります。すこし手順は複雑ですが、これでLiveShell PROをWebCamと同様にWindowsから扱うことができるようになります。
最後に
以上がRTSPサーバを活用して、さまざまな配信に利用する方法のご紹介になります。
注意点としては、あくまで、通常のUSB接続等のカメラに比べるとどうしても遅延(1秒弱程度)が出てしまう分、用途はすこし狭まりますが、様々な利用方法があるのではないかと考えています。活用方法のアイデアなどありましたら、是非ブログ等で公開いただければ幸いです。
おまけ
ホントは技術ネタを扱うブログですし、なぜRTSP/RTPというプロトコルを選んだか、という長大な文章もこの後書こうかとおもいましたが、あまりも冗長だったので、また機会がありましたらご紹介できればなーとおもっています。
著者プロフィール
![](/wp-content/uploads/2015/12/mat2uken_avatar_1449365237-100x100.png)