pili-engineering / QNRTC-Web

QNRTCWeb 是七牛云推出的一款适用于 Web 平台的实时音视频 SDK,提供了包括音视频通话、静音、发布、订阅多种功能,提供灵活的接口,支持高度定制以及二次开发。
https://demo-rtc.qnsdk.com/
Apache License 2.0
131 stars 127 forks source link

想在electron平台上用该sdk, 但是打开摄像头的时候报错。 #42

Closed Cxz-web closed 5 years ago

Cxz-web commented 5 years ago

报错信息:Could not start audio source。 SKD版本,2.1。 electron版本:4.1.3。

disoul commented 5 years ago

你可以试试将你的 electron 的启动访问地址改为 https://demo-rtc.qnsdk.com 然后正常音视频连麦看是否能复现这个错误

disoul commented 5 years ago

electron-sample.zip 你可以参考这个 SDK in Electron 的 Sample 工程,仅包含了采集摄像头的代码,npm install 之后 npm start 即可。

这个报错信息猜测是你 electron 访问的网址不是 https 或者 127.0.0.1 或者 本地文件。这回导致无法获取摄像头/麦克风

Cxz-web commented 5 years ago

你可以试试将你的 electron 的启动访问地址改为 https://demo-rtc.qnsdk.com 然后正常音视频连麦看是否能复现这个错误

换了别的笔记本电脑开发,能成功运行,可能是摄像头问题, 现在遇到另外一个问题, 关于录屏的,因为谷歌浏览器上需要安装插件, electron上怎么录屏呢?使用了electron里面的BrowserWindow.addExtension这个api会报错。

disoul commented 5 years ago

electron 的录屏模块是其自己负责的,SDK 没有对应封装。但是你可以使用这个 https://doc.qnsdk.com/rtn/web/docs/api_others#4 将 electron 录屏模块的输出包装成 SDK 的媒体对象

Cxz-web commented 5 years ago

非常感谢, 没注意到文档,我尝试一下。

Cxz-web commented 5 years ago

具体看了下文档, 您的意思是指, 我用electron 其它办法合成录屏track,再转化成SDK内置track对象推出去?

disoul commented 5 years ago

是的,通过 electron 的 desktopCapture 获取需要录制窗口的 sourceid,将 sourceid 传入 getUserMedia 获取 MediaStream,通过MediaStream.getAudioTracks()[0] / MediaStream.getVideoTracks()[0] 获取原生的 Track 对象,然后通过这个 API 转化成 SDK 的 Track 对象

Cxz-web commented 5 years ago

OK , 我现在去试下, thanks。

Cxz-web commented 5 years ago

@disoul , 您好,首先感谢你的帮助, 上周的问题基本都解决了, 还剩下一个问题就是sdk的问题。 有些笔记本在谷歌运行该sdk打开摄像头会报错,而火狐浏览器能够成功运行,我尝试打开七牛官网demo也是如此, 报错信息是(DOMException: Could not start audio source)。

disoul commented 5 years ago

这个可能是 Chrome 不支持这些笔记本的麦克风。 https://doc.qnsdk.com/rtn/web/docs/api_device_manager_track#2_2 你可以通过这个事件打印一下浏览器所有识别到的设备,看是否有 audioinput 设备

Cxz-web commented 5 years ago

@disoul 测试下了 ,点击允许摄像头的时候,发现谷歌下监听这个事件没有反应, 而火狐有反应 。看了下QNRTC.deviceManager.deviceInfo 在谷歌是有打印出audioInput和videoInput设备列表以及设备id的。

Cxz-web commented 5 years ago

@disoul 谷歌下QNRTC.deviceManager.deviceInfo这个打印出来的设备多达7个,kind为audioinput也有很多个,实际情况是火狐浏览器都能正确打印摄像头和音频设备各为一个。 要是在我的笔记本用户手动挑选的话或者使用默认设备会容易传进去错误的设备导致报错,我代码里面挑正确的id 传进去的话, 能够成功打开摄像头。

Cxz-web commented 5 years ago

音频还是无法打开,一旦track 传进去audio选项 sdk便报错。

Cxz-web commented 5 years ago

摄像头是支持的。

disoul commented 5 years ago

那应该就是 Chrome 不支持这种麦克风。这个属于原生层的错误,SDK 也只能抛出来。可以考虑外接个 usb 麦克风之类的。

Cxz-web commented 5 years ago

@disoul 好的, 明白了, 感谢!