【发布时间】:2015-03-06 13:29:39
【问题描述】:
我有许多 mp3 文件,我使用 Android MediaPlayer 从特定偏移量播放。
使用 seekTo() 似乎停止在正确的位置。 player.getCurrrentPosition() 返回正确的偏移量,但在某些情况下,实际位置会关闭多达 200 毫秒。这些文件大约需要 3 分钟的记录时间,并且最后似乎出现了不正确的偏移量。部分文件。
我尝试使用 Android 4.0.3 设备或 4.3 模拟器都具有相同的效果。
有人有“微调”MediaPlayer 偏移的经验吗? MediaPlayer 可能无法正确处理某些文件的任何经验?它们都是 CBR,立体声,有的采样频率为 22050,有的为 44100,比特率不同。
我正在设置另一个程序的偏移量并保存到 mp3 标签,然后在有疑问时使用 Audacity 手动验证。 Audacity 同意我对正确偏移量的估计,MediaPlayer 似乎不同意。
我知道我可以将 AudioTrack 与原始声音文件一起使用并进行更好的控制,但是由于 mp3 文件很多,因此使用原始声音数据会变得非常大,这可能不切实际应用程序或许多大型数据文件。
代码没什么花哨的:
player.seekTo(start);
player.start();
CountDownTimer timer = new CountDownTimer(length, 100) {
@Override
public void onTick(long millisUntilFinished) {
if (player!=null) setInt(R.id.nLocation, player.getCurrentPosition());
}
@Override
public void onFinish() {
if (player!=null) {
if (player.isPlaying()) {
player.pause();
}
setInt(R.id.nLocation, player.getCurrentPosition());
player.stop();
player.release();
player = null;
}
}
};
timer.start();
【问题讨论】:
标签: android audio android-mediaplayer