web-dev-qa-db-ja.com

mplayerまたはVLCに厳密な時間にビデオの再生を開始させる方法は?

MplayerとVLCが正確な時間に再生を開始するようにしたい。プレイヤーは:

  1. ビデオファイルをロードし、バッファリングし、すべてを準備します。
  2. UNIX時間がN秒Mミリ秒になるまで待つ
  3. フレームレートに従って再生を開始します(長期的な偏差なし)

これを達成するのはどのように良いですか?

2
Vi.

FIFOをMPlayerの入力として使用し、指定した時間に再生を開始できます。

スクリプトの理由でビデオをスキップするために使用された、数年前のスクリプトで使用した最小限のコード例をコピーして貼り付けます。

  1. FIFOを作成します。

    [ ! -p /tmp/mplayer-fifo ] && mkfifo /tmp/mplayer-fifo
    
  2. たとえば、MPlayerを起動します。

    mplayer myfile.avi -input /tmp/mplayer-fifo
    
  3. 別のスクリプトからスキップコマンドを送信します

    echo "seek 10" > /tmp/mplayer-fifo
    

代わりに、FIFOを使用して、ビデオを開始および一時停止できます。atを使用して、特定の時間に再生コマンドを実行します。

ビデオが開始されてすぐに一時停止され、"play"ディレクティブを待つだけの場合は、すべてのバッファリングを回避する必要があります。

2