安装
http://ffmpeg.org/
官方下载以及介绍
https://ffmpeg.org/doxygen/trunk/examples.html
官方文档的链接,可以进行随时查看
视频解码器(FFmpeg)
H.264->YUV
视频显示(SDL)
实现YUV->电脑屏幕
视频播放器(FFmpeg+SDL)
实现H.264->YUV->电脑屏幕
视频编码数据
视频编码的作用:将视频像素数据(RGB,YUV)压缩成为视频码流,从而降低视频的数据量
H.264的格式简介
数据由大小不固定的NALU构成
最常见的情况下,1个NALU存储了一帧画面的压缩编码后的数据
H.264压缩方法
比较复杂,包含了帧内预测,帧间预测,环路滤波等环节构成
可以将图像数据压缩100倍以上
音频编码数据
音频编码的作用
将音频采样数据压缩成为音频码流,从而降低音频的数据流
视频像素数据
YUV格式:Y只包含亮度值,而UV只包含色度信息
YUV420p首先存储了整张图像的Y信息,然后存储了整张图像的U信息
最后存储了整张图像的V信息
注:新版本下的代码和雷神的代码有所不同,由于,新版本下将编码和解码进行了分离
AVFormatContext数据结构下有AVStream,但是AVStream数据结构下没有AVCodecContext
解码的一些过程
解码后的数据存储在这些数组中
frame_yuv->data[0] //y
frame_yuv->data[1] //u
frame_yuv->data[2] //v
frame_yuv->linesize[0] //y宽度
frame_yuv->linesize[1] //u宽度
frame_yuv->linesize[2] //v宽度
YUV420的存储
第i需要偏移i*frame_yuv->linesize[0] ,起始地址就是frame_yuv->data[0]+i*frame_yuv->linesize[0]
而UV分量的高度是其一半
利用OPenCV来播放ffmpeg解码后的YUV文件
此内容借鉴了下面博主的内容
此博主的博客连接,点击进入
https://blog.csdn.net/weixin_45774698/article/details/123965078?spm=1001.2014.3001.5502
SDL的API文档的查看
https://wiki.libsdl.org/SDL2/APIByCategory#Basics