返回要使用 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 返回曲目而不是播放列表