Android-WebRTC:视频通话实时绘图

问题描述 投票:1回答:1

我正在尝试在Android(移动)应用上使用WebRTC制作一个简单的功能。该应用程序现在可以进行简单的视频通话:将两个设备彼此连接起来,让他们听到和看到。我想要实现的是在通话过程中进行一些现场绘画。简单地说:User1呼叫User2,呼叫建立连接,然后User1单击绘制按钮,该按钮将冻结视频帧并允许他在此冻结的帧上进行绘制。显然,User2应该可以在他的手机上实时看到该绘图。现在,我可以冻结帧(通过调用videoCapture.stopCapture())并使用自定义SurfaceViewRenderer在其上进行绘制。问题在于User2仅在冻结的框架中看不到图形。

首先,我尝试创建一个新的视频轨道,其中包含绘图画布和要绘画的冻结帧,但是我无法成功。使用peerConnectionFactory.createVideoTrack("ARDAMSv1_" + rand, videoSource);创建视频轨时我应该指定轨道的视频源,但是源只能是VideoSource,并且只能使用直接链接到设备摄像机的VideoCapturer创建此VideoSource(当然,上面没有任何图形) 。这解释了为什么User2在其设备上看不到任何图形。我的问题是:如何创建一个VideoCapturer,它可以流传输摄像机流(冻结的帧)和带有绘图的画布?

所以我尝试将自己的VideoCapturer实现为:1)捕获一个View(例如包含图形和冻结帧的布局)并将其流式传输给VideoSource或2)捕获摄像机视图,但在流传输之前将其添加到帧中。我无法完成任何工作,因为我不知道如何操纵I420Frame对象以在其上绘制并通过正确的回调将其返回。

也许我完全不赞成这种方法,需要做一些完全不同的事情,我愿意接受任何建议。PS:我将Android API 25与WebRTC 1.0.19742结合使用。我不想使用任何付费的第三方SDK / lib。

没有人知道如何从一个Android应用程序转换为另一个Android应用程序的简单WebRTC实时绘图吗?

android canvas drawing webrtc
1个回答
0
投票
在webrtc流上绘制:

您需要做的是获得stream to canvas

    然后有绘图应用程序在画布上进行编辑,我看一个William Malone项目。 (如果要导入图片,请先透明!)
  1. 最后(我想念的是您想念的是stream from canvas,就像使用任何WebRTC一样。
  • 我专门为您制作的一个小演示here(本地webrtc,请参阅日志)。
  • PS:我使用的是getDisplayMedia,而不是userMedia,因为我的网络摄像头是

    kaput ...

  • © www.soinside.com 2019 - 2024. All rights reserved.