Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用移动浏览器进行无间隙音频循环?_Javascript_Html_Cordova - Fatal编程技术网

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

Javascript 如何使用移动浏览器进行无间隙音频循环?,javascript,html,cordova,Javascript,Html,Cordova,似乎我无法用手机实现无缝循环。这就是我到目前为止所做的: 制造了一个缺口 制造了一个缺口 制造了一个缺口 下载相同的音频两次 制造了一个缺口 HTML5音频 制造了一个缺口 科尔多瓦的媒体插件 制造了一个缺口 网络音频 工作 对于1.5分钟的音频剪辑,解码时间>30秒 以上都用mp3和ogg进行了测试 编辑: SoundJS的cordova插件坏了,因此无法工作 试试看。它包括一个 使用HTML5 如果您使用的是HTML5,则使用循环属性 在这里,JavaS

似乎我无法用手机实现无缝循环。这就是我到目前为止所做的:

  • 制造了一个缺口

  • 制造了一个缺口

  • 制造了一个缺口
  • 下载相同的音频两次

  • 制造了一个缺口
HTML5音频

  • 制造了一个缺口
科尔多瓦的媒体插件

  • 制造了一个缺口
网络音频

  • 工作
  • 对于1.5分钟的音频剪辑,解码时间>30秒
以上都用mp3和ogg进行了测试

编辑:

SoundJS的cordova插件坏了,因此无法工作

试试看。它包括一个

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

在这里,JavaScript将创建一个小间隙,您可以通过播放循环来克服它,不是在音频结束时,而是在音频即将结束时。 这是代码

这是你想要的


是演示。

在这里参加聚会有点晚,但我有一个
https://github.com/floatinghotpot/cordova-plugin-nativeaudio

这不是最漂亮的实现--但它完全是无间隙工作的:

Javascript


完成后,不要忘记停止音程并卸载声音

我已经通知他们他们的插件不起作用了:你是认真的吗?HTML音频造成了其中最糟糕的差距所有javascript版本也造成了严重的差距,如果你想展示如何进行无间隙播放循环,请使用无间隙本身的声音文件,文件开头和结尾都没有马蹄声。我要问主持人,即使赏金昨天用完了,他们是否还能给你。如果你的音频有缺口,请尝试
this.currentTime=0.5
。你可以预装第二份,播放第一份,观察位置,在第一场比赛结束前进行第2~200米。可能需要调整延迟,或者从基准计算延迟…我担心这和交叉衰落似乎是唯一可能的解决方案。当所有平台和设备的延迟不相同时,您的建议存在问题。交叉衰落在某些声音上是好的,但在其他声音上是坏的。是的,你可能可以用无声音轨来测量延迟/滞后,但你是对的,它不会是完美的。这可能是可以接受的,也可能比什么都没有或是一个热门的电话要好。。。还有尾随静音的问题,这可能需要通过CORS和API来解决,以便加载尾随并找到最后的音频内容。我可能不得不使用长音轨(如8分钟+),只在那里留下间隙,希望没有人注意到。:/。我希望webaudio的解码速度不要这么慢,因为它是唯一一个能够完美循环的。你可能会想奖励它以获得更多曝光,我希望看到一个好的解决方案。
<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>
myAudio = new Audio('someSound.ogg'); 
myAudio.addEventListener('ended', function() {
    this.currentTime = 0;
    this.play();
}, false);
myAudio.play();
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();
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()