2

VLCJライブラリを使用して、一部のWebサーバーにあるメディアファイルを再生しています。私が抱えている唯一の問題は、メディアの正しい長さを取得する方法です。Mediaを解析しようとしましたが、アプリケーションがハングし、メディアプレーヤーでgetLengthを呼び出すと、0が返されます。getPosition()とsetPosition(float)を使用すると、問題なく動作しますが、実際の長さではなく、再生されたメディアの%のみが秒単位で示されます。

ストリーミングされたメディアの正しい長さを取得し、進行状況を使用して前後に移動することは可能ですか?

ありがとうございました。

4

4 に答える 4

3

0を返す場合getLength()は、VLCJがストリームの長さを認識していない(または通知されていない)ため、文字通り正確な結果を得ることができません。

私が考えることができる唯一の方法は、ファイルの長さを別々に送信するサーバー側(おそらくVLCJのサーバーインスタンス)で動作する何かがあるかどうかです。

于 2011-08-04T15:03:36.993 に答える
2

VLCには、Theora/Vorbisデータの長さの取得に問題があります。これは、vlcjではなくvlc開発者が修正する必要があります。彼らは今は気にしないでください...

于 2012-05-23T21:49:57.630 に答える
1

通常の場合に見られるように、playメソッドの直後に呼び出そうとすると、getLength()は0を返します。ただし、別のイベント/メソッドで呼び出すと、正しい長さが返されます。このため、playメソッド/スレッドの後に数ミリ秒スリープを試みましたが、正しい長さを返します。その後、すべての参照をロードするのに時間がかかる場合があります。そして今、私はこれの背後にあるものを正確に知りません。しかし、上記のストリーミングメディアのように、ストリーミングの完了後に正しい結果が得られると思います。

于 2012-07-20T13:22:53.323 に答える
1

この単純なコードを使用できます。

int DurationInSeconds;
parseMedia();
DurationInSeconds = (int)(player.getMediaMeta().getLength()/1000);

メディアを再生する前に時間が必要な場合

于 2013-04-06T17:59:15.447 に答える