返回要使用 AudioTrack 播放的曲目的长度(以秒为单位)

Posted

技术标签:

【中文标题】返回要使用 AudioTrack 播放的曲目的长度(以秒为单位)【英文标题】:Return the length in seconds of a track to be played using AudioTrack 【发布时间】:2011-01-17 15:53:28 【问题描述】:

我试图暗示大多数媒体播放器都有什么,一种显示音轨总时间以及当前时间(每秒增加)的方式。我很确定我必须使用线程,但我不确定如何。我将音轨保存在 sd 卡上,播放时将所有数据放入一个短数组中。

理想情况下,我还希望能够使用进度条来显示进度,我认为从在 TextViews 中显示进度条到进度条不会是一个巨大的步骤。我在互联网上环顾四周,发现所有示例(尽管它们很模糊)都使用了 MediaPlayer,但由于我使用的是 audioTrack,所以我猜它变得更加困难。在我的应用程序中,我无法使用 MediaPlayer 对音频执行我想要执行的操作。

任何人都可以帮助我或指出正确的方向吗?

【问题讨论】:

【参考方案1】:

由于没有人回答我的问题,我使用了一种粗略的方法来查找音轨的秒数。知道我自己使用我提供的设置录制了轨道,我知道比特率,也可以获得文件大小。

因此创建一个 File 对象,然后将该对象设置为存储中的文件以获取以秒为单位的使用时间:

float time = (float)file.length()/22050/2;

我认为 22050 是录音的采样率,而 2 我认为是因为它是以立体声录制的。

无论如何希望这对将来的任何人都有帮助,如果我有错请纠正我。

【讨论】:

【参考方案2】:

浮动时间 = (float)file.length()/playbacksamplerate/2;

2 用于将短字节转换为字节 采样率应该是您在音轨对象上设置的播放量

【讨论】:

以上是关于返回要使用 AudioTrack 播放的曲目的长度(以秒为单位)的主要内容,如果未能解决你的问题,请参考以下文章

MPMediaQuery 从persistentID 返回曲目而不是播放列表

Android使用AudioTrack播放WAV音频文件

调节 Android AudioTrack 播放速度

Android音视频之AudioTrack播放音频

录制音频,然后使用 AudioRecord、AudioTrack.trouble 播放

如何使用 AudioTrack 生成和播放 20Hz 方波?