一:Qtav
1.首先说下:如果你的环境是下面网站中有的环境,你就可以直接使用,没必要重新编译构建。
直接下载作者编译好的,执行里面的脚本
2.我的环境是vs2013+qt5.7 环境恰恰和作者提供的环境不一样GG。我试者直接使用发现了很多编译链接问题,没办法重新编译qtav。
qtav的编译过程其实很简单:
- 下载 http://sourceforge.net/projects/qtav/files/depends/QtAV-depends-windows-x86%2Bx64.7z/download
- 下载后将里面的lib和include 下的文件放到你的qt环境中,我的qt目录是 C:\Qt\Qt5.7.0\5.7\msvc2013\ include里的放到该目录的include下,lib里的放到lib下。
- 下载qtav源码 ,我用git
git clone https://github.com/wang-bin/QtAV.git
git submodule update --init
- 打开你git clone 下的目录 D:\QtAV 打开QtAV.pro
5.单击右键,执行qmake。
编译完成后:打开编译生成的文件夹执行,sdk_install.bat 这个脚本会把编译生成的lib文件和头文件放到我们的环境中。
二:使用qtav
使用的方法简单
1.修改pro文件
扫描二维码关注公众号,回复:
1894254 查看本文章
QT += avwidgets
2.主文件包含头文件
#include <QtAV>
#include <QtAVWidgets>
3.小的测试例子:
QFile vidfile("D:\\2518.avi");
if (!vidfile.open(QIODevice::ReadOnly))
return 1;
AVPlayer player[2];
WidgetRenderer renderer[2];
renderer[0].setParent(&w);
renderer[0].show();
renderer[0].widget()->setWindowTitle(QString::fromLatin1("F:\\1.avi"));
renderer[1].show();
renderer[1].widget()->setWindowTitle(QString::fromLatin1("Test QBuffer. Play <=1M video from memory"));
player[0].addVideoRenderer(&renderer[0]);
player[1].addVideoRenderer(&renderer[1]);
QByteArray data = vidfile.read(1024*1024);
vidfile.seek(0);
QBuffer buf(&data);
if (buf.open(QIODevice::ReadOnly)) {
player[1].setIODevice(&buf);
}
player[0].setIODevice(&vidfile);
player[0].play();
player[1].play();
特别提醒:在播放的时候需要dll文件,自己拷贝到里面!。