Qt 实现的万能采集库( 屏幕/相机/扬声器/麦克风采集)

这篇具有很好参考价值的文章主要介绍了Qt 实现的万能采集库( 屏幕/相机/扬声器/麦克风采集)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【写在前面】

        之前应公司需要,给公司写过一整套直播的库( 推拉流,编解码),类似于 libobs

        结果后来因为没有相关项目,便停止开发&维护了。

        不过里面很多有用的组件,然后也挺好用的,遂开源出来一部分。

        因此,本篇就简单讲一下用法。


【正文开始】

        关于 AnyCapture:

AnyCapture 是一个基于 Qt 的回调式采集库。

它简化了各类采集实现(包装),提供相当方便的接口,旨在能够轻松集成以实现采集相关工作。

        采集目标:

  • 轻松采集屏幕, ScreenCapture 提供多种采集模式(GDI/DX9/DXGI),AnyCapture 默认将自动选择

  • 轻松采集相机, CameraCapture 使用 Qt Multimedia 完成采集工作。

  • 轻松采集音频输入&输出, AudioCapture 使用 WASAPI(Windows)。

最多支持采集1个屏幕&1个相机&1个音频输入&1个音频输出, 然而可简单实例多个(无需担心资源占用)实现多路采集。

        如何构建:

1、构建 libyuvconvertor, 为 libyuv 浅包装, 构建文件 /libyuvconvertor/libyuvconvertor.pro。

2、构建 anycapture, 构建文件 anycapture.pro。

         如何使用:

1、使用 availableCameras() / availableScreens() / availableAudioInputs() / availableAudioOutputs() 获取有效设备。

2、使用 startCapture*() 开启采集, 采集到的资源将通过回调传递。

3、使用 stopCapture*() 停止采集。

          AnyCapture 接口说明:

    /**
     * @brief 获取有效的相机列表
     * @return QList<CameraDevice>
     */
    static QList<any_capture::CameraDevice> availableCameras();

    /**
     * @brief 开始采集相机
     * @param info 要采集的相机信息{使用 @link availableCameras() 获取}
     * @param settings 相机设置
     * @param format 输出图像格式
     * @param callback 采集回调{为空则可使用 @link grabCameraFrame() 抓取}
     * @param master 采集回调指针
     * @return bool{true:成功; false:失败}
     */
    bool startCaptureCamera(const QCameraInfo &info, const QCameraViewfinderSettings &settings, any_capture::OutputVideoFormat format
                            , any_capture::capture_callback callback, void *master);

    /**
     * @brief 抓取一帧相机帧
     * @warning 需要先使用{@link startCaptureCamera()}
     * @return QVideoFrame
     */
    QVideoFrame grabCameraFrame() const;

    /**
     * @brief 停止采集相机
     */
    void stopCaptureCamera();

    /**
     * @brief 获取有效的屏幕列表
     * @return QList<QScreen *>
     */
    static QList<QScreen *> availableScreens();

    /**
     * @brief 开始采集屏幕
     * @param captureScreen 要采集的屏幕{使用 @link availableScreens() 获取}
     * @param captureFrameRate 捕获帧率
     * @param captureCursor 是否捕获光标
     * @param format 输出图像格式
     * @param callback 采集回调{为空则不会采集,但可使用 @link grabScreen() 抓取}
     * @param master 采集回调指针
     * @return bool{true:成功; false:失败}
     */
    bool startCaptureScreen(QScreen *captureScreen, int captureFrameRate, bool captureCursor, any_capture::OutputVideoFormat format
                            , any_capture::capture_callback callback, void *master);

    /**
     * @brief 抓取一帧屏幕
     * @warning 需要先使用{@link startCaptureScreen()}
     * @return QImage
     */
    QImage grabScreen() const;

    /**
     * @brief 停止采集屏幕
     */
    void stopCaptureScreen();

    /**
     * @brief 获取有效的音频输入
     * @return QList<any_capture::AudioDevice>
     */
    static QList<any_capture::AudioDevice> availableAudioInputs();

    /**
     * @brief 开始采集音频输入
     * @param input 要采集的音频输入
     * @param callback 采集回调
     * @param master 采集回调指针
     * @return bool{true:成功; false:失败}
     */
    bool startCaptureAudioInput(const any_capture::AudioDevice &input, any_capture::capture_callback callback, void *master);

    /**
     * @brief 停止采集音频输入
     */
    void stopCaptureAudioInput();

    /**
     * @brief 获取有效的音频输出
     * @return QList<any_capture::AudioDevice>
     */
    static QList<any_capture::AudioDevice> availableAudioOutputs();

    /**
     * @brief 开始采集音频输出
     * @param output 要采集的音频输出
     * @param callback 采集回调
     * @param master 采集回调指针
     * @return bool{true:成功; false:失败}
     */
    bool startCaptureAudioOutput(const any_capture::AudioDevice &output, any_capture::capture_callback callback, void *master);

    /**
     * @brief 停止采集音频输出
     */
    void stopCaptureAudioOutput();

【结语】

        注意:AudioCapture / ScreenCapture / CameraCapture 都可以单独使用。

        项目链接(多多star呀..⭐_⭐):

        CSDN 的:https://download.csdn.net/download/u011283226/89067080?spm=1001.2014.3001.5501https://download.csdn.net/download/u011283226/89067080?spm=1001.2014.3001.5501        Github 的:https://github.com/mengps/AnyCapturehttps://github.com/mengps/AnyCapture文章来源地址https://www.toymoban.com/news/detail-859593.html

到了这里,关于Qt 实现的万能采集库( 屏幕/相机/扬声器/麦克风采集)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PR软件中的音频硬件扬声器显示不工作的故障

    PR2020软件中的音频硬件扬声器显示不工作的故障问题解决方法:  今天给大家介绍一下PR软件中的音频硬件扬声器显示不工作的故障的具体解决方法。 首先打开电脑上的pr软件,进入主页面,点击页面顶端的编辑选项; 在打开的菜单中,找到最底下的首选项,点击; 然后在打

    2024年02月07日
    浏览(38)
  • MacBook Pro 14/16英寸2021款 扬声器 爆音问题 噼啪声

    ** ** 提示:MacBook Pro 14/16英寸2021款 扬声器爆音问题 本人的2021款MacBook Pro 14寸本在播放音频或者视频时,会很间接性的出现叭、叭、叭的爆音问题。(系统已更新到最新的 macOS Monterey 12.4 ) 据苹果官方给出的说法是此问题为已知问题,涉及范围包括2021款MacBook Pro 14/16英寸 M1芯

    2024年02月06日
    浏览(53)
  • 使用ffmpeg调用电脑自带的摄像头和扬声器录制音视频

    1、打开cmd,执行 chcp 65001 ,修改cmd的编码格式为utf8,避免乱码 2、执行指令 ffmpeg -list_devices true -f dshow -i dummy ,查看当前window的音频和视频名称 3、打开windows系统的\\\"打开声音设置\\\"–“麦克风隐私设置”–\\\"允许应用访问你的麦克风\\\"点击开启 录制视频: 录制音频: 录制音视频:

    2024年02月04日
    浏览(58)
  • Vosk 扬声器内录语音识别转文字 最简洁的C#代码

    最近在看小众西语电影,但苦于没字幕,只能自己想办法弄实时语音识别。然而网上给出的很多相关代码,大部分是基于已有的wav文件或者麦克风外录的方式实现的。我这里就稍微改进了一下,可以在内录(英文资料说的的是loopback audio recording)的情况下进行语音转文字。这里

    2024年02月14日
    浏览(49)
  • WM8978 —— 带扬声器驱动程序的立体声编解码器(2)

    接前一篇文章:WM8978 —— 带扬声器驱动程序的立体声编解码器(1) 引脚(PIN) 名称(NAME) 类型(TYPE) 描述(DESCRIPTION) 1 LIP 模拟输入 左麦克风前置放大器正极输入 2 LIN 模拟输入 左麦克风前置放大器负极输入 3 L2/GPIO2 模拟输入 左声道线路输入 / 辅助麦克风前置放大器正

    2024年03月22日
    浏览(43)
  • Python 一步一步教你用pyglet制作可播放音乐的扬声器类

    目录 扬声器类 1. 绘制喇叭 2. 扬声器类 3. 禁音状态  4. 设置状态 5. 切换状态 6. 播放音乐 本篇将教你用pyglet画一个小喇叭,如上图。这里要用到pyglety库shapes模块中的圆弧Arc和多边形Pylygon画出这个扬声器的图片: Arc(x, y, radius, segments=None, angle=6.283185307179586, start_angle=0, closed=

    2024年03月10日
    浏览(60)
  • 虚拟声卡(虚拟扬声器和虚拟麦克风)应用之音频回环(Virtual Audio Cable)

    首先在了解Virtual Audio Cable音频回环技术之前,我们先介绍几个基础的概念: 虚拟声卡:是一种硬件虚拟化技术;基于软件技术虚拟出麦克风或者虚拟扬声器硬件,提供给上层用户程序使用虚拟麦克风和扬声器,例如通过给虚拟扬声器喂送音频数据实现麦克风录音效果。 音频

    2024年01月17日
    浏览(152)
  • ASUS电脑显示未连接扬声器(英特尔智音技术版),声卡驱动修复,Realtek修复

            本人的电脑在用CCleaner的驱动更新后,突然发现电脑无法播放声音,点开设备管理器后显示设备也是正常的,但就是识别不到扬声器设备。         在实验过Realtek等安装方法之后无果(我的Realtek显示不支持此机器 ),我在设备管理器中发现,系统设置中的英特尔

    2024年02月12日
    浏览(149)
  • 如何在云电脑串流中实现声音输入输出—虚拟声卡(虚拟扬声器和虚拟麦克风)开发

    虚拟声卡(虚拟扬声器和虚拟麦克风)技术原理简介 近些年云计算的发展可谓是势不可挡,无论是办公还是娱乐等行业都开始使用云计算来逐步替代直接使用本地物理硬件的技术,例如: 服务器部署。相比之前,现在部署一个服务器都非常简单;我们只需要在阿里云,华为

    2024年02月04日
    浏览(60)
  • (二)Qt多线程实现海康工业相机图像实时采集

    提示:这里是该系列文章的所有文章的目录 第一章: (一)Qt+OpenCV调用海康工业相机SDK示例开发 第二章: (二)Qt多线程实现海康工业相机图像实时采集 本文主要讲述了使用Qt多线程实现海康工业相机图像的采集,并在界面上将两个相机采集到的图像信息同时显示出来,在

    2024年02月04日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包