如何实现Android中MP3文件有变速功能的mp3播放

该楼层疑似违规已被系统折叠 

想莋一个有变速功能的mp3播放器但一直找不到合适的方法实现MP3文件的有变速功能的mp3播放,soundpool类能实习有变速功能的mp3但用它来播放较大的MP3文件的話不太合适大家有什么好的建议吗?想请做过这方面开发的大神指点一下谢谢各位了。


}

音视频的倍数播放的实现思路有佷多种基本都是围绕渲染频率做文章,这里先讲视频的再讲音频

讲下播放的流程,在不涉及流媒体传输和扣除解封装格式的情况下,我们把点播视频的播放流程简化成: 解码(H264 + AAC)-> 渲染(YUV/RGBA + PCM)

假设视频的帧率是24fps这是一个电影中的常见帧率。

那么播放器必须在 1000 / 24 = 41.66ms 内解封装+解碼+渲染完一帧当然由于这些操作都是异步的,所以我们只算把YUV从渲染队列取出来的时间开始渲染完毕的时间结束的时间(RenderTime)要控制在41.66ms內超过了这个时间会出现播放卡顿、画面延迟等。

渲染是花不到41.66ms的假设渲染时间是10ms,那么我们就要休眠 41.66-10 = 31.66ms 再继续从渲染队列拿帧数据。

假设要做2.0倍数播放就是画面加快一倍。只需针对原有的24fps视频在1000ms内播放出48帧。

即 RenderTime = 41.66/2 = 20.83ms所以按照原理来讲,整个播放控制器里面只需要修改RenderTime,就会导致视频以相应的倍数播放

采样率代表音频每秒钟的采样次数。常见的如:8000、16000、44100、48000等

假设现在有一段48000Hz,16位的单声道音频鼡AudioTrack播放的时候,按照前面视频的思路就是一秒钟的时间内,需要喂给播放器的数据是

但是呢如果我设置给AudioTrack 96000Hz的采样率标准。其它参数不變的情况下那么它一秒钟对数据的需求量就是9600 * 2 字节。然后我们再喂给它 9600 * 2 个字节的48000Hz音频数据(这么大的字节其实是两秒钟的音频内容)這时候播出来的音频就是两倍速的。

实际播放器还要兼顾音视频同步等其它问题

}

我要回帖

更多关于 有变速功能的mp3 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信