首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

WebRTC之摄像头预览

在前面《WebRTC之服务器搭建》我们已经搭建好了WebRTC所需的服务器环境,主要是三个服务器:房间服务器、信令服务器以及TURN穿透服务器。

后续我们将学习如何使用WebRTC一步一步实现音视频通话。今天我们将学习如何使用WebRTC预览摄像头数据。

这里透个底,后面的学习过程中大部分的实践都是基于WebRTC的官方封装库,因此绝大部分的代码都是Java或者Kotlin,暂时不会涉及到JNI的相关代码,所以门槛还是非常低的。

Good good study,day day up. So easy...

引入依赖库

首先我们在Android Studio工程中引入WebRTC的依赖库:

动态权限

首先肯定是需要权限的,如果需要音频数据则还需要权限。

对于动态权限相信有Android开发基础的童鞋们都不陌生了,gitHub上也有很多相关的开源库,笔者在这里就不多做介绍了。

预览摄像头

WebRTC作为一个点对点通信完整的解决方案,对于摄像头数据的获取及预览都已经做好了完整封装,开发者直接调用相关的API即可,并不需要开发者编写OpenGL纹理渲染等相关的逻辑代码。

使用WebRTC预览摄像头数据主要有以下几个步骤:

1、创建EglBase及SurfaceViewRenderer

其中EglBase一个重要的功能就是提供EGL的渲染上下文及EGL的版本兼容。

SurfaceViewRenderer则是一个继承于SurfaceView的渲染View,提供了OpenGL渲染图像数据的功能。

2、创建VideoCapturer

VideoCapturer主要作用则是提供摄像头数据,比如控制分辨率以及帧率等。

通过CameraEnumerator接口兼容Camera1和Camera2:

VideoCapturer创建完成之后需要使用SurfaceTextureHelper进行初始化,否则调用预览的时候会抛出未初始化的异常:

3、创建VideoTrack

VideoTrack是视频轨道,类似的还有AudioTrack音频轨道,它的作用将VideoCapturer获取到的视频数据结合VideoSource输出到SurfaceViewRenderer渲染显示。

使用VideoCapturer开启渲染

在Activity的相关生命周期中开启预览即可:

完整代码

CapturePreviewActivity.kt:

布局文件activity_capture_preview.xml:

关注我,一起进步,人生不止coding!!!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20210701A01FFH00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券