2010-12-30 9 views
0

私は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上ではまだ行われます。私は本当に誰かが助けてくれることを願っています。そして、これらのことをやっているプログラムがたくさんあるので、なぜ私はそれを難し​​い方法でやらなければならないのでしょうか。

+1

どのようなMP3ライブラリをお使いですか?あなたのコードを表示し、あなたがどこにいるのか説明してください。 – abelenky

+0

どこからストリーミングしていますか?インターネットやファイル? – gigadot

+0

Androidデバイスのmediaplayer()を使用してアンドロイド上でmp3をストリーミングし、mediacontroller(「http://developer.android.com/reference/android/widget/MediaController.html」)に接続しています。問題はmediacontroller()cantがmp3の曲の長さを設定することです。次のエラーが表示されます。期間が不明なため、バッファリングステータスを送信しません。まだ何も得ていない。 – JehandadK

答えて

0

まあ、私はID3タグシステムについて知りませんでした。

関連する問題