【问题标题】:nextjs/socket.io video chat does not turn on the camera of some devicesnextjs/socket.io 视频聊天不打开某些设备的摄像头
【发布时间】: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)下一个变体:

  1. 我创建房间(视频+音频+聊天),加拿大用户从 Chrome 加入(看到我/自拍相机未打开,音频+聊天 => 一切正常)
  2. 我创建房间并从手机加入 => 一切正常,从另一个设备(笔记本)加入 => 案例 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


    【解决方案1】:

    您不能同时从两个不同的浏览器访问相机。

    来自getUserMedia - Cannot access camera from two browsers at the same time

    这是 Windows 的限制。在 Mac OS 上,您可以使用相同的相机 同时在多个应用程序中但不是在 Windows 中 很遗憾。

    我正在使用 kali Linux,但我无法访问。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-28
      • 1970-01-01
      • 2015-08-24
      • 1970-01-01
      • 2011-10-07
      • 1970-01-01
      • 1970-01-01
      • 2018-07-09
      相关资源
      最近更新 更多