Darwin Streaming Serverを試す

Pocket

先日の「Macで手持ち動画ファイルをソーシャルビューイングする」というエントリで書いたHangoutを使う方法は、やはりフレームレートの低さに我慢がならず他の方法を模索しました。そういえば、OSX ServerもSnow LeopardまではQuicktime Streaming Serverを搭載してたのにLionでなくなったんだよなぁ、と思って代替ソリューションをググったところ、元々オープンソースで公開されていたので、野良ビルドというかポートされたものがあるのを発見。Darwin Streaming Serverという名前で、OSX以外にもLinuxやWindowsでも動かせるみたい。OSX用のパッケージはここで拾えます。いくつかつまづいたので導入メモなど。執筆時点のバージョンは6.0.3。もうApple的にはメンテが終息してるっぽいのであまり進化はしないかも知れないですね。

■導入メモ

・OSX Serverにインストールできるようにする

なぜかインストーラー.pkgがServer OSを弾く設定になっています。もともとServer OSには入ってたものなのでその名残?こちらに回避策がありました。まず.dmgファイルを開いて仮想ドライブとしてマウントし、中の.pkgファイルをローカルドライブにコピーします(そうしないと編集できないから)。.pkgファイルは実はフォルダなので、ターミナルでcdしていけば中に入れるんですが、DarwinStreamingServer.pkg/Contents/Resources/VolumeCheck というファイルをエディタで開いて、サーバーOSかどうか調べて弾く部分を丸々コメントアウトします。具体的には29行目以降に赤字の#を挿入します。

#  don’t install on OS X Server                                                                   
#if ( -e $INSTALLED_SERVER_OS_VERS )                                                              
#{                                                                                                
#    if ( -e $ERROR_STRINGS )                                                                     
#    {   #there are localized error strings so use them                                           
#        $RESULT = 114;                                                                           
#    }                  

これでインストーラーを起動すれば普通にインストールできます。管理者パスワードや動画の保存場所などを指定すると、インストーラーが最後にブラウザで設定ページを開いてくれるので、そこをブックマークするなりしておけば、以後全ての設定はそちらで行えるようになります。

 

・動画ファイルにヒントトラックを付加する

H.264+AACなMP4ファイルが利用できるはずですが、そのまま登録しても非対応と言われてしまいます。動画にヒントトラックというインデックス情報のようなものが含まれている必要があるみたいです。QuickTime Proやmp4boxというフリーのコマンドラインツールで付加できるようです。mp4boxはエンコ作業で普段から使ってるので、以下はWindows機で作業。

mp4box.exe –hint (元ファイル名).mp4 –out (新ファイル名).mp4

などとすればヒントトラック入りの別ファイルが作成されます。再エンコードするワケではないのでファイルコピー程度の時間で終わります。

ただ手持ちのmp4box 0.4.6-DEV (internal rev. 5)では「Invalid IsoMedia File」というエラーが出てハマりました。最新版とされている0.4.6-rev2735をゲットしてみたらOKでした。バージョンは、

mp4box.exe –version

で調べられます。

最近のMediaCoderならエンコード時に自動で付加することもできるっぽいですが、ファイルサイズで比べると1,2割は大きくなるようなので、全部のファイルに予め付与しておくのは無駄かなという印象。

 

・動画ファイルへのアクセス権を付与する

これはOSX Serverだけの現象かも知れませんが、プレイリストに動画を登録して再生スタートすると、

– PlaylistBroadcaster: Permission to access the SDP reference movie was denied.
   Read access required.
   (path: /Library/QuickTimeStreaming/Movies/hoge.mp4, errno: 13).

のようなエラーが出ます。他のサンプルファイルをみるとオーナーが_qtssとなっているので、それに揃えてやります。

sudo chown _qtss hoge.mp4

 

・80番ポートを使わない場合のポート番号

インストーラーまたはポート設定画面に「80番ポートを使う」という項目がありますが、通常80番はWebサーバーが使うので重複の心配があります。そこでオフにしてみたんですが、じゃぁ代わりに何番になるかというのがどこにも表示されていません。

わかった範囲では、

1022番:管理ページ

8000: http://プロトコロルによる動画配信(iOS向け?)

554番:rtsp//プロトコルによる動画配信

等。ただし8000番を使ったhttp配信はまだ成功していません。エラーメッセージ的にはつながってるっぽいってだけ。

 

・プレイリストを作って疑似ライブストリーミングをする

PC/Macでの視聴にはrtspプロトコルに対応した動画プレーヤーを使います。具体的にはQuickTime PlayerかVLC辺りがお手頃でしょう。ファイルメニューから「URLを開く」とか「場所を開く」「ネットワークを開く」といった文言の項目を選び、アドレスを入力するだけです。

サーバーの設定画面で指定したフォルダに、hoge.mp4というファイルを置いた場合、

rtsp://(IPアドレスまたはホスト名)/hoge.mp4

というアドレスを入れれば視聴できます(ルーター越えさせる場合は554ポートを開放しておく必要があります)。ただしこれだと個々にオンデマンドで再生されるので、単純にファイル共有して視聴するのとあまり代わりありません。せっかくストリーミングサーバーを介すのだから同期視聴してこそです。それにはプレイリストを作成します。管理ページ上で「Playlists」を選ぶとプレイリスト一覧画面になるので、「New Media Playlist」を選択し新規作成します。仮にNameをhoge、Mount Pointをhoge.sdpなどとしておきます。そしてファイル一覧に動画フォルダのファイル一覧が見えてるのでドラッグして右側のリストに追加し、「Save Changes」で保存して一覧画面に戻ります。一覧画面のプレイリストに再生ボタンがついているのでクリック。Statusが「Playing」になれば成功です。エラーが出た場合はアイコンをクリックすると詳細が確認できます。またServer自体が起動しているか左上の表示で確認しましょう。

「Playing」になっていると、誰かが見て様が見てまいがサーバー上では再生が進んでいる状態です。そこで、クライアントのプレーヤーソフトから、

rtsp://(IPアドレスまたはホスト名)/hoge.sdp

のようにMount Pointを指定してやると、視聴できると思います。

■使用感

・画質

画質に関してはHangoutやSkype、iChatの画面共有に比べてはっきりと優位を感じます。というか回線速度が追いついている限り、ローカルで再生しているのと同等だと思います。

 

・使い勝手

ここはやはりHangout等に比べると若干落ちます。まずホスト側ですらあまり自由に再生を制御できません。プレイリストの再生と停止しかできないので、ちょっと面子がトイレいくから一時停止ね、とかもできない。止めたらまたプレイリストの最初からになります。クライアント側でポーズはできますが、それは当人のところで止まるだけ。Hangout等であれば画面共有しているホスト役の人が一時亭ししたりオープニングをスキップしたりも自在なので、ここは惜しいところです。

また、サーバー側でプレイリストをPlayingにしてないとクライアントからつなぐこともできないので、全員接続してから再生スタート、ということもできず、サーバーでスタートさせてからチャットなどで「よしお前らつなげ!」などと号令をかけるしかない。それでも頭の数秒は見損ねてしまうでしょう。プレイリストの先頭にダミーの動画を10秒程度入れておくと良いかも知れません。

そしてもちろんチャット周りについては何も機能がないので、SkypeなりLive Messengerなりを別途使うしかありません。まぁここはお互いがIDをもってて使いやすいものを選べるというメリットでもありますが。

クライアント側に再生ソフトをインストールしなければならない点も負担な人には負担ですが、まぁ今時QuickTime PlayerはiTunes入れてればほぼ強制的に入るし、VLCもフリーだし許容範囲ですかね。今回ネットカフェから参加した人もいましたが、VLCは再起動しなくて使えるので好都合でした(ネットカフェのPCはセキュリティの為、再起動すると全ての変更が巻戻る)。

惜しいのは動画にヒントトラックをつけないと使えない点ですね。我が家にある膨大なライブラリから「よし今日はアレ観ようぜ」とかいって即座に始められません。さりとて現状の利用頻度では全てのファイルにあらかじめヒントトラックを埋め込んで置くのはちょっと手間的にも容量的にも非効率。mp4bpxでの付加自体にはそう時間はかからないので、なにかバッチファイルなり簡単に一括付加できるフロントエンドツールなどを作っておくといいんでしょう。

 

・安定性

やはり途中何度か映像が乱れたり音声が途切れたりということがありました。もともとストリーミングを意識してエンコした動画ファイルではないので、仕方ないかも知れません。感覚的にはやはり動きが激しくビットレートが高くなるところが不安定になってた気がします。たぶん可変ではなく固定ビットレートにすると良い気がしますが、普段使いの画質を優先するかトレードオフですね。1~2Mbps程度の動画で光同士ならほぼ無問題、WiMAXでたまに不調、一番ヒドいのは某ネットカフェから参加した人、って感じでした。一度乱れだしたら、軽く(数秒?)ポーズして先読みを進めてやると良いとか、それでもダメなら再接続が確実っぽかったです。

またどうしても接続後数秒(最初のIフレームまで?)は乱れまくります。

あと、プレイリスト上の動画ファイルをまたぐ時に、次のファイルが正常に再生されないという現象が何度か出ました。出る時は全員なのでサーバー側、それも個別のファイルの問題な気がします。ちょっとまで原因がつかめてないですが、こうなったら再生を止めてプレイリストを編集して前のファイルを消し、そのファイルを先頭にして再スタートさせるしかないみたい。

サーバー自体はエンコードなど負荷の高い処理をするわけではないので、余裕っぽいです。特にファンがうなりをあげるようなことはなかったです。>Mac mini Server 2011(Core i7)

 

とまぁ、こんな状況でアポイントの数時間前から突貫で準備を始め、なんとか4人で6時間に及ぶ動画視聴マラソンを楽しく実施することができました。

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

Pocket

ちょっと必要があって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同士ならウチのサーバーにアカウント発行してつないでもらうのがヨサゲ。

sambaでWindows機などをcifsマウントできなくなった時の覚え書き

Pocket

ウチのLinuxサーバー機で、LinkStationとWindows7機の共有ボリュームをマウントできなくなりました。うーん、月初めにはできてたはずなんですが。環境は、CentOS 5.6にwingリポジトリさんで配布しているsamba36-3.6.1を入れて使っています。3.6.3が出てたので更新してみたがかわらず。

dmesgには、

CIFS VFS: cifs_mount failed w/return code = –6

と出ますが、ググってもこれといった情報がつかめず。

結局mountコマンドであれこれ試してちゃんとマウントできるパターンと、/etc/fstabの記述を見比べてわかったのは、

//machine/share/ /mnt/machinename/sharename cifs ro,user=hoge,password=fuga,noauto 0 0

の赤字の部分。このスラッシュを削ったら通常通りmount /mnt/machinename/sharenameだけでマウントしてくれるようになりました。うーん、今までこれで使えてたのになぁ。先週くらいの大量のyum updateかなぁ(普段除外されてるwingリポジトリのsamba36はそれでは更新されないはずだけど)。改めてfstabの書き方をググるとみんな最後のスラッシュつけてないので、いままでがたまたま動いてたとか、どこかでつけないルールになってたけど移行猶予で動いちゃってた、とかなんですかね。

ともあれ、上のエラーメッセージでググって誰かが幸せになれればと覚え書きを残しておきます。

ファイルサーバーのSambaをSMB2対応した3.6に更新

Pocket

Linuxサーバー機のSambaを3.0から3.6にアップデートしてみました。3.6の目玉はなんといってもSMB2への対応です。SMB2はVista世代から対応した新しいファイル共有プロトコルでパフォーマンスアップが見込めます。Microsoft製品同士では随分前から使用されてましたが、高価なWindows Serverを使用している企業ともかく、SambaベースのLinuxサーバーや多くのNASは対応してなかった為、個人レベルではクライアントがVistaや7でも実力を発揮できずにいました。それがついに、ということで胸熱です。

ウチのLinuxサーバーはCentOS5.x系でそのままではyumでインストールはできず、こちらの記事を参考にwingリポジトリを使って導入。ウチではpriorityの設定はしなくて済みました。記事からのリンク先を参考にwingリポジトリを登録した後、—enablerepo=wingオプションをつけてインストール。3つ一度に指定すると依存のエラーが出たので、まずはsamba36本体のみを指定(これでcommonも入る)し、後にclientを入れたらOKでした。

yum –enablerepo=wing install samba36
yum –enablerepo=wing install samba36-client

その後、認証絡みでちょっと苦戦。smbpasswd認証はもはやナウくないらしいので、smb.confに

[global]
max protocol = SMB2
security = user
passdb backend = tdbsam
wide links = yes
follow symlinks = yes
unix extensions = no

とし、コマンドラインで

pdbedit -a -u furuta

などとしてパスワードを設定したらOKでした。

ちなみにオレンジの部分は文字通りsmb2プロトコルを有効化、赤が認証方式の指定、紫はUNIX上のシンボリックリンク先を実ファイルとしてアクセスできるようにする為の設定です(今まではなくても平気だった)。security = userは普通なら指定済みなことが多いはずですが、何故か入ってなかったので足しました。

■ベンチ

Samba30 Samba36
Samba 3.0 Samba 3.6

 

クライアントはWindows7、GbE接続です。

シーケンシャルリードと512Kランダムリードは向上してますが期待したほど劇的な差ではないですね。あとは4K ランダムライトがエラい速くなってます。あとはトントンか逆に落ちてるとこも。体感は、、、あんましかわんないかなw。

あとは低レイテンシー時のパフォーマンスが向上するらしいので、VPNを経由した時とかに期待ですかね。

AmazonでSynology製NASの取扱モデルが拡充されたっぽい

Pocket

縁あってレビューさせていただいたSynology製NAS「DS1511+」の姉妹モデルの、Amazon.co.jpでの取扱が拡大したようです。レビューのまとめとして比較紹介してみます。

2011年秋現在、タイの洪水被害でHDDが高騰し、それを使用するNAS製品も軒並み値上げされています。今はNASを買う良い時期ではないのかも知れませんが、Synology製品は基本的にHDDが別売りで、しかも複数ベイのモデルなら後から柔軟にHDD構成を変更できるという特徴があるので、とりあえず直近で必要な容量のドライブを最低限確保して、値下がり時期を待って全ベイを埋めるなり高容量ドライブに換装するなりという戦略がとりやすいんじゃないですかね。

なお、基本OSとしてはDisk Stationが組み込まれており、使用感は1511+に近いと思いますが、今までの記事で紹介してきた個々の機能についてはモデルによって搭載してない場合もあるかも知れません。また下記データに記載ミスがある可能性もあります。ご購入前に公式サイトなどで仕様をお確かめ下さい。

モデル 使用ドライブxベイ数 公称スピード 備考

DS110j
3.5” or 2.5”x 1 (記載なし) CPU: 800MHz
消費電力:9-19w

DS111の前モデル?こちらの方が数千円安いみたいです。


DS111
3.5” or 2.5” x 1 Read 105.59 MB/秒
Write 60.71 MB/秒
CPU: 1.6GHz
消費電力:7.7-18.7w

1ベイモデル。せっかくSynology製品を買うならRAID対応モデルの方が良いような気もします。


DS411 slim
2.5” x 4 (記載なし) CPU: 1.6GHz
消費電力:9-16w

2.5’ドライブ専用の小型、静音、省電力モデル。


DS411j
3.5” or 2.5” x 4 (記載なし) CPU: 1.2GHz
消費電力:11-30.8w

DS411より1万強安い分、CPUが1.6->1.2にダウン。デザインも大きく違うので好みで選びたくもなりますね。


DS411
3.5” or 2.5” x 4 Read 105.3 MB/秒
Write 47.8 MB/秒
CPU: 1.6GHz
消費電力:11-29.7w

これもDS411系列。スペックからするとこちらの方が後継?型番が似ているので注意。


DS211+
3.5” or 2.5” x 2 Read 108MB/秒
Write 55MB/秒
CPU: 1.6GHz
消費電力:13-24w
ホットスワップ

ホットスワップ対応の下位モデル。デザインはDS1511+とコレが好きかも。
本国では後継の212もリリースされてるみたいです。


DS712+
3.5” or 2.5” x 2 Read 180.91MB/秒
Write 105.59MB/秒
CPU: 1.8GHz
消費電力:17.6-27.5w
ホットスワップ
LANポートx2

DX150を追加して7ベイでRAIDが組めるマニアックなモデル。LANx2なのでLink Aggregationを使って高速化が狙えます。


DS1511+
3.5” or 2.5” x 5 Read 197.8 MB/秒
Write 165.91 MB/秒
CPU: DualCore 1.8GHz
消費電力:30-68w
ホットスワップ
LANポートx2

今回レビューしたモデル。業務用モデルでDX510を2台接続して15ベイ運用できます!
LANx2でLink Aggregation時の性能も最高だし、ルーターとしての使用も可能。


拡張ユニット DX510
3.5” or 2.5” x 5   DS712+やDS1511+の増設用5ベイeSATAケース。さすがに個人でここまで必要になるケースはあまりないかも知れません。

 

色々なラインナップがありますね。「j」がつくのは日本向けかと思ったんですが、ありとなしで全然別モデルだったりするので注意が必要です。型番の千と百の位がベイ数を
示しているみたいです(ただしDS1511+とDS712+はeSATAポート経由の外付けボックスを使った場合の最大ベイ数)。「+」がホットスワップ対応かな?eSATAポートがついててDX510が接続できるという意味かなとも思いましたが、DS211+が微妙(eSATAポートはついてるけどDX510対応は明記されていない)。

 

我が家のDS1511+は9月に本運用の3TBx5ドライブ体制に移行して二ヶ月が経過しましたが、不具合もなく速度も上々で非常に満足しています。ファイル共有以外ではiOS用のアプリ“DS Photo+”を使ってiPhoneで撮った写真を直接アップロードできるのが重宝しています。iOS5のフォトストリームを使えば特別な環境無しに似たようなこともできますが、あちらは撮った写真を無条件に全転送してしまう点や、Mac(iPhotoベース)とWindows(フォルダ格納)で同期方法が違う等が気になって使っていません。DS Photo+で送信してNAS上の任意のフォルダに貯まっていってくれた方が汎用性が高くて便利です。

先日この連載レビューを読んでくれた知人が業務用に上位モデルを買おうとし、取扱店が少なくて少し苦戦したと言ってましたが、こうしてAmazonでの取扱も徐々に拡充されてきてますし、聞くところによると近々販売ルート自体も増えそうだということです。製品自体はかなり競争力があると思うので、国内認知度があがるにつれシェアも広がっていくんじゃないでしょうか。国産メーカーも負けじと切磋琢磨していって欲しいものです。