首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用移动浏览器进行无障碍音频循环?

如何使用移动浏览器进行无障碍音频循环?
EN

Stack Overflow用户
提问于 2015-06-19 22:43:35
回答 3查看 3.4K关注 0票数 10

似乎我无法实现无障碍循环与移动。这就是我到目前为止所做的:

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插件坏了,因此无法工作;

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-06-30 12:19:34

如果您使用的是HTML5,则使用HTML5属性。

代码语言:javascript
运行
复制
<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的替代方法

代码语言:javascript
运行
复制
myAudio = new Audio('someSound.ogg'); 
myAudio.addEventListener('ended', function() {
    this.currentTime = 0;
    this.play();
}, false);
myAudio.play();

在这里,JavaScript会造成很小的差距,你可以通过播放循环来克服它--不是在音频完成的时候,而是在音频即将完成的时候。这是密码。

这是你想要的。

代码语言: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。

票数 3
EN

Stack Overflow用户

发布于 2018-05-29 04:26:22

这里的派对有点晚了,但我有一个https://github.com/floatinghotpot/cordova-plugin-nativeaudio的解决方案

这并不是最漂亮的实现--但它的工作完全是无懈可击的:

Javascript

代码语言: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()

别忘了在你结束的时候停止音程并卸载声音!

票数 0
EN

Stack Overflow用户

发布于 2015-06-29 18:21:14

试试SoundJS。它包括一个cordova插件

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30948333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档