技術的ひとりごと(備忘録)

いろいろな備忘録的な何か

録画ファイルサーバの動画再生方法を見なおしてみた

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