当前位置: 首页 > 工具软件 > QtAV > 使用案例 >

QtAV库编译及使用方法

司马渝
2023-12-01

QtAV库介绍

  为了使用Qt播放rtmp流媒体视频,本项目使用了QtAV库。QtAV支持硬件解码播放流媒体及本地视频。用于解码的AVPlayer继承于QObject,用于显示的WidgetRenderer继承于QWidget,使用中传入URL或文件地址即可播放媒体文件的音视频内容。
  使用QtAV可以在官网下载编译好的库,也可以自行编译。下载库要注意下载合适的位数和编译器。
  编译方法参考项目介绍,以及wiki页面Build QtAV
总结如下:

  1. 下载源码

    git clone https://github.com/wang-bin/QtAV.git
    cd QtAV && git submodule update --init
    

    下载依赖QtAV-depends-windows-x86+x64.7z

  2. 编译方法

    1. 解压依赖文件,将其中include、lib和bin文件夹下的内容拷贝到Qt安装目录下,如C:/Qt/5.15.2/msvc2019_64/目录下的include/lib/bin/文件夹。
    2. 打开QtAV.pro使用QtCreator编译。
    3. 运行build-Release文件夹下的sdk_install.bat文件安装编译好的库。

注意:将Qt运行库目录添加到环境变量,本例中为C:/Qt/5.15.2/msvc2019_64/bin,如电脑中还安装了PyQt,要将改环境变量放在其他变量之前,否则编译出来的程序在QtCreator中可以运行,单独运行会找不到运行库。

示例代码

#include <QApplication>
#include <QtAV>
#include <QtAVWidgets>
#include <qDebug>

int main(int argc, char *argv[])
{
    QString url;
    if (argc != 2){
        url = "rtmp://58.200.131.2:1935/livetv/cctv9hd";
        qDebug() << "default url:" << url;
    }
    else{
        url = *(argv + 1);
        qDebug() << "url:" << url;
    }

    QApplication a(argc, argv);

    QStringList priorityList;
    priorityList << "CUDA" << "FFmpeg";
    QtAV::WidgetRenderer renderer;
    renderer.show();
    QtAV::AVPlayer player;
    player.setRenderer(&renderer);
    player.setVideoDecoderPriority(priorityList);
    player.setBufferMode(QtAV::BufferBytes);
    player.setBufferValue(1000);
    player.play(url);

    return a.exec();
}

网页播放流媒体

网页播放器对rtmp的支持欠佳,大多调用flash播放,可使用5.x版本的video.js播放。随着flash退出历史舞台,多采用http-flv格式的网页直播方式。bilibili开源的flv.js支持http-flv格式的流媒体播放,也可配合FFmpeg播放rtmp流。

 类似资料: