Wami录音机第一次没有拾取音频
Wami-Recorder not picking up audio the first time
我对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记录器的机制冲突,结果是Wami记录器的权限请求变得无用(即使它仍然显示)。
我通过强制 Chrome 的权限对话框访问麦克风来让它工作。允许访问麦克风后,此权限在浏览器网站会话的其余部分保持不变。我通过请求通过HTML5使用麦克风,从这里复制代码来强制权限对话框。
并非所有浏览器都支持 HTML5 或仅通过 HTML5 访问麦克风。此外,在其他浏览器上,这种黑客是不必要的。为了仅针对Chrome强制对话框,我将代码放在测试Chrome的条件中。奇怪的是,这实际上破坏了 Chromium 上的记录器(奇怪的是,与 Chrome 上的对应记录器相反,它正在工作)。我在这里找到了一些将Chrome与Chromium区分开来的代码。
这是我的代码:
/**
* 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({ ... });
相关文章:
- 如何播放部分音频文件
- 音频控件在mouseover上显示,在mouseout上淡出
- HTML5音频加载和播放获胜'我不能在iPad上工作
- 是否可以在浏览器中使用纯JavaScript保存音频流
- angular不会更改json的音频源
- 通过幻灯片更改事件停止使用jquery的音频
- 音频和动画在javasctipt循环中同步
- 使用jQuery控制来自图像的音频
- 调整<音频>元素
- javascript:发送带有音频文件的POST,然后重定向到新页面
- 使用带有CefSharp或CefGlue的JavaScript的本地或流式音频
- 未能加载,因为找不到支持的源.当播放HTML5音频元素时
- 动态加载的自定义javascript/jQuery/HTML5音频播放器的问题
- <的自定义进度条;音频>并且<进度>HTML5元素
- 录音机未将控制权返回到phonegap应用程序
- 当用户点击音频控件时,无法接收点击事件
- Html5音频时间更新精度
- HTML5音频如何防止浏览器麦克风拾取所有声音
- Wami录音机第一次没有拾取音频
- 录音机JS录制/下载音频缓冲区网络音频API