Qt+FFmpeg+OpenGL实现视频播放器(1)

1、了解FFmpeg库

介绍
avcodec 音视频编解码核心库
avformat 音视频容器格式的封装和解析
avutil 核心工具库
swscal 图像格式转换的模块
swresampel 音频重采样
avfilter 音视频滤镜库 如视频加水印、音频变声
avdevice 输入输出设备库,提供设备数据的输入与输出

FFmpeg 依靠以上几个库,实现了强大的音视频编码、解码、编辑、转换、采集等能力。

2、播放流程

  • 解封装(Demuxing):就是将输入的封装格式的数据,分离成为音频流压缩编码数据和视频流压缩编码数据。例如,FLV 格式的数据,经过解封装操作后,输出 H.264 编码的视频码流和 AAC 编码的音频码流。

  • 软硬件解码(Decode):就是将视频/音频压缩编码数据,解码成为非压缩的视频/音频原始数据。通过解码,将压缩编码的视频数据 H.264,MPEG2 解码成为非压缩的颜色数据,例如 YUV 等等;将压缩编码的音频数据 AAC,MP3 解码成为非压缩的音频抽样数据,例如 PCM 数据。解码分为硬编码和软编码。

  • 像素格式转换:将 YUV 数据格式转换成 RGB 数据格式。

  • 重采样:对音频重新采样。

  • dts/pts:dts 是解码的时间戳,而 pts 是显示的时间戳。pts 用于获取当前播放进度。进度条移动需要用到av_seek_frame函数。

  • 音视频同步:就是根据解封装模块处理过程中获取到的参数信息,同步解码出来的音频和视频数据,并将音视频频数据送至系统的显卡和声卡播放出来(Render)。

4、ffmpeg解码流程

注意:新版本后不用再注册所有格式和编解码器 av_register_all();

5、实战

了解了这么多,接下来开始第一步,打开一个视频文件,打印出音视频流信息。

创建一个类 VideoInfo,用于处理视频文件的打开和流信息打印。

运行环境macOS+Qt6.6+FFmpeg7.0.1+OpenGL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值