126.0.6478.127 chrome desktop,M1 mac 机型静音问题
heipaoDoctor opened this issue · 8 comments
有用户反馈,在如上的电脑型号上录音有静音的问题,在 官方demo 则没有这个问题 https://mdn.github.io/dom-examples/media/web-dictaphone/
大家有无遇到该问题?
Recorder默认也是使用的 MediaRecorder 获取音频数据,但多了个codec设置
new MediaRecorder(stream, {mimeType:"audio/webm; codecs=pcm"})
你可以修改一下mdn那个页面,MediaRecorder里面也加一下这个设置,试试是不是这个问题导致的
mediaRecorder.onstop里面直接把audioURL打印出来,复制这个url可以下载得到pcm文件,pcm文件拖进下面这个页面可以播放
这个问题又遇到了,也是 M1 机型,试了下老版本的测试页面没有问题:
https://xiangyuecn.github.io/Recorder/assets/%E5%B7%A5%E5%85%B7-GitHub%E9%A1%B5%E9%9D%A2%E5%8E%86%E5%8F%B2%E7%89%88%E6%9C%AC%E8%AE%BF%E9%97%AE.html#url=xiangyuecn:Recorder@1.0.19120600,/
请问新老版本有什么区别呢
改了一下官方html文件,加了 {mimeType:"audio/webm; codecs=pcm"} 参数,还是能正确工作
客户电脑里存在虚拟麦克风,该库的主测试页面:
https://xiangyuecn.github.io/Recorder/
在不设置麦克风的情况下:调用的是 getUserMedia({audio: {sampleRate: xxx}}) 不能使用正确的电脑默认麦克风设备,而选择了虚拟麦克风设备,导致无法录音。
原因还不明
去掉 trackSet[sampleRateTxt]=ctx[sampleRateTxt] 这个配置试试,可能是因为配置了sampleRate,同时设置 Recorder.ConnectEnableWebM=false 禁用掉MediaRecorder
Lines 986 to 990 in ac2e440
hi, 经过测试,getUserMedia 中设置 audio 的 sampleRate 时,chrome 会根据该数据去选择麦克风。当 audio 为 true 时,chrome 会选择 chrome://settings/content/microphone 中设置的麦克风。这个比较符合我们的预期。
在使用该库时:如果传 audioTrackSet 为 true,在 react 中会有该类报错:Cannot create property 'sampleRate' on boolean 'true'
this.rec = Recorder({
type: 'mp3',
audioTrackSet: true,
sampleRate: option.config?.sampleRate || 32000,
bitRate: option.config?.bitRate || 64, //mp3格式,指定采样率hz、比特率kbps,其他参数使用默认配置
});
能否在 trackSet[sampleRateTxt]=ctx[sampleRateTxt];//必须指明采样率,不然手机上MediaRecorder采样率16k 设置时,先判断 trackSet 是否为对象呢?如果是对象再设置采样率,否则就不设置了
下一版本看看删掉这个采样率配置,移除MediaRecorder支持
有些手机浏览器去掉采样率配置后可能无法打开录音,到时候调用getUserMedia的时候如果失败了要做一次重试,提供上采样率配置重试
新版本 1.3.24102001 已发布,已经删除了getUserMedia参数中的sampleRate配置;同时增强了对MediaRecorder的支持,返回的任意采样率数据均可正常录制