0

URLからメディアファイル(mp3)を再生したい。また、そのmp3ファイルの長さを取得したい。ファイルの再生には成功していますが、SeekBar も表示したいと考えています。そのためには、メディア ファイルの長さを秒単位で知る必要があります。

どうすればそれを達成できますか?

私は1つの方法を見つけましたが、それを使用すると、秒単位で長さが得られたとは思いません。

 URLConnection cn = new URL(mediaUrl).openConnection();
 cn.connect();
 int length =  cn.getContentLength();

バイトを返すと思います。それで、それを秒に変換できますか?または、他の方法を知っている人はいますか?

4

3 に答える 3

1

getHeaderFields() メソッドを確認し、長さを含む応答ヘッダーがあるかどうかを確認します。コンテンツを取得できない場合は、ストリームから mp3 メタデータを読み取り、kbps を計算します。それができたら、バイト単位の長さを使用して時間の長さを取得できます。

于 2012-04-12T11:50:54.107 に答える
1

投稿したコードは、URL からデータを取得するために必要なものです。

実際にはこれから MP3 ファイルをプルしているかもしれませんurlが、getContentLength()呼び出しているのはオブジェクトに作用していURLConnectionます - それが返すのは、ダウンロードしているファイルのサイズ(バイト、キロバイト、メガバイト) です。

MP3 の再生時間を確認したい場合は、データを有効なメディア オブジェクトに変換する必要がありますgetDuration()

于 2012-04-12T11:59:49.903 に答える
0

メディア ストリーミングが開始されたら、 を使用しmediaplayer.getDurationてメディア ファイルの合計時間を取得できます。この値をランナブル内で使用して、シークバーを定期的に更新できます。

于 2012-04-12T11:58:35.193 に答える