WebRTC笔记之五:摄像头的捕捉和显示

一.环境

WebRTC版本:2021.03.07的master分支,详见 WebRTC学习之二:编译

Qt版本:Qt5.12.6 VS2017

二.效果

.实现

通过VideoCpatureModule模块注册一个rtc::VideoSinkInterface<webrtc::VideoFrame>,然后在rtc::VideoSinkInterface<webrtc::VideoFrame>子类的OnFrame实现摄像头的捕捉,然后转换成rgb格式显示到Qt界面上,如下所示:

#include "QHVideoCaptureCallback.h"
#include "libyuv.h"

#include <QDebug>

QHVideoCaptureCallback::QHVideoCaptureCallback()
{

}

QHVideoCaptureCallback::~QHVideoCaptureCallback()
{

}

void QHVideoCaptureCallback::OnFrame(const VideoFrame& videoFrame)
{
    MutexLock lock(&lock_);
    int height = videoFrame.height();
    int width &
  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
WebRTC中切换摄像头可以通过以下步骤实现: 1. 获取当前媒体流对象:使用`getUserMedia`方法获取当前正在使用的媒体流对象。这个方法接受一个参数,包含了要获取的媒体类型(例如视频和音频)。 ```javascript navigator.mediaDevices.getUserMedia({ video: true, audio: true }) .then(function(stream) { // 获取到媒体流对象stream }) .catch(function(error) { // 处理错误 }); ``` 2. 获取所有可用的视频输入设备:使用`enumerateDevices`方法获取所有可用的视频输入设备。这个方法返回一个Promise对象,可以通过`then`方法获取设备列表。 ```javascript navigator.mediaDevices.enumerateDevices() .then(function(devices) { // 获取到设备列表 devices.forEach(function(device) { if (device.kind === 'videoinput') { console.log(device.label + " - " + device.deviceId); } }); }) .catch(function(error) { // 处理错误 }); ``` 3. 切换摄像头:在切换摄像头之前,需要先停止当前正在使用的媒体流对象,然后重新获取新的媒体流对象。 ```javascript // 停止当前媒体流对象 stream.getTracks().forEach(function(track) { track.stop(); }); // 获取新的媒体流对象 navigator.mediaDevices.getUserMedia({ video: { deviceId: newDeviceId }, audio: true }) .then(function(stream) { // 获取到新的媒体流对象stream }) .catch(function(error) { // 处理错误 }); ``` 在上面的代码中,`newDeviceId`是要切换的摄像头设备的ID。 通过以上步骤,你可以在WebRTC应用中实现切换摄像头的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

草上爬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值