使用webrtc for android,如何在视频通话中保存图片?

Posted

技术标签:

【中文标题】使用webrtc for android,如何在视频通话中保存图片?【英文标题】:Using webrtc for android,how to save a image in the video call? 【发布时间】:2017-12-19 01:03:55 【问题描述】:

我不知道如何获取视频帧,所以我无法保存图像。

给我一​​些建议。非常感谢。

【问题讨论】:

问题 - 你想捕获视频视图的视频帧还是整个屏幕? 他们都可以解决我的问题! Neji,你能和我分享一些解决方案吗? 你能用 TextureView 代替 VideoView 来显示视频吗? 谢谢!但是不能使用TextureView。因为webrtc使用GLSurfaceView来渲染媒体流。 【参考方案1】:

由于画布和其他功能在 android 中不可用,我们可以通过截屏并在应用的 UI 中引入动画来避免这种情况。截图图像可以存储在配置的位置,并在以后重新使用它以将其交换给其他方

编辑:可以参考 AppRTC 来捕获 surfaceview()

https://codereview.webrtc.org/1257043004/

GLSurfaceView () 不应该工作,因为 webrtc 库拥有相机和屏幕。必须构建扩展类来获取 Videorenderer 并获取帧快照,一旦完成,就可以使用 cferran 在 opentok android 示例中提到的自定义 api displayFrame() 显示帧。

您也可以使用 OpenTok 库,但与 webRTC 相比,这是收费的。

【讨论】:

谢谢高拉夫!你能分享任何解决这个问题的具体方法吗?现在我使用应用程序的用户界面“GLSurfaceView”,但这没有任何意义。我尝试了很多方法,但都失败了。 再次感谢您的耐心等待! OpenTok 库可能是一个很好的解决方案。但是我们公司想减少产量。我找到了另一个解决方案!首先通过webrtc,我可以在方法'RenderFrame'中得到I420frame。然后我将 I420frame 转换为 YuvImage。最后,我使用 YuvImage 的方法 'compressToJpeg' 将其转换为 jpeg 图像。 喜欢你的方法,请求确认此方法保存的图像的质量和大小。 我发现图像有点灰。现在我正在寻找问题。【参考方案2】:

如果您对使用第三方库感兴趣,这里有一个关于如何实现此用例的示例:https://github.com/opentok/opentok-android-sdk-samples/tree/master/Live-Photo-Capture

如果您更喜欢直接使用 WebRTC,您可以在此处找到有关如何在 Android 上构建 WebRTC 的一般信息:https://webrtc.org/native-code/android/

【讨论】:

以上是关于使用webrtc for android,如何在视频通话中保存图片?的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu下编译webrtc for Android

WebRTC onicecandidate 不会在 chrome for android 上触发,但适用于所有其他浏览器,包括适用于 android 的 firefox

如何通过使用 jingle 和 webrtc 来安装 Android voip?

Android : 如何使用 WEBRTC android io.pristine.libjingle:11139 打开手电筒

如何在 Flutter(Android 和 Ios)中实现与 WebRTC 的电话会议视频聊天

如何在Chrome for WebRTC应用程序中记录/查看ICE连接检查消息?