gpt4 book ai didi

php - Wami-Recorder 第一次没有拾取音频

转载 作者:行者123 更新时间:2023-11-30 05:51:26 26 4
gpt4 key购买 nike

我对 Wami 录音机有一个非常奇怪的问题。在允许 flash 文件使用我的麦克风后,我尝试录制一个音频剪辑。然而,大多数情况下,并非总是如此,第一次尝试录制时会向服务器传递一个空的音频剪辑。

FLASH: Listening...
FLASH: Recording at rate: 22050
FLASH: POST 44 bytes of type audio/x-wav
FLASH: Expected Samples: 27849 Actual Samples: 0
FLASH: Unlistening.
FLASH: POST openHandler: [Event type="open" bubbles=false cancelable=false eventPhase=2]
FLASH: POST progressHandler loaded:7 total: 0
FLASH: POST: completeHandler

相对于

FLASH: Listening...
FLASH: Recording at rate: 22050
FLASH: POST 34860 bytes of type audio/x-wav
FLASH: Expected Samples: 19161 Actual Samples: 17408
FLASH: Unlistening.
FLASH: POST openHandler: [Event type="open" bubbles=false cancelable=false eventPhase=2]
FLASH: POST progressHandler loaded:7 total: 0
FLASH: POST: completeHandler

我无法弄清楚是什么原因造成的,因为它似乎并没有发生在每个人身上。

最佳答案

我也一直在为这个问题苦苦挣扎。值得庆幸的是,我终于找到了解决方法。

我认为问题在于:Chrome 有自己的机制来管理用户使用麦克风的权限,而这些机制取决于操作系统。在windows+Chrome上,这种特殊机制与Wami-recorder的机制冲突,导致Wami-recorder的权限请求变得无用(即使它仍然显示)。

我通过强制 Chrome 的权限对话框访问麦克风来让它工作。允许访问麦克风后,此权限适用于浏览器网站 session 的其余部分。我通过 HTML5 请求使用麦克风来强制打开权限对话框,从 here 复制代码.

并非所有浏览器都支持 HTML5 或仅支持通过 HTML5 访问麦克风。此外,在其他浏览器上,这种 hack 不是必需的。为了仅针对 Chrome 强制对话框,我将代码放在一个条件中以测试 Chrome。奇怪的是,这实际上破坏了 Chromium 上的记录器(奇怪的是,与 Chrome 上的记录器相反,它正在工作)。我找到了一些区分 Chrome 和 Chromium 的代码 here .

这是我的代码:

/**
* isChrome (WithPDFReader)
* thanks to Rob W from
* https://stackoverflow.com/questions/17278770/how-do-i-detect-chromium-specifically-vs-chrome
*/
function isChrome()
{
for (var i=0; i<navigator.plugins.length; i++)
if (navigator.plugins[i].name == 'Chrome PDF Viewer') return true;
return false;
}

/* somewhere else: */

/*
* If on Chrome (not Chromium), force permission request
*/
if( isChrome() )
{
var context = new window.webkitAudioContext();
navigator.webkitGetUserMedia({audio: true}, function(stream) {
var microphone = context.createMediaStreamSource(stream);
var filter = context.createBiquadFilter();
// microphone -> filter -> destination.
microphone.connect(filter);
filter.connect(context.destination);
}, function(){ /* do something */ });
}

// initialize Wami
Wami.setup({ ... });

关于php - Wami-Recorder 第一次没有拾取音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14617998/

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