如何使用移动浏览器进行无间隙音频循环?

uns*_*ska 9 html javascript cordova

看来我无法通过移动实现无间隙循环.这是我到目前为止所做的:

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音频

  • 创造差距.

Cordova的媒体插件

  • 创造差距.

WebAudio

以上所有测试都使用mp3和ogg.

编辑:

SoundJS的cordova插件坏了,因此不起作用;

https://github.com/CreateJS/SoundJS/issues/170

Lax*_*nge 5

使用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>
Run Code Online (Sandbox Code Playgroud)

它不会产生间隙,请检查您的音频文件,大多数音频文件最后都有差距.

你可以在这里测试它,只需添加循环属性并运行页面.

使用JavaScript

这里也是使用javascript的替代方案

myAudio = new Audio('someSound.ogg'); 
myAudio.addEventListener('ended', function() {
    this.currentTime = 0;
    this.play();
}, false);
myAudio.play();
Run Code Online (Sandbox Code Playgroud)

在这里,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();
Run Code Online (Sandbox Code Playgroud)

是Demo.

  • 你是认真的?HTML 音频造成了最严重的差距 http://unska.com/audio/htmlaudio.html javascript 版本也造成了令人讨厌的差距 http://unska.com/audio/javascriptaudio.html (2认同)