想象一个视频通话应用程序,您允许用户禁用其相机流(例如,出于隐私原因),并且还可以使用相机拍照,然后通过数据通道将其发送给对等方。现在,如果您想同时执行这两项操作(即允许用户禁用视频流以隐藏他的公寓、他的裸露部分或他周围的人等,同时操作手机拍摄一张不存在的照片)在隐私方面至关重要...),您遇到了一些麻烦,因为当从 WebRTC api 使用
captureFrame
录制图片时,您需要启用流。对此的技术解决方案是什么?
我首先想到的也是唯一的事情是启用摄像机流并在将其发送到远程对等点之前使用可插入的流对其进行修改,这样远程对等点会看到黑屏,而用户可以看到自己的摄像机流并且用它来录制照片。这是一个可行的解决方案吗?
我还没有尝试过这个,因为我正在使用 flutter_webrtc,它不支持可插入流,因此我正在寻找替代方案。您能否为这个问题提供替代解决方案,即无需可插入流即可工作的解决方案?
找到了一些看起来像是解决方案的东西:
getUserMedia
创建新的本地流,在本地渲染器中显示它,使用 captureFrame
使用它进行照片捕获,但不要将其添加到对等连接。getUserMedia
重新启动本地流并使用 RTCRtpSender.replaceTrack
将视频轨道添加到对等连接(以避免重新协商/重新连接)。除了 Android 设备上的日志中显示一些 CameraException 之外,这似乎有效。