私はAndroidでjavaでコーディングしています。 MP3のファイルサイズとオーディオの長さを手に入れる方法が問題です。プログレスバー/シークバーを設定することができます。シークイベントに対応する。どのようにmp3ストリーミングを行うのですか?
答えは、ヘッダーファイルまたはアルゴリズムの単純な情報にすることができます。
私はストリームにアンドロイドmediaplayerを使用していますが、唯一の問題は両方の上記のことを必要とするシークです。
何か助けていただければ幸いです。
私も手動でmp3ファイルを調べて、このnoobコードでmp3の長さをデコードするヘッダーを取得しようとしました。
total = ucon.getContentLength(); //ucon is an HTTPURLconnection
is= ucon.getInputStream();
byte[] buffer = new byte[1024];
is.read(buffer , 0, 1024);
int offset = 1024;
int loc = 2000;
//FrameLengthInBytes = 144 * BitRate/SampleRate + Padding
while(loc == 2000 && offset< total)
{
for(int i = 0 ; i <1024 ;i++)
{
if((int)buffer[i] == 255)
{
if((int)buffer[i+1] >= 224)
{
loc = i+1;
break;
}
}
}
is.read(buffer , 0, 1024);
offset = 1024 + offset;
}
mp3ヘッダー(11111111 111xxxxx
)をマークするパターンは見つかりません。別のファイルを試しました。他に何かを見つけることができません。
アップデート2:
今、私はmp3ヘッダが、ID3v2のヘッダを検索するために持っていけない知っています。しかし、それはファイルをストリーミングするときとAndroid上ではまだ行われます。私は本当に誰かが助けてくれることを願っています。そして、これらのことをやっているプログラムがたくさんあるので、なぜ私はそれを難しい方法でやらなければならないのでしょうか。
どのようなMP3ライブラリをお使いですか?あなたのコードを表示し、あなたがどこにいるのか説明してください。 – abelenky
どこからストリーミングしていますか?インターネットやファイル? – gigadot
Androidデバイスのmediaplayer()を使用してアンドロイド上でmp3をストリーミングし、mediacontroller(「http://developer.android.com/reference/android/widget/MediaController.html」)に接続しています。問題はmediacontroller()cantがmp3の曲の長さを設定することです。次のエラーが表示されます。期間が不明なため、バッファリングステータスを送信しません。まだ何も得ていない。 – JehandadK