Macで手持ち動画ファイルをソーシャルビューイングする

巷ではオリンピックなどを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つの仮想オーディオデバイスが増えたと捉えておきます。

soundflower1

まずはここ「出力」タブで「Soundflower (64ch)」を選んでおきます。これで本来はスピーカーから聞こえるはずの動画の再生音がリダイレクトされます。

次にLadioCastを起動します。左の3つが入力系、右の3つが出力系です。入力に「Soundrflower (64ch)」(=動画の音声)とWebカムマイクや内蔵マイク(=自分の声)を選択し、それを「Soundflower(2ch)」に出力するようにします。動画音声とマイク音声のバランスは、それぞれの設定パネル内のスライダーを使って調整できます。次に動画音声だけは自分も聞きたいので、右の二段目「出力Aux 1」に内蔵出力を指定し、入力1パネルの「Aux 1」ボタンを選択した状態しておきます。これで「Soundflower(2ch)」という仮想サウンドデバイスに、動画とこちらのマイクの音声をミックスしたものが流れ、同時に「内蔵出力」には動画音声のみが流れる状態になります。

LadioCast_fig

次にブラウザでGoogle+にログインし、Hangoutの画面右上にある歯車アイコンをクリックして設定画面を呼び出します。ここでは入力ソースとして「Soundflower (2ch)」(動画音声とマイク音声がミックスされたもの)を指定。出力(相手の声)は内蔵出力(スピーカーまたはヘッドフォン)に出すようにセットします。

hangoutsetting

 

互いにヘッドフォンを使えば動画や自分の声がエコーバックすることもなくとてもクリアに動画音声と相手の声が聞き取れました。

外付けキーボードでFnキーを使えるようにするTips

Mac OS X Mountain LionでiOSのような音声入力ができるようになりましたが、デフォルトのトリガキーはFnキーの二回押しになっています。普段連打なんてしなさそうなキーなのでアリなんですが、MacBookをクラムシェルモードなどにして外付けの、しかもWindows用キーボードを使ってる場合、Fnキー自体が存在しません。さて困った。

dect_setting

OS側でできる回避策としては、上記のようにCommandキーにアサインし直すことが可能です。右Commandキーなんて普段使ってないのでまぁそれでも良かったんですが、なんかもうFnで覚えちゃったので悔しい。なんとか外付けキーボードからFnキー相当のキー入力はできないものか?

キーを眺めてみると、ちょうど良い位置に使ってないキーがありました。我が家のREALFORCEでは右ALTと右Ctrlの間。アプリケーションキーというようです(名前すら知らなかったw)。

SDIM0329

名前さえわかってしまえば、PCKeyboardHackなりKeyRemap4MacBookなりでキーコード調べてアサインしてやれば、、、と思ったら最初からKeyRemap4MacBookに設定項目が存在してました。これをチェックするだけです。

keyremap4macbook

 

 

関連記事:MacBook Proのキーボード周り環境整備覚え書き

iPadの「ビデオ」アプリが起動しない(真っ黒)時の覚え書き

実家のiPad2に動画ファイルを同期させたところ、「ビデオ」アプリが起動しなくなってしまいました。起動すると画面が真っ黒のまま何も表示されない状態です。アプリやOSの再起動をしてもダメ。

ググると結構同じ現象は出ているようで、日本のAppleのディスカッションボードに「一般」->「リセット」->「すべての設定をリセット」をしたら直った、という報告がされており、皆それにならって解決しているようでした(あるいは復元)。

がしかし、面倒だったのでもう少しあがいてみたところ、iTunesで一旦ビデオの同期設定をオフにして同期したところ、iPadの「ビデオ」アプリが起動。再度同期して全く同じ動画ファイルを再コピーしたところ問題なく使えるように戻しました。

設定リセットや復元よりは簡単なので、まずはこちらを試してみるのがよいかと。

Lion ServerでiChatサーバーを設置する

ちょっと必要があってLion Server上にプライベートなチャットサービスを立ち上げるべく、iChatサーバーの設定に挑戦しました。

Lion ServerのiChatサービスには基本的にほとんど設定の余地はなく、

  • 他のサーバーと連携するか(する場合はドメイン指定)
  • チャットログを保存するか

しかありません。ぶっちゃけスイッチをONにするだけで起動します。

ただしウチ限定の現象かも知れませんがハマったので覚え書き。

■ポート開放

ルーターで開放(Lion Serverにリダイレクト)する必要があるポートは、

ポート番号 プロトコル 備考
5222 TCP チャット
5223 TCP チャット(SSL)
7777 TCP ファイル送受信
5678 UDP  
16384-16403 UDP ビデオチャット

という感じでした。この辺りを見ると他にもあるっぽいですが、とりあえずウチでは上記のみで一通り使えてる気がします。全クライアントにSSL利用を強制できるなら5222は開けなくてもいいかも。サーバー間連携を使う場合は5269(TCP)とかも必要でしょう。またウチのルーターはポート番号を範囲指定できす、ビデオチャット用のポートを全て個別に指定することはできず、欄がある限りで16384-16390のみ開放していますが、これもいまのところ問題なさげです。同時利用者数が増えたりすると足りなくなるのかも知れません。

■認証が通らない

次にハマったのが認証で蹴られてログインできない現象。「サーバー」アプリの「ログ」でiChatのサービスログをみると、

Jul 12 20:25:55 jabberd/c2s[52503]: SASL callback for non-existing host: hoge.com

というエラーが記録されています。どうも、アカウント名として、ホスト名無しの「ユーザ名@ドメイン名」形式は標準では受け付けないようです。「ユーザ名@ホスト名.ドメイン名」なら問題ないんですが、ウチの場合Lion Serverを外向けDNSに登録してなかったし、無駄にアドレスが長くなるし、ということで、こちらを参考に設定ファイルを直接書き換えました。

/etc/jabberd/sm.xml:

<local>
        <!– Who we identify ourselves as.
         Users will have this as the domain part of their JID.
         If you want your server to be accessible from other
         Jabber servers, this IDs must be FQDN resolvable by DNSes.
         If not set, the SM id is used. –>
        <id><myserver>.<mydomain>.com</id>

/etc/jabberd/c2s.xml:

<id require-starttls="true" pemfile="/etc/certificates/frontier.orange-road.com.947515504262B5757AB90D084DF 652A0EA8E0B76.concat.pem" private-key-password="C4D239B3-87B9-4F58-9D3E-541587EFD7EF" cachain="/etc/certificates/frontier.orange-road.com.947515504262B5757AB90D084DF 652A0EA8E0B76.chain.pem"><myserver>.<mydomain>.com</id>

それぞれ赤字部分を削除し、iChatサービスを再起動すればOKです。この手の編集はバージョンアップなどで元に戻ってしまう可能性もありますが、まぁ当面様子をみようと思います。

■クライアント

Lion まではiChat、Mountain Lion以降は「メッセージ」を使います。Lion + β版「メッセージ」で動作確認しました。またiChatサーバーはJabberのXMPPというプロトコル互換なので、Windows用の互換ツールでも(少なくともプレゼンスやテキストチャットのレベルは)問題ないと思います。

また残念ながらAppleからiChatクライアントはリリースされていませんが、Jabber/XMPPアプリは数多くあります。例えばimo instant messengerは日本語も含めて大丈夫っぽいです。画像もアップできますが、imo社のサーバーに置かれてURLが先方に届く形式のようで、プライベートな写真のやりとりには向かないかも知れません。

他にMonalはデザインも良く無料でなかなかなのですが、残念ながらiOS5の日本語キーボードサイズ変更問題に対処できておらず、日本語<->英語と切り替えると入力欄に文字が打てなくなる問題を孕んでいます。更新されたら是非こちらを使いたいとは思います。

その他、Cisco Jabber IM for iPhoneはログインできず、ボイスチャットも対応というOctro Talkはすぐにログイン、ログアウトを繰り返して実用にはなりませんでした。有料アプリではBeejiveIMシリーズ辺りが評価が高いようですが、まぁimoで必要最低限のことができそうなので試していません。

■iChatでできること

で、そもそもな話、iChatでなにができるのか、SkypeやiMessageとなにが違うのか、という話。

まず大きなのは自前のサーバーを立てることで、クローズドなチャットシステムを構築できるということですね。企業内でのやりとりをするのにSkypeやLive Messengerなどの半ば公のサービスを使えないところも少なくないでしょう。

Mountain Lionになって「メッセージ」アプリと統合されるので、iChatのために別アプリを立ち上げておかなくても良くなるのも嬉しいです。

機能面では、オンラインプレゼンス(退席中などのステータス表示)、テキストチャ
ット、ボイスチャット、ビデオチャット、画面共有など競合サービスにひけをとらない感じです。ただしビデオチャットの画質はSkype HD等には及ばず、従来のSkypeやLiveなどと同レベルという印象です。またiChat Theaterという機能で動画やPDFなどを共有することができます。ビデオチャット中に動画ファイルをドロップすると、ファイル転送するか再生するのか選択肢が表示され、再生すると向こうとこちらで同期して動画視聴ができます。この時、スライダーを動かしたり一時停止したりといった操作はファイルをドロップした側の人のみ可能です。これも残念ながら画質はVGA程度です。また常に相手のカメラ映像も並んで表示され、全画面で動画を表示することはできません。でもまぁ動画を観ながらチャットというのはなかなか楽しげな気はします(ちなみにYouTube上の動画であればGoogleのHangoutで似たようなことが可能です)。

2012.07.15追記:

画面共有は相手側の操作もできますね。これはSkypeなどでもできないのでWindows同士でのLive Messengerに匹敵するメリットです。遠隔のMacをサポートする時などは便利です。Live Messengerはルーター環境によってつながらないこともあって、最近はSkypeで画面を”見るだけ”で操作は相手に口頭で伝えてやってもらうことが多かったんですが、Mac同士ならウチのサーバーにアカウント発行してつないでもらうのがヨサゲ。

Thunderbolt – ギガビットEthernetアダプタ 簡易ベンチ

発売と同時に購入しておいた「Thunderbolt – ギガビットEthernetアダプタ」をMacBook Air Mid 2011で試してみたので、USBタイプとの簡易比較ベンチを載せておきます。手頃なベンチマークソフトを知らなかったので、1.09GBの動画ファイルをFinderコピーしてストップウォッチ計測。しかも面倒なので1回ずつ。参考までに。

SDIM0143

■仕様機材

クライアント: MacBook Air 11” (Mid 2011) MC969J/A w/OSX 10.7.4

ファイルサーバー: Synology DS1511+ (RAID5)

比較アダプタ: BUFFALO LUA3-U2-AGT (USB接続Gigabit Ethernetモデル)

WiFiアクセスポイント: AirMac Extreme (300Mbps世代) 5GHzで接続

■速度どん!

仕様アダプタ コピー秒数
Wi-Fi接続 63秒
BUFFALO LUA3-U2-AGT 27秒
Thunderbolt – ギガビットEthernetアダプタ 10秒

予想以上の差にビビった!やはりUSB2.0はボトルネックになってたんですねぇ。

■MacBookがThunderbolt対応モデルならこれ一択

写真の通り、サイズも大幅に小型化されてますし、実売価格もほぼ同じ。これから買うならUSBタイプを買う理由はほぼない気がします。ただ今後Thunderboltを使う外付けストレージやモニタが一般化してくると、MacBook AirやRetina以外のProだと取り合いになりそうですね。ハブは出ないのかなぁ…