一、ffmpeg下载
官网:点击跳转
二、模块介绍
1. libavcodec:音视频编解码库,提供了多种编解码器,可以支持多种音视频格式的编解码操作。
2. libavformat:音视频封装和解封装库,提供了多种封装格式的支持,可以读取和写入多种音视频文件格式。
3. libavfilter:音视频过滤器库,提供了多种音视频过滤器,可以对音视频流进行各种处理,如添加水印、调整亮度、对比度等。
4. libavdevice:音视频输入输出设备库,提供了多种输入输出设备的支持,如摄像头、麦克风等。
5. libswscale:视频图像缩放库,提供了多种图像缩放算法,可以对视频图像进行缩放操作。
6. libswresample:音频重采样库,提供了多种音频重采样算法,可以对音频进行重采样操作。
7.libavutil:包含一些公共的工具函数。
8. libswscale:用于视频场景比例缩放、色彩映射转换。
9.libpostproc:用于后期效果处理。
10.ffmpeg:该项目提供的一个工具,可用于格式转换、解码或电视卡即时编码等。
11.ffsever:一个 HTTP 多媒体即时广播串流服务器。
12.ffplay:是一个简单的播放器,使用ffmpeg 库解析和解码,通过SDL显示。
三、配置、编译ffmpeg
在解压出来的ffmpeg目录下新建文件夹 build 和文件 1.sh ,并往 1.sh 写入以下信息:
export PKG_CONFIG_PATH=/home/gui/build/lib/pkgconfig
./configure --enable-cross-compile --target-os=linux \
--cc=/opt/cluster-qt/2.5.3/sysroots/x86_64-sdrvsdk-linux/usr/bin/aarch64-sdrv-linux/aarch64-sdrv-linux-gcc \
--sysroot=/opt/cluster-qt/2.5.3/sysroots/aarch64-sdrv-linux \
--arch=arm64 \
--prefix=$PWD/build \
--disable-shared \
--enable-static \
--enable-gpl \
--enable-nonfree \
--enable-ffmpeg \
--enable-ffplay \
--enable-swscale \
--enable-pthreads \
--disable-armv5te \
--disable-armv6 \
--disable-armv6t2 \
--disable-yasm \
--disable-stripping \
--enable-libx264 \
--enable-libmp3lame \
--extra-ldflags=-L/home/gui/build/lib/ \
--extra-cflags=-I/home/gui/build/include/
sysroot 的作用:为编译时指定逻辑目录。编译器通常会在 /usr/include 和 /usr/lib 中搜索头文件和库,使用这个选项后将在该选项指定目录后的 usr/include
和 usr/lib
目录中搜索
如果使用 sysroot
选项的同时又使用了 -isysroot 选项,则此选项仅作用于库文件的搜索路径,而 -isysroot 选项将作用于头文件的搜索路径。
--extra-cflags、 --extra-ldflags :指定模块的头文件与库文件的位置。
--extra-libs:指定链接库。
如:./configure --extra-libs="-lx264"
之后,执行1.sh进行配置
./1.sh
最后,编译、构建ffmpeg
make -j4 && make install
四、工程配置
新建qt工程,在.pro文件中添加以下信息:
LIBS += -L/home/gui/ffmpeg/build/lib/ -lavcodec -lavformat -lavutil -lswresample -lswscale
INCLUDEPATH += /home/gui/ffmpeg/build/include
然后在需要的地方添加头文件即可:
extern "C"
{
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include <libavutil/imgutils.h>
#include <libswscale/swscale.h>
}