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