2011-12-27 17 views
1

現在、オーディオビジュアルコンテンツを再生するためのvLCソケットリモコンインターフェイスを使用するJavaプロジェクト(例:vlc -I rc --rc-host=localhost:[portnumber])です。インターフェイスは、対処する複雑なように思えますいくつかの特定の例につながる:VLCリモートコントロールインターフェイスプレーヤーの状態を取得する

  • VLCリモートコントロールのヘルプによると、一時停止コマンドはトグル機能であるあなたは、プレイヤーの現在の状態の追跡を維持する必要があります ので、 。

  • addコマンドは、現在のビデオが一時停止していない場合にのみビデオを開始します。

  • is_playingコマンドは常に、それが一時停止されるたびに、1を出力したりせず、それが一時停止されているかどうか statusコマンドは言いません。

クライアントの制約は、最後のフレームでビデオを一時停止する必要があることです。幸いにも、それに対処するパラメータがあります:--play-and-pause

問題は次のとおりです。 vlcが最後のフレームに達してビデオを一時停止すると、どうすればそれについて知ることができますか?現時点では、get_timeを使用してカウントダウンが0に等しい場合にビデオを一時停止することを考えています。しかし、vlcはビデオ自体を0:01に一時停止し、終了値として0:01を強制します。これは、最後のフレームの1秒前に実際に別のビデオを開始しているときにグリッチが発生することを意味します。0:01チェックでは、停止していない間もそのように考えているためです。ここでは何が起こるかの要約です:

  • 0時20(一時停止していない)+再生ボタン: 送信( "[ファイルパス]を追加");

    ファイン

  • 午前0時00分(一時停止)+再生ボタン: 送信( "一時停止"); send( "add [filepath]");

    ファイン

  • 〇時01分(一時停止)+再生ボタン: 送信( "一時停止"); send( "add [filepath]");

    ファイン

  • 〇時01分(一時停止していない)+再生ボタン: 送信( "一時停止"); send( "add [filepath]");

    予期しない動作:それは一時停止されているので、それは、再生されませんし、我々は

それについて知らない未定義がないので、プレーヤーの状態に対処するための安全なアプローチがあります動作?私は、リモコンのコンソールが、vlcが単独で一時停止すると何かを出力することに気付きました。しかし、このイベントの後に発生するいくつかのイベントが出力される可能性があるため、安全ではないようです。

ありがとうございます。

答えて

1

カウントダウンタイマーの粒度は?サポートされている時間単位の最小値に等しい間隔で2回残りの時間をサンプリングできますか?たとえば秒であれば、時間をチェックし、1秒待ってからもう一度チェックします。時間が変わった場合は、一時停止していない場合でも再生しています。欠点は、アプリケーションの応答性を1秒遅らせることだけです。

+0

最後に、このようなものをいくつか追加して使用しました。カウントダウンタイマーが00:01を示している場合のみこのケースをチェックし、1秒後に00:00を表示すると一時停止と見なすことができます。 00:00と異なる場合は、別の動画が自動的に開始されたことを意味します。そうすれば、次の曲を単独でロードするプレイリストがあれば、1秒後に正しく反応することができます。あなたが言ったように唯一の欠点は1秒遅れです。しかし、彼らはちょうど良い瞬間をクリックしなければなりません!! :P –

0

00:01にプレーヤーが到達しないようにしてください。例えば。 countdown = 00:02が次に開始する場合

+1

これは問題から遠ざかりますが、ビデオの2秒をカットすることは、特にビデオのキー部分が最後の2秒 –