Crackles:用简单的图形播放 iOS网络音频时发出的裂纹和噪音

当使用createMediaElementSource()将音频元素与网络音频图连接时,我注意到这偶尔会导致在 iOS 设备(iPhone,iPad)上播放时出现裂纹。在使用(便宜的)Android 设备或运行完全相同代码的 macOS 桌面时,我从未遇到过这些问题。

噪音通常在播放开始后很快出现,并在整个文件中持续存在。通常,当播放开始后不久没有声音问题时,它们根本不会出现。

一个演示可以在这里找到,但请注意,我可能需要重试几次,直到问题出现https://jsfiddle.net/st___h/36w7vxn2/8/show

完整代码:https://jsfiddle.net/st___h/36w7vxn2/8/

iPad 输出的记录,说明问题可以在这里找到:https://st-h.github.io/test/ios_playback_noise.mp3

这是用于设置图形的剪裁:

var context = new(window.AudioContext || window.webkitAudioContext)();
var gainNode = context.createGain();
var audio = new Audio();
audio.loop = true;
audio.crossOrigin = "anonymous";
audio.addEventListener('error', function(e) {
  alert(e);
});
var source = context.createMediaElementSource(audio);
source.connect(gainNode);
gainNode.connect(context.destination);
audio.src = "https://st-h.github.io/test/latencies.mp3";
audio.play();
gainNode.gain.setValueAtTime(0.9, gainNode.context.currentTime);

如果我只是将源连接到目的地之间没有任何节点的问题不太可能出现。

当打印出 audioContext 的 sampleRate 时,我注意到可能会显示 44100 或 48000。但是,我没有发现显示的问题与使用的采样率之间有任何关联。(检查是因为过去有报告说这可能是一个问题,并且噪声的类型可能与错误的采样率有关)

使用 iPhone 6s 和 iPad Pro(2017)进行了测试。有趣的是,这也显示了在 iOS 上使用 Chrome 浏览器。任何想法这里可能出了什么问题?

update

添加画布和分析器节点似乎增加了问题出现的可能性:https://jsfiddle.net/st___h/36w7vxn2/27/show

我还提交了一个 bug 到apple bug reporter

29.3.19

可能这可能是 webkit 中的一个错误:https://bugs.webkit.org/show_bug.cgi?id=196293https://bugs.webkit.org/show_bug.cgi?id=190552至少看起来我不是唯一一个面临类似问题的人。

一个月后,错误报告仍然没有收到任何回应。发布到苹果开坛也没有通知。

0

Steve Hummingbird,您在这里提到的 BufferSource 解决方法是否允许您暂停和恢复播放?

https://forums.developer.apple.com/thread/114772

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(238)
Ce16发动机正时图:FIX发动机的开发(fix engine)
上一篇
原神cdk:原线两侧的平行线(line parallel)
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(25条)