方法 - 1. オーディオ/ビデオ トラックの現在のフレーム位置を取得する ?? 2.トラックの特定のフレーム位置に移動する方法?? vlcj sdk を使用します。どんなコード スニペットでも大歓迎です!
2 に答える
実際には、ちょっとした計算でこれを行うことができます。これは最もクリーンな方法ではありませんが、理解しやすい方法です。
VLCj では、 を使用してメディアの長さを取得できます.getLength()
。ただし、これはメディアの長さをミリ秒単位で返すことに注意してください。さらに、 を使用して、メディアのフレーム/秒を取得できます.getFPS()
。
したがって、フレームの総数は次のように取得できます。
total_frames = .getFPS * .getLength() /1000;
次に、ミリ秒単位で現在の位置.getPosition()
を確認し、それをフレームに変換できます。これはパーセンテージとして返されます。
current_frame = .getPosition() * total_frames;
ここで、特定のフレームに移動したい場合は、それを呼び出しましょうdesired_frame
。.setPosition()
パーセンテージを取る を使用できます。したがって、ジャンプ先のフレームを表す合計のパーセンテージを決定する必要があります。
.setPosition((float)desired_frame/total_frames);
VLCJ は、この種のフレームごとの直接アクセス用に実際には設定されていません。mediaplayerオブジェクトでsetTime()
andgetTime()
を使用できますが、フレームではなくミリ秒単位で最初から時間が返されます。もちろん、フレーム レートがわかっている場合は、フレーム レートを別のフレーム レートに変換するのは比較的簡単です。
VLCJ が提供するよりも低レベルの操作が必要な場合は、Xuggler を参照してください。