2014-10-12 録画ファイルサーバの動画再生方法を見なおしてみた windows 自宅サーバ トラブルシュート DLNA 動画再生関連 経緯 録画鯖(Windows 7 Pro)の上にPT2に以下の録画データが格納されている。 録画ファイルの形式は .ts で、順次 h264 形式の mp4 にエンコードしている。 録画データの視聴や、エンコ前後のチェックでこれらのファイルを開く必要がある。 録画鯖と普段使っているPCは別物である。動画閲覧は普段用PC(Win7Ultimate)でやりたいため以下の形で対応していた。 .ts や .mp4 の置き場所をCIFS共有で公開。 普段用 PC にインストールしたプレーヤ(VLC等)で上記ファイルをオープン。 今回の問題 問題概要 普段用PCで録画鯖の動画を再生すると数秒感覚でバッファリングが発生し、まともに視聴できない。 動画ファイルによって発生頻度が違うが、ひどい時は3秒再生して5秒待ちとかを延々に繰り返す感じ。 VLC とか WMP とか GOM とかいろいろ試したが、どのプレーヤでも発生する。 切り分け(覚えている範囲) wireshark で cifs 通信を解析したところ パケロス による再送がたまに発生していた。 ping レベルでサーバ間のパケロスを調べてみたがロスは発生していない。 サーバ間のファイル転送では普通にMB/sレベルの速度が出ている。 サーバ間や間の危機のMTUをいじるとか、ファイル共有のバージョンをCIFSからSMB1.0に帰るとかひと通り試したが、一向に改善せず。 VLC のバッファ周りもいろいろいじってみた。バッファをどんなにあげようが、バッファリングが頻発する現象は変わらなかった。発生頻度そのままなのに、バッファリング時間は大きくなるのでむしろ逆効果だった。 切り分けから感じたこと Windowsファイル共有(CIFS or SMB1.0)の上に乗っている動画を直接見るという行為自体がイケていない? 対策 方針 Windowsファイル共有を使わずDLNAで動画を試聴することを検討。 構成案 DLNAサーバは録画鯖のWMP12。 DLNAクライアントは普段用PCのWMP12。 検討過程のメモ 当初はDLANサーバを別途立ててフリーのDLNAサーバソフト「TVersity」を導入するつもりだったが、動画ファイルをうまく認識してくれなかったため断念。 調査するとWMP12はDLNAサーバの機能を持っているので、もうこいつ使えばいいやと思った。 WMP12のDLNAサーバで配信できるファイルは、そのサーバのローカルに置かれているファイル限定になるので、DLNA機能の外出しは断念。 結果 DLNA導入の効果 対策に従い構成変更を実施。その上で動画を再生したてみたところ .ts ファイル、 .mp4 ファイル 共に再生中に動画が途切れることはほぼなくなった。 DLNA導入時の注意点 Windows 7 SP1 環境では、WMP12のDLNA機能を使う前に mfds.dll のバージョンをロールバックする必要あり。この対応をしないと音声が再生されない。詳細はこちら。 感想 良い点 再生性能が大幅に改善したので満足。 動画ファイルの長さ表示に対応、再生位置のシークも普通にできる。 微妙な点 クライアントがWMP12に制限されるので見た目がいじれない。 外部サーバのファイルをDLNA配信の対象に指定できない。 今回は録画鯖とDLNA鯖を共存させる構成になったが、録画鯖に負荷が発生したり、DLNAが起因で障害が発生したりしないか不安。 ファイルの置き場所をNASにした場合対応手段がなくなるし。