- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- 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 浏览器。知道这里可能出了什么问题吗?
更新
添加 Canvas 和分析器节点似乎会增加问题出现的可能性: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 开发论坛的帖子也已消失,恕不另行通知。
最佳答案
多年来,这一直让我发疯。 Steve Hummingbird,您在此处提到的 BufferSource 解决方法是否允许您暂停和恢复播放?
关于ios - 使用简单图形播放 iOS 网络音频时出现爆裂声和噪音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54982847/
我需要一些帮助。我正在将部分 IOS 应用程序代码从 OpenAL 转换为 AVAudioEngine,因为 OpenAL 似乎在 IOS 9 中运行不佳。我遇到以下问题。当我调用 AVAudioPl
我在使用 Java 源数据行时遇到问题。我需要演奏一个音调,所以我创建了一个仅代表音调的 Tone 类。一切工作正常,除了当我播放声音时,扬声器在声音开始时弹出。有没有什么办法解决这一问题?它用于一个
我是一名优秀的程序员,十分优秀!