我想将canvas元素作为webrtc通信视频部分的mediastreamsource,任何方向都会很有帮助。我查遍了网络,发现没有多少资源讨论这个话题,您能帮我吗?
*长背景故事*
问题在于,我不能直接从摄像头发送视频,因为需要在显示之前处理视频(一些图像处理内容不在此问题范围内)。
以前,在另一个对等方的浏览器上,我没有直接使用<video>
标签显示视频,而是在隐藏的canvas元素上进行了一些处理,然后将详细信息复制到另一个canvas中(我使用了settimeout来进行绘画,这给人们实时视频的错觉
)。
现在,客户要求在传输视频之前进行处理,因此我使用webrtc直接传递音频流(先前通过webrtc发送音频和视频)。对于视频流,我有两个解决方案:
步骤:
在本地对等方上处理视频,绘制到隐藏的canvas上(容易实现)。
使用超时定期捕获图像数据并传输:
a) 使用websockets(经过服务器)
,效果非常糟糕,浏览器最终崩溃。
b) 使用RTCDataChannel
,性能更好,但有时会无缘无故失败。同时还会存在其他问题(例如,发送jpeg而不是webp会额外使用带宽)。
另一个主要问题是,由于我使用了timeout:当我切换选项卡时,对方屏幕的帧率会降低。
所以,有没有办法可以让我使用隐藏的canvas作为mediastreamsource,而不是手动实现呢?
mozCaptureStreamUntilEnded
方法,但在firefox中也需要预先录制媒体,对吧? - mido