似乎我无法实现无障碍循环与移动。这就是我到目前为止所做的:
https://github.com/Hivenfour/SeamlessLoop
http://www.schillmania.com/projects/soundmanager2/demo/api/
https://github.com/regosen/Gapless-5
https://github.com/floatinghotpot/cordova-plugin-nativeaudio
HTML5音频
科多瓦(氏)媒体插件
WebAudio
以上均用mp3和ogg进行了测试。
编辑:
SoundJS的cordova插件坏了,因此无法工作;
发布于 2015-06-30 12:19:34
如果您使用的是HTML5,则使用HTML5属性。
<audio controls loop>
<source src="horse.ogg" type="audio/ogg">
<source src="horse.mp3" type="audio/mpeg">
Your browser does not support the audio element.
</audio>它不创建间隙,检查您的音频文件,大多数音频文件有差距在最后。
您可以测试它的这里,只需添加循环属性并运行页面。
用JavaScript
这里还有一个使用javascript的替代方法
myAudio = new Audio('someSound.ogg');
myAudio.addEventListener('ended', function() {
this.currentTime = 0;
this.play();
}, false);
myAudio.play();在这里,JavaScript会造成很小的差距,你可以通过播放循环来克服它--不是在音频完成的时候,而是在音频即将完成的时候。这是密码。
这是你想要的。
myAudio = new Audio('http://unska.com/audio/pinknoise.ogg');
myAudio.ontimeupdate= function(i) {
if((this.currentTime / this.duration)>0.9){
this.currentTime = 0;
this.play();
}
};
myAudio.play();这里是Demo。
发布于 2018-05-29 04:26:22
这里的派对有点晚了,但我有一个https://github.com/floatinghotpot/cordova-plugin-nativeaudio的解决方案
这并不是最漂亮的实现--但它的工作完全是无懈可击的:
Javascript
const LOOP_INTERVAL = 5000
window.plugins.NativeAudio.preloadComplex( 'loop1', getMediaURL('media/loop.mp3'), 1, 1, 0, function(msg){
}, function(msg){
console.log( 'error: ' + msg );
});
window.plugins.NativeAudio.preloadComplex( 'loop2', getMediaURL('media/loop.mp3'), 1, 1, 0, function(msg){
}, function(msg){
console.log( 'error: ' + msg );
});
function startGaplessLoop () {
var flag = false;
setInterval(function() {
flag = !flag
window.plugins.NativeAudio.play(flag ? 'loop2' : 'loop1')
setTimeout(function() {
window.plugins.NativeAudio.stop(flag ? 'loop1' : 'loop2')
}, 30)
}, LOOP_INTERVAL)
window.plugins.NativeAudio.play('loop1')
}
startGaplessLoop()别忘了在你结束的时候停止音程并卸载声音!
发布于 2015-06-29 18:21:14
试试SoundJS。它包括一个cordova插件。
https://stackoverflow.com/questions/30948333
复制相似问题