2台のPCで動画同時再生するためプログラム起動時間のぶれを0.1秒以内にする

音楽に光が連動する光音コンピュータのデモため2台のPCで同時再生するデモを準備しています。そのためには動画再生プログラムの起動時間のぶれを同一のPCで起動した場合約0.1秒にすることを目標としました。動画は一度再生が始まると遅延なく再生されることは我々の共通の認識と思います。現在同時走行プログラムの評価継続中ですが、以下のポイントに注意することで目標達成に近付きつつあります。現状0.2秒くらいです。

◆ポイント1:プログラムの処理時間計測は2回目以降で行う

◆ポイント2:GUI起動をせず、コマンドラインから起動する

◆ポイント3:実行プログラム名はフルパスで指定する。

計測に使ったプログラムは以下のようなものです。動画再生にはフリーのVLCメディアプレイヤーを使用し、フルスクリーンでフルHD(5分08秒)の動画再生を行うものです。VLCコマンドの前後で%time%をms単位でトレースファイルに出力することにより経過時間を測定します。筆者はUNIX上でマイクロ秒単位の性能分析を行った経験がありますが、そのようなツールは今回は手元にありませんので、何が処理時間に影響を与えるのかの仮説を立てて、検証するといったやり方です。

ちなみにVLCメディアプレイヤーでのフルスクリーン表示は以下に示すように画面上に制御ボタンが現れない快適な表示です。キーボードやマウスを操作することで制御ボタンが表示されます。

◆ポイント1:プログラムの処理時間計測は2回目以降で行う

プログラムの初回実行は0.5秒から数秒、2回目以降の処理時間に比べて長くなりました。OSがプログラムをメモリにロードする時間がかかるためと推察します。2回目以降はメモリにロードされたプログラムをするだけのため、大幅な時間短縮が可能なのでしょう。2回目以降の処理時間のばらつきはほとんどありませんでした。

◆ポイント2:GUI起動をせず、コマンドラインから起動する

エクスプローラーで上記バッチプログラムを表示させ、ダブルクリックしたり、右クリックで「開く」を選択することでバッチプログラムを起動すると処理時間に0.2秒程度のばらつきがありました。3つのコマンドをまとめて処理してくれればこのような結果にはならないように思いますが、一つ一つGUI経由で処理しているのでしょうか?詳細はわかりませんが、コマンドプロンプトから直接バッチファイル名打鍵することで処理時間のばらつきは少なくなりました。

◆ポイント3:実行プログラム名はフルパスで指定する

VLCメディアプレイヤーを起動する場合、対象PCでパスが設定されていれば、「vlc」と入力するだけでOSが実行プログラムを見つけてくれますが、この処理が処理時間のばらつきの原因となっているのでしょう。上記のようにフルパスで指定することで0.1秒程度のばらつきが解消されました。

◆ストレージがSSDかHDかで処理時間の差異は無い

デジタル屏風ではSSDを搭載したPCとSSDを搭載していないHDのPCで処理時間の計測を行いましたが、処理時間に差異は見られませんでした。VLCメディアプレイヤーの再生データの先読み技術で、ストレージの処理時間の差が再生の処理に影響を及ぼさないように工夫されていると推測しました。処理時間のばらつきも同様でした。

 

Follow me!