分享

Qt第三方库QtAV

 梦醉千秋 2018-02-05

Qt第三方库QtAV--- ubuntu编译与运行

       今天又要接触这个,把一些错误或者不足的地方重新补充下!!!由于前面一段时间,项目中需要借助QtAV接口进行视频播放,特此记录下整个配置过程。整个代码编译、运行、测试在ubuntu 16.04下,Qt版本5.7.0。

Ubuntu下的安装。

Qt5.7.0 linux 64位

1.     配置基本环境

sudo apt-get install libglu1-mesa-dev freeglut3-dev mesa-common-dev

sudo apt-get install libavutil-dev libavcodec-dev libavformat-dev libswscale-dev

2.     安装两个基本库

1)安装openal:sudo apt-get install libopenal-dev libpulse-dev libva-dev libxv-dev libass-devlibegl1-mesa-dev  或者 portaudio:sudo apt-get install portaudio19-dev(portaudio本人未测试)

2)安装FFmpeg ,下载源码包,解压,编译安装 ./configure --enable-shared --disable-yasm --prefix=/usr/local/ffmpeg  (官网https:///download.html,安装过程可能提示yasm未安装,安装下即可,如果不想安装加入上面命令--disable-yasm)

make

make install (提供root权限)

安装后,在usr/local目录下会有ffmpeg文件夹,里面有对应的库和头文件。(可以使用ffmpeg –h 检查下示是否安装好,提一些如libavdevice.so.56:cannot open shared objectfile:类似错误,可以在/etc/ld.so.conf添加一条路径/usr/local/ffmpeg/lib,原因是无法找到库文件,执行下ldconfig就可以了)。

进入Qt Creator左端“项目”面板,在最下方的环境变量中添加如下三个:

设置 CPATH 到 /usr/local/ffmpeg/include
设置 LD_LIBRARY_PATH 到 /usr/local/ffmpeg/lib
设置 LIBRARY_PATH 到 /usr/local/ffmpeg/lib

保证添加ffmpeg库路径

3)安装QtAV,下载QtAV源码(各版本https://github.com/wang-bin/QtAV/releases),解压,用Qt creator 打开pro文件,

,在QtAV.pro中添加

CONFIG+= static_ffmpeg static_openal

CONFIG+= glibc_compat                   (这两条可不加,刚才测试了一遍,出问题自己再决定)

选择shadow bulid模式,进行debug,release 版本编译,完成后运行,这样在你的debug目录或者release目录就有一个文件目录了,执行脚本文件sdk_install.sh,这样库和头文件就加入到了qt目录中。(编译QtAV可以不用管这个脚本,如果需要移植或者写自己的代码需要使用到,当然也可以自己指定库以及头文件,其实该编译主要为了生成lib_linux_x86_64 下一些动态库和静态库)

4)在Qt creator中,查看QtAV源码,选择exmple,simpleplayer,修改pro文件,QT+= av avwidgets(可不加,添加自己写的代码必须加),编译运行。选择视频就可以播放了。

5)完成以上步骤就可以调用QtAV接口了,实现自己的播放需求。

以下是我自己写的demo

首先的在pro中加入QT += av avwidgets

Main.cpp:

  1. #include<WidgetRenderer.h>  
  2. #include<QApplication>  
  3. #include<QtAV>  
  4. #include<QtAVWidgets>  
  5. #include<QtAV/AVPlayer.h>  
  6. using namespace QtAV;  
  7. int main(int argc,char *argv[])  
  8. {  
  9.     QApplication a(argc, argv);  
  10.     WidgetRenderer renderer;  
  11.     renderer.show();  
  12.     Widgets::registerRenderers();  
  13.     AVPlayer player;  
  14.     player.setRenderer(&renderer);  
  15.     player.play("test.mov");  
  16.     return a.exec();  
  17. }  


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多