Android实现OGG音频的无缝循环播放

说来惭愧,到最后好像自己也没做到些什么出来。

因为工作需求,需要实现同时对多首OGG音频进行无缝循环播放。

我尝试过在Java层用Java解码OGG文件,那效率就不说了,想崩溃就用吧:D

后来用本地代码尝试,但我最终只实现了单线程解码并播放,基于OGG解码库和OpenAL播放,而且是解码完再播放。

其实思路是很简单的,一边解码一边把解码后的数据放进播放器缓存播放就是了。但是由于时间关系后面的没做到。

最后在偶然之下发现BASS库

BASS Library:http://www.un4seen.com/

不得不说这库够强大的。

尝试了下确实可以无缝播放了,同时BASS库本身还有其他很好的功能可以发掘。

另外作者在论坛里也说道,无缝循环也只是在解码时一旦解码到文件尾就重新从头解码而已。

所以最后我选择对它进行了简单的封装,稍微参考MediaPlayer的方法。

具体可以看这里:https://github.com/ViTess/Android-OMEPlayer

往后会逐渐把插件和一些音效功能继续封装,那就不用再去看那个有点莫名其妙的文档了。

时间: 2024-10-14 14:34:11

Android实现OGG音频的无缝循环播放的相关文章

一种实现无缝循环播放音乐方案

场景: 为了节省页面资源,往往需要将一段小音频循环播放,通常做法是在audio标签上添加loop属性,但不幸的是,该属性并不能保证无缝循环(gapless looping)播放,明显的感觉到中间的停顿. 解决方案: 使用audio标签的Web API提供的方法和属性进行循环播放,具体如下 事件名称 事件作用 timeupdate 当前播放的时长发生改变时触发     属性名称 属性作用 currentTime                 用来获取或控制当前播放的时间,单位为s duratio

Android音频: 如何使用AudioTrack播放一个WAV格式文件?

翻译 By Long Luo 原文链接:Android Audio: Play a WAV file on an AudioTrack 译者注: 1. 由于这是技术文章,所以有些词句使用原文,表达更准确. 2. 由于水平有效,有些地方可能翻译的不够准确,如有不当之处,敬请批评指正. 3. 针对某些语句,适当补充了上下文及更适合中文阅读,尽量做到信达雅. 如果你已经成功地了解了关于AudioTrack的一些话题,那么你可能享受它带来的好处,例如低延迟(在STATIC(静态)模式),能够生成流式音频

unity3d 音频无缝循环

在我做赛车漂移的时候,漂移的声音断断续续的,搞得我很郁闷 大家可以随便找个音效然后循环播放去仔细听 你会发现当音效播放完成一次之后循环播放第二次时会停顿一下 我做赛车漂移如果中途停顿了体验是非常不好的,所以我就开始找原因 首先检查音效,没问题 检查代码.写测试代码,还是没问题 难道是u3d的bug?不是说好的循环吗,为啥会有停顿 后来在官方文档中看到一个Gapless looping(无缝循环)参数!! soga,原来本来就有这个选项,心想终于可以得到解决了 可是事情好像没那么简单 Gaples

android开发:把一个byte数组转换成wav音频文件,并且播放

============问题描述============ 如题,byte数组转换成wav音频文件,并且播放,下面代码能生成data/data/com.example.playwav/cache/temp.wav 但是在播放的时候报异常. 我把代码和Log贴在下面了. 我分析,原因应该是wav文件格式的编解码问题,不能这么随随便便把任意的一个byte数组就转化为了wav 希望了解wav编解码开发的童鞋给点解决办法 byte[] a = { 52, 51, 48, 28, 58, 64, 98,-1

Android App中使用Gallery制作幻灯片播放效果

http://www.jb51.net/article/83313.htm 我们有时候在iPhone手机上或者Windows上面看到动态的图片,可以通过鼠标或者手指触摸来移动它,产生动态的图片滚动效果,还可以根据你的点击或者触摸触发其他事件响应.同样的,在Android中也提供这这种实现,这就是通过Gallery在UI上实现缩略图浏览器. 我们来看看Gallery是如何来实现的,先把控件从布局文件中声明,只需知道ID为gallery. ? 1 Gallery gallery = (Gallery

Android开发本地及网络Mp3音乐播放器(九)音乐收藏与列表切换

实现功能: 使用快速开发框架xUtils中的DbUtils模块,为音乐收藏功能做准备 实现PlayActivity(独立音乐播放界面)收藏.取消收藏按钮 实现MainActivity(主界面)菜单选择事件进入MyLoveMusicActivity(音乐收藏界面) 实现本地音乐列表与音乐收藏列表切换功能 (目前源码,只实现了音乐收藏列表,菜单中最近播放列表后续会进行补充) 截止到目前的源码下载: http://download.csdn.net/detail/iwanghang/9504916 x

Android中的音频处理------SoundPool,MediaRecorder,MediaPlayer以及RingStone总结

用Soundpool可以播一些短的反应速度要求高的声音, 比如游戏中的爆破声, 而Mediaplayer适合播放长点的. MediaRecorder主要用来录音. SoundPool载入音乐文件使用了独立的线程,不会阻塞UI主线程的操作. 但是这里如果音效文件过大没有载入完成,我们调用play方法时可能产生严重的后果, 这里AndroidSDK提供了一个SoundPool.OnLoadCompleteListener类来帮助我们了解媒体文件是否载入完成, 我们重载onLoadComplete(S

最简单的方法实现MIDI音乐循环播放 (不用在MCI回调中处理)

前几天,需要在一个Delphi小程序中需要循环播放一段midi音乐.为什么不是mp3或wav或其它?因为midi格式体积小.(总之我有我的必然理由,多喷无义意) 播放功能选择使用MMSystem中的mciSendString函数来实现,注意到"OPEN"操作时需要指定媒体类型为"TYPE SEQUENCER"(就是指midi音频),接下来使用"PLAY XXREPEAT"操作希望能循环播放,结果不但没有实现循环,而且音乐根本就不播放.详查MSDN

音频的采集和播放

音频的采集和播放主要由专门的codec芯片完成,主流的codec芯片厂商有Circus Logic.Wolfson等.采集时codec芯片通过A/D采样把声音的模拟信号转换成数字信号并通过I2S总线送给CPU处理,播放时CPU把处理好的数字信号通过I2S总线送给codec芯片并通过D/A转换为模拟信号播放出来.codec芯片除了A/D, D/A功能外还有其他功能,主要有1)对音频通路进行控制,比如播放音乐打电话等在codec芯片内部的流通线路是不一样的.2)对音频信号做相应的处理,比如音量控制.