qt+ffmpeg 实现音视频播放(一)

一、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/includeusr/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>

}

相关推荐
小短腿的代码世界6 分钟前
颠覆QWidget与QML?QSkinny轻量级UI框架的架构革命与嵌入式场景实战
qt·ui·架构
老王谈企服14 分钟前
实在Agent智能体视频生成节点实战:多模型调度、Jinja模板与动态参数,打造自动化视频生产线
人工智能·自动化·音视频
MonkeyKing715525 分钟前
iOS音频时钟、时钟同步与音频时间戳原理详解
ios·objective-c·音视频
十年之少26 分钟前
使用VSCode 对PyQt5 say Hello—— Python + Qt 开发
vscode·python·qt
ZC跨境爬虫1 小时前
跟着 MDN 学 HTML day_43:(DocumentFragment 接口详解)
前端·javascript·vue.js·ui·html·音视频
节点云科1 小时前
谷歌 Gemini Omni 深度解析:原生视频模型的技术突破与行业影响
人工智能·音视频
电子科技圈1 小时前
XMOS将亮相台北国际电脑展并演示其在边缘AI和创新音频与互联等领域内的新方案
人工智能·游戏·计算机视觉·视觉检测·音视频·语音识别·实时音视频
数据法师1 小时前
告别付费云端转写!Memo AI:一款部署在本地的无限次音视频转文字神器
人工智能·音视频
云天AI实战派1 小时前
2026 实战:用 OpenAI 实时音频模型做门店语音助手,从 Spec 到 API 接入上线全流程
microsoft·音视频·语音识别
MonkeyKing71551 小时前
iOS 音频硬件架构:采样率、位深、声道、音频缓冲区核心解析
ios·objective-c·音视频