FFmpeg音视频采集

音视频采集

DirectShow(简称DShow)是一个Windows平台上的流媒体框架,提供了高质量的多媒体流采集和回放功能,它支持多种多样的媒体文件格式,包括ASF、MPEG、AVI、MP3和WAV文件,同时支持使用WDM驱动或早期的VFW驱动来进行多媒体流的采集。

  • DirectShow大大简化了媒体回放、格式转换和采集工作。但与此同时,也为用户自定义的解决方案提供了底层流控制框架,从而使用户可以自行创建支持新的文件格式或其他用户的DirectShow组件。
  • DirectShow专为C++而设计。Microsoft不提供用于DirectShow的托管API。
  • DirectShow是基于组件对象模型(COM)的,因此当你编写DirectShow应用程序时,你必须具备COM客户端程序编写的知识。对于大部分的应用程序,你不需要实现自己的COM对象,DirectShow提供了大部分你需要的DirectShow组件,但是假如你需要编写自己的DirectShow组件来进行扩充,那么你必须编写实现COM对象。
  • 使用DirectShow编写的典型应用程序包括:DVD播放器、视频编辑程序、AVI到ASF转换器、MP3播放器和数字视频采集应用。

音频采集

获取设备信息

void Widget::capture()
{
   
    avdevice_register_all(); // 注册所有的设备
    qDebug() << "注册设备完成";
    AVFormatContext *fmt_ctx = avformat_alloc_context();            // 分配一个格式上下文
    const AVInputFormat *input_fmt = av_find_input_format("dshow"); // 查找输入格式
    if (!input_fmt)
    {
   
        qDebug() << "找不到输入格式";
        return;
    }
    AVDeviceInfoList *dev_list = nullptr; // 设备信息列表

    int ret = avdevice_list_input_sources(input_fmt, nullptr, nullptr, &dev_list); // 获取设备信息列表
    if (ret < 0)
    {
   
        qDebug() << "获取设备信息列表失败";
        return;
    }

    for (int i = 0; i < dev_list->nb_devices; i++)
    {
   
        qDebug() << "设备名称: " << dev_list->devices[i]->device_name;
        qDebug() << "设备描述: " << dev_list->devices[i]->device_description;
        // qDebug() << "设备类型: " << av_get_media_type_string(*(dev_list->devices[i]->media_types));
        qDebug() << "------------------------";
    }
    avdevice_free_list_devices(&dev_list);
    qDebug() << "设备信息获取完成";
}

录制麦克风

void Widget::recordMicrophone()
{<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

yerennuo

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

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

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

打赏作者

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

抵扣说明:

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

余额充值