12

我正在android中开发音频播放器。所以我想添加播放歌曲的详细信息,即艺术家姓名、持续时间、比特率和采样频率。我可以使用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

MediaMetadataRetriever提供METADATA_KEY_DURATION了可以除以文件大小的比特率。

于 2011-03-04T04:12:59.710 回答