Qt基于FFmpeg读取摄像头并进行H264编码

一、读取摄像头的基础知识

1、读取摄像头用到的类库Libavdevice:可以读取电脑(或者其他设备上)的多媒体设备的数据,或者输出数据到指定的多媒体设备上等。

这个库支持以下设备作为输入端:avfoundation、bktr、dshow(本文使用)、fbdev、gdigrab、jack、lavfi、libcdio、openal、vfwcap等

支持以下设备作为输出端:alsa、caca、decklink、fbdev、opengl、sndio、xv等

2、libavdevice使用

头文件:#include "libavdevice/avdevice.h"

注册:libavdevice:avdevice_register_all()

2.1使用libavdevice读取数据和直接打开视频文件类似。因为系统的设备也被FFmpeg认为是一种输入的格式(即AVInputFormat)。使用FFmpeg打开一个普通的视频文件如下:

AVFormatContext *formatContext = avformat_alloc_context();
avformat_open_input(&formatContext , "Warcraft3_End.avi",nullptr,nullptr);

2.2使用libavdevice,唯一的不同在于需要首先查找用于输入的设备。(av_find_input_format())

AVFormatContext *formatContext = avformat_alloc_context();
AVInputFormat *ifmt=av_find_input_format("dshow");//windows上视频的推流格式
avformat_open_input(&formatContext , "video=Integrated Camera", ifmt,NULL);

注:1、如果是指定了vfwcap设备作为输入设备,在URL中指定打开第0个摄像头设备如下

avformat_open_input(&formatContext , 0, ifmt,NULL);

2、URL的格式是"video={设备名称}",设备名称外面不能加引号,注意空格。

3、dshow的设备名称必须要提前获取

2.3可以在   我的电脑--》管理--》设备管理器   中查找本机摄像头名称也可以通过代码获取 

获取摄像头数量和名称

.pro文件中添加如下:

QT         +=   multimedia
QT         +=  multimediawidgets
    //头文件QCameraInfo、QCamera
    QList<QCameraInfo> cameraList = QCameraInfo::availableCameras();
    qDebug()<<cameraList.size()<<endl;
    for(int i=0;i<cameraList.size();i++)
    {
        qDebug()<<camera
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ze言

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

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

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

打赏作者

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

抵扣说明:

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

余额充值