巷ではオリンピックなどをTwitterなどで会話しながら視聴するソーシャルビューイングが流行ですが、むしろローカルに保存してある動画ファイルを使ってできないか検討。まぁ、利用シーンは色々あるでしょう。録画したアニメを見る、ホームビデオを見る、ユーザテスト記録ビデオを遠隔協調分析する、etc.、etc.。
検証したビデオチャットのプラットフォーム
- Skype
- iChat
- Hangout (Google+)
動画の送信方法
- ManyCamを使って動画ファイルを仮想Webカメラ入力に見せかける
- 画面共有機能を使う
- iChat Theaterで送信する(iChat)
といった方法を比較検証してみました。ManyCamはWebカメラ映像にリアルタイムにエフェクトをかけたりするソフトですが、映像ソースとして動画ファイルを指定することで再生映像を流すことができます。またiChat Theaterとは、ビデオチャット中に相手映像に動画やPDFファイルをドロップすると画面共有できる機能で、動画の場合は再生映像と音声が相手にそのまま送信されます。
結果としては、
- iChat Theaterはお手軽だし音声も自動ミックスされるが、解像度が低く見るに堪えない
- Webカメラとして送信する場合もやはりあまり解像度が高くならない
- またWebカメラ扱いだと場合によっては左右反転処理が必要
- 画面共有するのが画質的には有利
- ただし画面共有だと動画の音声は送信されないので、別途細工が必要
- Skypeの画面共有はモニタ単位しか共有できない(昔はウインドウ単位できなかったっけ?)
- iChat、Skypeの画面共有はテキストチャットウインドウとの併用ができない
ということで、画質及び使い勝手の面でHangoutが一歩ぬきんでていました。ただし音声をなんとかしないとね、って感じ。Hangoutも全画面表示はできないものの、左サイドにテキストチャット欄を出して併用できたり、他の面子のWebカメラ映像を下部に並べられるなど、レイアウト的にはよく練られています。画面共有単位もウインドウ単位の指定ができるので、無駄がありません。
■動画の音声ストリームを扱う
問題は音声です。当然ローカルではスピーカーから音声が再生されるので、それをマイクが拾えば一応相手にも聞こえます。ただかなり遠くなるので実用的とは言えません。
次に、音声チャットを諦めて、会話はテキストチャットだけということあれば、イヤホン端子とマイク端子をケーブルで直結する手もあります。
ですがやはり、気軽にダベるには音声による会話を並行してしたいところです。ハードウェア的なアプローチとしては、
- 外部にミキサーを用意する
- もう一台のマシンとGoogleアカウントを用意し、そちらからもHangoutに参加する
というのもアリでしょう。
しかしここではなんとかMac一台でホストする方法を検討してみました。今回はSoundflowerという仮想オーディオデバイス生成ツールと、LadioCastという仮想ミキサーツールを用いました。仮想仮想と書いてますが、要は実際には存在しない周辺機器をソフト的にあるように見せかけるツール、とでも思って下さい。今回実験に使用したハードはMacBook Pro 15″ Early 2011とヘッドフォンです。あとマイクとしてLogicoolのWebカメラを使いましたが、これは多分内蔵でも大丈夫でしょう。OSはMountain Lionです。
2020.07.03追記:最新のmacOSではSoundflowerが使えないそうで、BlackHoleというのがいいみたいですね。私自身はまだ試せてませんが参考にリンク貼っておきます。
まず両ソフトをインストールします。Soundflowerのインストールは再起動を要請しませんでしたが、実際には再起動しないと機能しませんでした。インストールすると「Soundflower (2ch)」と「Soundflower (64ch)」という2つの仮想デバイスが生成され、OSのサウンド設定パネルの「出力」「入力」タブにそれぞれ出現します。実のところ64chの意義はあまりよくわかっていませんが、まぁ今回はとにかく2つの仮想オーディオデバイスが増えたと捉えておきます。
まずはここ「出力」タブで「Soundflower (64ch)」を選んでおきます。これで本来はスピーカーから聞こえるはずの動画の再生音がリダイレクトされます。
次にLadioCastを起動します。左の3つが入力系、右の3つが出力系です。入力に「Soundrflower (64ch)」(=動画の音声)とWebカムマイクや内蔵マイク(=自分の声)を選択し、それを「Soundflower(2ch)」に出力するようにします。動画音声とマイク音声のバランスは、それぞれの設定パネル内のスライダーを使って調整できます。次に動画音声だけは自分も聞きたいので、右の二段目「出力Aux 1」に内蔵出力を指定し、入力1パネルの「Aux 1」ボタンを選択した状態しておきます。これで「Soundflower(2ch)」という仮想サウンドデバイスに、動画とこちらのマイクの音声をミックスしたものが流れ、同時に「内蔵出力」には動画音声のみが流れる状態になります。
次にブラウザでGoogle+にログインし、Hangoutの画面右上にある歯車アイコンをクリックして設定画面を呼び出します。ここでは入力ソースとして「Soundflower (2ch)」(動画音声とマイク音声がミックスされたもの)を指定。出力(相手の声)は内蔵出力(スピーカーまたはヘッドフォン)に出すようにセットします。
互いにヘッドフォンを使えば動画や自分の声がエコーバックすることもなくとてもクリアに動画音声と相手の声が聞き取れました。
Darwin Streaming Serverを試す
先日の「Macで手持ち動画ファイルをソーシャルビューイングする」というエントリで書いたHangoutを使う方法は、やはりフレームレートの低さに我慢がならず…