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

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

Windows共有フォルダ上の動画を直接再生するとバッファリングが頻発する問題の回避策

共有フォルダの上においた動画を再生すると再生がブチブチ途切れる現象が発生するということで、いろんな方法を試してきて、DLNAに頼るしか無いかなという結論を出したのですが、他にも安定化させる方法が見つかった。

  1. 安定化方法
    • 『Explorer』を介さずに動画を再生する。
  2. 具体的なやり方
    1. PowerShellなど使って、動画ファイルのフルパスのリストを作る。

# スクリプト実行時刻
$date = Get-Date -Format "yyyyMMddHHmmss"

# 出力ファイル名
$csvDir = CSV出力先となるディレクトリのパス
$mp4list = Join-Path $csvDir "mp4list_$date.csv"

# .mp4 ファイルの検索対象ディレクトリを列挙
$mp4dirs = ( "パス1","パス2",… )

# ファイルリスト出力
Get-ChildItem $mp4dirs -recurse -include *.mp4 | select-object name,fullname,Length,CreationTime,LastWriteTime | Export-Csv $mp4list -Encoding Default

  1. 効果
    • 上記のやり方で動画を開くと、VLCのバッファリングの発生頻度が激減する。

Windows標準のExplorerやasr.exeで開いた時は、数秒間隔でバッファリングが発生していた。

クライアントPCのSMBバージョンを下げたり、VLCのバッファを大きくしたり、小さくしたりと試したりといろいろ試したが、大幅な改善はなく、諦めていたのだが今回の方法で相当に改善された。

エクスプローラーのAPI経由でCIFSアクセスする場合と、ExcelAPI経由でCIFSアクセスする場合とで、内部処理が変わるんだろうか?

Excelの場合も、普通にエクスプローラにファイルオープン命令を渡しているだけだと思ったのだが、実際は違うのかもしれない。謎である。