实现音视频编解码(播放一个中秋节快乐视频为例)Qt | AI+Qt6.5.3+ubuntu20.04+FFmpeg

2024-09-26 22:12:28 浏览数 (3)

01、下载

>>>FFmpeg下载官网:https://ffmpeg.org//

本次选择下载linux版本的

环境准备

Qt6.5.3

ubuntu 虚拟机

FFmpeg

02、Linux(ubuntu)下FFmpeg命令行环境搭建

>>>1、Linux终端输入命令:sudo apt update或sudo apt-get update 2、Linux终端输入命令:sudo apt install ffmpeg或sudo apt-get install ffmpeg 3、测试FFmpeg是否安装成功,Linux终端输入命令:ffmpeg -version,如果出现版本信息,环境安装成功 4、如果需要卸载FFmpeg,终端输入命令:sudo apt-get purge ffmpeg或sudo apt purge ffmpeg

03、Linux(ubuntu)下QT Creator的FFmpeg环境搭建

>>>1、下载FFmpeg资源依赖包 链接: http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz (2)nasm包 链接: https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.bz2 3)x264包 链接: http://ftp.videolan.org/pub/videolan/x264/snapshots/ (4)x265包(可以根据需要进行下载) 链接: http://ftp.videolan.org/pub/videolan/x265/ 2、将下载好的yasm、nasm、x264、x265拷贝到虚拟机中并解压

04、开始安装FFmpeg依赖环境yasm

>>>1)安装yasm 第一步:进入yasm文件中,打开终端,输入命令:./configure tar -zxvf yasm-1.3.0.tar.gz 

./configure 

第二步:终端继续输入命令:make或sudo make进行编译

第三步:终端继续输入命令:make install或sudo make install(注:最好使用sudo提升权限)进行下载

05、开始安装FFmpeg依赖环境nasm

>>>2)安装nasm 第一步:进入nasm文件中,打开终端,输入命令:./configure tar -xvf nasm-2.14.02.tar.bz2

./configure 

第二步:终端继续输入命令:make或sudo make

第三步:终端继续输入命令:make install或sudo make install(注:最好也要加sudo提升权限)

3)安装cmake(x265编码构建时需要,故可安装也可不安装),打开终端,输入命令:sudo apt install cmake -y或apt install cmake -y

06、开始安装FFmpeg依赖环境x264

>>>4)编译x264静态库x264-snapshot-20180331-2245-stable.tar.bz2(下载时这个网址有点毛病,下载这个版本先试一试) 第一步:进入x264文件下,打开终端,输入命令:./configure --enable-static --prefix=…/x264 --enable-pic tar -xf x264-snapshot-20180331-2245-stable.tar.bz2

第二步:终端继续输入命令:sudo make -j16或make -j16

第三步:终端继续输入命令:sudo make install或make install

07、开始安装FFmpeg依赖环境x265

>>>(5)编译x265(只编译静态库) tar xvf x265_3.2.tar.gz

cd x265_3.2/build/linux/ cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="../../../x265" -DENABLE_SHARED:bool=off ../../source

make -j16

make install

08、开始安装FFmpeg依赖环境(重头戏)

>>>5)下载FFmpeg源码,并开始安装FFmpeg环境(注:之前装的FFmpeg命令行环境和这里装的FFmpeg环境不冲突) 第一步:下载FFmpeg源码,并拷贝到虚拟机中进行解压

tar -xf ffmpeg-7.0.2.tar.xz 

第二步:进入FFmpeg-6.0文件夹,打开终端,输入命令:export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:../x264/lib/pkgconfig

第三步:终端继续输入命令:./configure --enable-shared --enable-nonfree --enable-gpl --enable-pthreads --enable-libx264 --prefix=../ffmpeg

第四步:终端继续输入命令:sudo make -j64或make -j64 //这一步花的时间比较多 第五步:终端继续输入命令:sudo make install或make install

【安装成功】

09、Linux下QT Creator搭建FFmpeg环境

>>>(1)Linux下搭建QT Creator环境

Qt | ubuntu20.04安装Qt6.5.3并创建一个app完整教程(涉及诸多开发细节,商用慎重)

第四章 | Ubuntu20.04安装Qt6.5.3教程成功版

>>>第一步:建立QT Creator工程(本作者工程命名:QT_FFmpegTest),将之前生成的ffmpeg文件拷贝到QT_FFmpegTest项目文件中

>>>{【引用 这里实际可不用,但是有必要说一下,方便管理项目】 在 Qt 工程中,如果你希望通过 .pri 文件引入目录下的文件夹,你可以按照以下步骤操作:

  1. 创建 .pri 文件:在你希望的目录下创建一个 .pri 文件,比如 FFmpeg.pri。
  2. 添加新文件
  1. 命名

已添加

在 .pri 文件中添加文件:打开刚创建的 .pri 文件,使用 SOURCES 和 HEADERS 变量来添加目录下的源文件和头文件。比如,如果你想引入 src 文件夹下的所有 *.cpp 和 *.h 文件,可以添加如下内容: SOURCES = $PWD/ffmpeg/*.cpp HEADERS = $PWD/ffmpeg/*.h 修改主 .pro 文件:在你的主 .pro 文件中,使用 include() 函数引入你刚刚创建的 .pri 文件。比如,如果你的 .pri 文件与主 .pro 文件在同一目录下,你可以这样写:

  1. 确保路径正确:如果你的 .pri 文件不在主 .pro 文件的同一目录下,请确保提供正确的相对路径或绝对路径。
  2. 重新构建项目:保存所有修改后,请重新运行 qmake 和构建项目,以确保新加入的文件被成功识别。执行qmake

并未使用,.pri的头文件和源文件一般最好在第一级目录,不然加载不进来。

}

>>>第二步:在QT_FFmpegTest项目文件QT_FFmpegTest.pro中,导入FFmpeg库 右键点击

添加外部库

这种方式每次只能添加一个库,比较鸡肋。

加入库后,会自动添加头文件路径,选择linux即可

预览

.pro

【这里我们直接采用手动添加方式2】 # lib # 导入的内容如下: INCLUDEPATH = $$PWD/ffmpeg/include LIBS =-L$$PWD/ffmpeg/lib -lavcodec -lavutil -lavformat -lavdevice -lavfilter -lpostproc -lswresample -lswscale #注:-L是指在指定路径下,$$PWD是指当前路径

第三步:在主界面文件mainwindow.cpp(当然可以根据实际情况选择在哪个文件中添加)中,加入FFmpeg库文件

第四步:在程序文件中,调用任意一个库函数,例如:av_version_info()//打印版本信息函数,然后运行整个工程,如果出现版本信息,说明环境安装完成

运行

【到这一步,证明我们所有的配置都没问题,音视频开发之路随之打开】

实战小例子

>>>

  1. 视频文件格式
    • MP4:广泛使用的格式,通常包含 H.264 编码的视频和 AAC 编码的音频。
    • AVI:包含视频和音频流,支持多种编码格式。
    • MKV(Matroska):能够容纳多种视频、音频和字幕轨道。
    • MOV:Apple 的 QuickTime 格式,通常用于影片制作和分发。
    • WMV:Windows 媒体视频格式,适合于 Windows 系统使用。
    • FLV:Flash 视频格式,常用于视频流和在线播放。
    • WEBM:用于网页视频的格式,通常包含 VP8/VP9 编码的视频和 Vorbis/Opus 编码的音频。
    • MPEG:一种视频压缩标准,包含 MPEG-1、MPEG-2 等。
  2. 视频编码格式
    • H.264:常用的高效视频编码格式,广泛应用于在线视频和蓝光光盘。
    • H.265/HEVC:比 H.264 更高效的编码格式,提供更高的压缩率。
    • VP8/VP9:Google 开发的高效视频编码格式,常用于 WebM。
    • MPEG-2MPEG-4AV1 等。
  3. 音频格式
    • FFmpeg 也支持多种音频格式,诸如 MP3、AAC、WAV、FLAC、OGG 等。视频文件通常会伴随音频轨道。
  4. 图像格式
    • FFmpeg 还可以处理静态图像格式,像 JPG、PNG、BMP、TIFF 等,可以将视频帧导出为图像序列,或将图像序列合成视频。

    并使用 Qt 的 QLabel 来显示视频帧。我们假设已经有一个 QLabel 在你的 UI 中用于显示视频画面,命名为 label_video。 .ui设计

这里我就随便用剪映制作一个视频。

直接拖到linux

点击运行

总结 资源获取

>>>

  1. 本次linux Qt FFmpeg成功搭建;
  2. 实现了播放视频;
  3. 相关资源获取如下:

项目源码 工具:github获取(推荐)但是FFmpeg没有加入,文件太大,加群领取吧。

工宗号:Qt历险记

0 人点赞