現在、オーディオビジュアルコンテンツを再生するための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]");
予期しない動作:それは一時停止されているので、それは、再生されませんし、我々は
ありがとうございます。
最後に、このようなものをいくつか追加して使用しました。カウントダウンタイマーが00:01を示している場合のみこのケースをチェックし、1秒後に00:00を表示すると一時停止と見なすことができます。 00:00と異なる場合は、別の動画が自動的に開始されたことを意味します。そうすれば、次の曲を単独でロードするプレイリストがあれば、1秒後に正しく反応することができます。あなたが言ったように唯一の欠点は1秒遅れです。しかし、彼らはちょうど良い瞬間をクリックしなければなりません!! :P –