12

私はアンドロイドでオーディオプレーヤーを開発しています。そのため、再生中の曲の詳細、つまりアーティスト名、継続時間、ビットレート、サンプリング周波数を追加したいと思います。を使用して、アーティスト名と音楽ファイルの長さを取得できますMediaStore.Audio.Media library。しかし、同じファイルのビットレートとサンプリング周波数を取得できません。では、どうすれば同じものを入手できますか?

私が知っているように、それはネイティブライブラリを使用して行うことができます。しかし、方法がわかりませんか?だから誰かがこれについて私を助けることができますか?

4

3 に答える 3

17

たとえば、私のライブラリにあるランダムなAACでエンコードされたM4Aから、ファイルサイズを秒単位のオーディオの長さで割ることで概算できます。

File Size: 10.3MB (87013064 bits)
Length: 5:16 (316 Seconds)
Which gives: 87013064 bits / 316 seconds = 273426.147 bits/sec or ~273kbps
Actual Bitrate: 259kbps

ほとんどのオーディオファイルには既知の有効なビットレートレベルのセットがあるため、これを使用して、ビットレートを表示に適したレベルにステップアップできます。

于 2011-03-04T04:15:36.630 に答える
14

私はそれが解決されたことを知っていますが、私は正確な答えを得るはるかに良い方法を手に入れました

MediaExtractor mex = new MediaExtractor();
try {
    mex.setDataSource(path);// the adresss location of the sound on sdcard.
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

MediaFormat mf = mex.getTrackFormat(0);

int bitRate = mf.getInteger(MediaFormat.KEY_BIT_RATE);
int sampleRate = mf.getInteger(MediaFormat.KEY_SAMPLE_RATE);
于 2015-12-23T11:48:12.510 に答える
4

MediaMetadataRetrieverMETADATA_KEY_DURATIONは、ビットレートのファイルサイズで分割できるものを提供します。

于 2011-03-04T04:12:59.710 に答える