gpt4 book ai didi

IOS WebAudio 仅适用于耳机

转载 作者:可可西里 更新时间:2023-11-01 06:18:44 26 4
gpt4 key购买 nike

一段时间以来,我一直遇到一个问题,在某些 iOS 设备上,我的网络音频系统似乎只能与耳机一起使用,而与其他设备(完全相同的操作系统、型号等)一样,音频通过扬声器播放得非常好或耳机。我已经搜索了解决方案,但没有找到任何关于这个确切问题的信息。我唯一能想到的可能是音频 channel 问题或其他问题。

我该如何解决这个问题?

最佳答案

@Alastair 是正确的,静音切换开关确实使 WebAudio 静音,但它不会使 HTML5 标签静音。多亏了他的工作,我设法找到了一个网络解决方案,即使在静音切换开关打开的情况下,WebAudio 也能播放。我会将此作为对他的回复的评论发布,但我没有声誉。

为了播放 WebAudio,您还必须在用户操作期间至少播放一个 WebAudio 声源节点和一个 HTML5 标签。如果这些声音是短暂的沉默,那很好。我发现这个独立的代码不需要任何额外的文件就可以工作:

编辑 2019 年 11 月 29 日:删除了残留的 typescript 类型定义。谢谢@Joep。我还意识到下面的代码已经过时而且很糟糕。仅将其视为示例。编辑这篇文章促使我为此创建一个开源解决方案。你可以在这里看到它的演示:https://spencer-evans.com/share/github/unmute/并在此处查看 repo 协议(protocol):https://github.com/swevans/unmute

/**
* PLEASE DONT USE THIS AS IT IS, THIS IS JUST EXAMPLE CODE.
* If you want a drop in solution I have a script on git hub
* Demo:
* @see https://spencer-evans.com/share/github/unmute/
* Github Repo:
* @see https://github.com/swevans/unmute
*/
var isWebAudioUnlocked = false;
var isHTMLAudioUnlocked = false;

function unlock() {
if (isWebAudioUnlocked && isHTMLAudioUnlocked) return;

// Unlock WebAudio - create short silent buffer and play it
// This will allow us to play web audio at any time in the app
var buffer = myContext.createBuffer(1, 1, 22050); // 1/10th of a second of silence
var source = myContext.createBufferSource();
source.buffer = buffer;
source.connect(myContext.destination);
source.onended = function()
{
console.log("WebAudio unlocked!");
isWebAudioUnlocked = true;
if (isWebAudioUnlocked && isHTMLAudioUnlocked)
{
console.log("WebAudio unlocked and playable w/ mute toggled on!");
window.removeEventListener("mousedown", unlock);
}
};
source.start();

// Unlock HTML5 Audio - load a data url of short silence and play it
// This will allow us to play web audio when the mute toggle is on
var silenceDataURL = "data:audio/mp3;base64,//MkxAAHiAICWABElBeKPL/RANb2w+yiT1g/gTok//lP/W/l3h8QO/OCdCqCW2Cw//MkxAQHkAIWUAhEmAQXWUOFW2dxPu//9mr60ElY5sseQ+xxesmHKtZr7bsqqX2L//MkxAgFwAYiQAhEAC2hq22d3///9FTV6tA36JdgBJoOGgc+7qvqej5Zu7/7uI9l//MkxBQHAAYi8AhEAO193vt9KGOq+6qcT7hhfN5FTInmwk8RkqKImTM55pRQHQSq//MkxBsGkgoIAABHhTACIJLf99nVI///yuW1uBqWfEu7CgNPWGpUadBmZ////4sL//MkxCMHMAH9iABEmAsKioqKigsLCwtVTEFNRTMuOTkuNVVVVVVVVVVVVVVVVVVV//MkxCkECAUYCAAAAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV";
var tag = document.createElement("audio");
tag.controls = false;
tag.preload = "auto";
tag.loop = false;
tag.src = silenceDataURL;
tag.onended = function()
{
console.log("HTMLAudio unlocked!");
isHTMLAudioUnlocked = true;
if (isWebAudioUnlocked && isHTMLAudioUnlocked)
{
console.log("WebAudio unlocked and playable w/ mute toggled on!");
window.removeEventListener("mousedown", unlock);
}
};
var p = tag.play();
if (p) p.then(function(){console.log("play success")}, function(reason){console.log("play failed", reason)});
}

window.addEventListener("mousedown", unlock);

关于IOS WebAudio 仅适用于耳机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21122418/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com