播放带有简单图形的iOS Web音频时发出啪声和杂音

时间:2019-03-04 12:01:58

标签: ios html5-audio web-audio

使用createMediaElementSource()将音频元素与Web音频图连接时,我注意到在iOS设备(iPhone,iPad)上播放时,偶尔会产生crack啪声。在使用(便宜的)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浏览器显示。任何想法这里可能出什么问题吗?

更新

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

我还向apple bug reporter

提交了一个错误

29.3.19

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

一个月后,错误报告仍未收到任何响应。在Apple开发人员论坛上的帖子也没有发出通知。

1 个答案:

答案 0 :(得分:0)

多年来,这一直使我发疯。史蒂夫·蜂鸟(Steve Hummingbird),您在此处提到的BufferSource解决方法是否允许您暂停和恢复播放?

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