第十一章:ffmpeg和QT开发播放器之项目移植到Ubuntu

写在前面:  
    将前面十章节的代码移植到linux中,注意,这里是移植到ubuntu中,之后我还会想办法移植到开发板中去,不过还是有点难度就是了。移植好的代码路径:https://download.csdn.net/download/tainjau/10396395

1、下载安装QT5.8

       在http://ffmpeg.club/qt_download.html中,使用百度云下载,文件大小700M,要提前下,要不然最近百度网盘速度不咋地,得等好一阵子。
                                       

2、下载编译ffmpeg

        第一步:还是在老师提供的网址http://ffmpeg.club/ffmpeg_download.html下载FFmpeg源码,这里我下载的是3.4.1版本的。将其拷贝进ubuntu中,使用tar -jxvf ffmpeg-3.4.1.tar.bz2解压。

        第二步:安装编译依赖环境
sudo apt-get update
sudo apt-get -y install autoconf automake build-essential \
libass-dev libfreetype6-dev libsdl2-dev libtheora-dev \
libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev \
libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texinfo zlib1g-dev
sudo apt-get install yasm		//这个是编译源码所需要的工具
       如果有出现安装不了的,就使用sudo aptitude install libsdl2-dev

       注:虚拟机里面最好还是记得先快照一下,以免出现问题。

       第三步安装可选依赖库

       X264 安装

       sudo apt-get install libx264-dev

       注:如果选择编译要添加 --enable-gpl --enable-libx264

       如果安装失败可以选择源码安装
       wget http://download.videolan.org/pub/x264/snapshots/last_x264.tar.bz2
       tar xjvf last_x264.tar.bz2
       cd x264-snapshot*
       PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static -- disable-opencl
       PATH="$HOME/bin:$PATH" make
       make install

       AAC安装
       sudo apt-get install libfdk-aac-dev
       如果选择编译添加 --enable-libfdk-aac
       如果加了 --enable-gpl  需要加 --enable-nonfree

       MP3
       sudo apt-get install libmp3lame-dev
       如果选择编译添加 --enable-libmp3lame

       opus
       sudo apt-get install libopus-dev
       如果选择编译添加 --enable-libopus
       VPX  VP8 Video Encoding Guide

       sudo apt-get install libvpx-dev
       如果选择编译添加 --enable-libvpx

       第四步编译为静态库
       在ffmpeg源码中,通过执行命令./configure生成makefile
       ./configure --enable-shared --prefix=/usr/local/ffmpeg 
       其中 --enable-shared 表示编译为动态库, --prefix 表示安装的路径
       然后执行make -j4
       make install

       编译完成后就可以看到 /usr/local/ffmpeg 目录中有头文件和动态链接库文件。如果为了项目编译运行方

便,可以直接把动态链接库复制到 /usr/lib 目录下,这样运行就不用指定库路径了。

       编译项目时候要注意,库路径要设置到 /usr/lib  防止有老版本冲突,很多软件安装的时候会把 ffmpeg 安装

进去,比如安装 opencv 也会把 ffmpeg 安装进去,有可能造成版本冲突。

       之后将整个工程放在linux中,使用QT creadt去打开.pro文件,并查看pro文件,这里我对pro文件进行了初步修改,以后缺少啥就添加啥进去。
TEMPLATE = app

#如果是win32平台下
win32{
TARGET = Xplay
DESTDIR = ../bin
QT += core multimedia widgets gui
CONFIG += debug console
DEFINES += WIN64 QT_DLL QT_MULTIMEDIA_LIB QT_WIDGETS_LIB
INCLUDEPATH += ./GeneratedFiles \
    . \
    ./GeneratedFiles/Debug \
    ../../lib \
    ../../include
LIBS += -L"../../lib"
DEPENDPATH += .
MOC_DIR += ./GeneratedFiles/debug
OBJECTS_DIR += debug
UI_DIR += ./GeneratedFiles
RCC_DIR += ./GeneratedFiles
include(Xplay.pri)
win32:RC_FILE = Xplay.rc
}
#如果是linux平台下
linux{
message("linux");
LIBS += -L/usr/local/ffmpeg/lib -lavcodec -lavutil -lresam

INCLUDEPATH += /usr/local/ffmpeg/include    \
                ./GeneratedFiles

include(Xplay.pri)
}
QT += core multimedia widgets gui
DEFINES += QT_MULTIMEDIA_LIB QT_WIDGETS_LIB
       接下来的错误是锁有问题,因为linux和win编程还是有区别的,所以要稍作更改。添加上头文件#include <QMutex>
       追加lib库的内容LIBS += -L/usr/local/ffmpeg/lib -lavcodec -lavutil -lswresample \
       编译完成后,还是没办法正常使用,按老师的分析是因为win和linux的音频处理是有所不同的,在win中,音频播放时候只要缓冲有数据,就会播放,而linux有的版本则需要音频满了才会播放。

       下载完成之后,直接将文件放入ubuntu后,在命令行中执行./qt-opensource-linux-x64-5.8.0.run 即可,然后直接下一步下一步安装。

3、创建qt.pro

                                

       在初步编译的时候就开始报错了,这里的错误如图,主要原因是因为win平台下不区分大小写,而linux中会区分大小写。

                                

       追到这个文件发现,是ui_xplay.h这文件包含的,但是这个文件是系统自动根据界面而生成的,所以要修改界面。

                                

       先取消提升,在重新做提升操作

                                            

                               

       更改完之后再编译,出现以下问题,目测是QT需要的库没定义好,回到.pro文件里面、

                             

       添加以下两段定义

                                

       再次编译出现找不到定义,这说明库文件有错,链接出问题了。

       -lavformat   -lswscale,问题就解决了。

                                

4、对音频程序进行修改

       编译完成后,还是没办法正常使用,按老师的分析是因为win和linux的音频处理是有所不同的,在win中,音频播放时候只要缓冲有数据,就会播放,而linux有的版本则需要音频满了才会播放。 

       我自己的处理是让音频解码视频至少解码一次。

                    


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FFmpeg是一套开源的多媒体处理,可用于视频和音频的编解码、转码、剪辑等操作。QT是一个跨平台的图形用户界面开发框架,简化了开发过程,提供了丰富的GUI组件和工具。 "FFmpeg QT5开发播放器C实战视频课程完结"意味着这门课程以教授使用FFmpegQT5在C语言中开发多媒体播放器为主题,并且已经结束。通过这门课程,学习者可以系统地学习如何使用FFmpegQT5构建功能强大的播放器,实现各种视频和音频处理操作,如播放、暂停、快进、音量调节等。 这门课程可能包括以下内容:首先,学习者将了解FFmpegQT5的基本知识,包括它们的特点、功能和应用领域。然后,学习者将学习如何在C语言中使用FFmpeg进行视频和音频编解码、剪辑、转码等操作。接下来,学习者将学习如何在QT5中构建用户界面,包括视频窗口、控制按钮等。最后,学习者将学习如何将FFmpegQT5集成在一起,实现一个全功能的多媒体播放器。 通过这门课程,学习者可以掌握FFmpegQT5的使用技巧,了解多媒体处理的基本原理,提升自己的编程能力。他们可以进一步应用这些知识和技能,开发出更加复杂和创新的多媒体应用,满足不同用户的需求。 总之,这门FFmpeg QT5开发播放器C实战视频课程是一个理论与实践相结合的教学项目,它为学习者提供了学习和实践的机会,帮助他们掌握多媒体处理和应用开发的关键技术。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值