【发布时间】:2023-01-27 15:32:59
【问题描述】:
我决定将视频聊天添加到我现有的 nextjs 应用程序中,但遇到了 2 个问题。
堆栈:nextjs@10、socket.io@4、socket.io-client@4、express
因为我对此完全陌生,所以我查看了很多选项并选择了这个来探索(有我自己的小改动,包括 nextjs 后端功能):video-chat-webrtc
我的 comp 中的本地主机:一切正常。测试服务器(带 ELB AWS)下一个变体:
- 我创建房间(视频+音频+聊天),加拿大用户从 Chrome 加入(看到我/自拍相机未打开,音频+聊天 => 一切正常)
- 我创建房间并从手机加入 => 一切正常,从另一个设备(笔记本)加入 => 案例 Chrome:一切正常,但不是从笔记本相机翻译,从 Firefox 加入 => 没有翻译任何东西,只有聊天和声音.
所以声音和聊天消息总是被传输,相机捕获有问题(有一个允许访问的请求 - 全部允许) 在控制台中:
获取 userMedia 时出错:DOMException:启动视频输入失败
负责采集视频和音频的部分代码:
useEffect(() => { navigator.mediaDevices.getUserMedia({ video: { width: 1280, height: 720 }, audio: true }).then(stream => { console.log('STREAM OBJECT: ', stream); localMediaStream.current = stream; addNewClient(LOCAL_VIDEO, () => { const localVideoElement = peerMediaElements.current[LOCAL_VIDEO]; if (localVideoElement) { localVideoElement.volume = 0; // off self sound micro localVideoElement.srcObject = stream; } }); socket.emit(SOCKET_ACTIONS.JOIN_ROOM, {room: roomID}); }).catch(e => { console.warn('Error getting userMedia:', e); socket.emit(SOCKET_ACTIONS.JOIN_ROOM, {room: roomID}) }); }, []);
【问题讨论】:
标签: reactjs socket.io next.js video-capture