FFMPEG中的一些基本概念

本文详细阐述了FFMPEG中容器、数据流、解复用器、数据包、数据帧、图像等核心概念及其在音视频处理流程中的作用。重点介绍了如何通过容器抽象文件形式,数据流实现多媒体数据的交错放置,解复用器进行数据流的识别与分离,以及数据包作为缓存空间的重要性。同时,解释了数据帧作为编解码器处理的最终数据单位,并探讨了图像在FFMPEG中的抽象。此外,文章还特别关注了H264中数据包概念的缺失,以及数据帧与图像之间的细微区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

容器(container):就是文件格式,在视频文件进入处理后,我们会给这个视频文件一个抽象,这个抽象就是存放这种视频文件的容器,在FFMPEG中,用来抽象文件格式的容器就是AVFormatContext;


数据流(stream):数据流就是我们平时看到的多媒体数据流,它包含几种基本的数据流,包括:视频流、音频流、字幕流;按照我的理解,这三种基本的数据流在时间轴上交错放置,只有这样才能满足多媒体数据流边接收边播放;数据流在FFMPEG中的抽象为AVStream。


解复用器或者说分流器(demuxer):FFMPEG将要处理的多媒体文件看成多媒体数据流,先把多媒体数据流放入容器(AVFormatContext),然后将数据流送入解复用器(demuxer),demuxer在FFMPEG中的抽象为AVInputFormat,我更愿意把demuxer称为分流器,因为demuxer就是把交错的各种基本数据流识别然后分开处理,将分开的数据流分别送到视频、音频、字幕编解码器处理。


数据包(packet)当然分开的数据流在送往编解码器处理之前,要先放于缓存中,同时添加一些附属信息例如打上时间戳,以便后面处理,那么这个缓存空间就是数据包;由于数据流是在时间轴上交错放置,所以所有的视频、音频、字幕都被分割成一段一段的数据,这些一段段的数据从数据流中解析出来之后,就是存放在各自的packet,那么在这里要说明一下,单纯的视频数据包来说,一个视频数据包可以存放一个视频帧,对于单纯的音频帧来说,如果抽样率(sample-rate)是固定不变的,一个音频数据包可以存放几个音频帧,若是抽样率是可变的,则一个数据包就只能存放一个音频帧。


在H264中没有数据包的概念,估计是因为H264只对视频做处理,所以不用分流,也就不用分流之后的缓存。


数据帧(frame):终于到数据帧了,编解码器真正处理的数据就是数据帧,帧这个东西,就是为了方便处理图像信息抽象出来的概念,按照我自己的理解,就是原始的图像数据信息+很多附加的信息=帧;附加的信息就是便于后面编码的信息,例如帧的解码时间、帧的显示时间等,这些信息都是为了编解码和播放的方便添加上去的,当然帧的附加信息远多于这两个信息,有兴趣的可以去看AVFrame,这是帧在FFMPEG中抽象。


我们看到多媒体文件很大,就是因为这些附加信息也占据了很大的存储空间,此外还有协议等信息,当然没有这些附加信息,这原始的或压缩的数据流还真不好处理,例如怎么分辨上一帧与下一帧,这就要靠这些附加信息了。


图像(picture):FFMPEG中抽象出来分别是AVPictue,这才是真正图像像素信息。


H264中还有image的概念,不知道image和picture有啥区别,一直没打弄明白,有知道的请说一声。

敬告:该系列的课程在抓紧录制更新中,敬请大家关注。敬告:本课程项目仅供学习参考,请不要直接商用,概不负责任何法律责任。 该系列的课程涉及:FFmpeg,WebRTC,SRS,Nginx,Darwin,Live555,等。包括:音视频、流媒体、直播、Android、视频监控28181、等。 我将带领大家一起来学习使用FFmpeg开发视频监控项目,并动手操练。具体内容包括: 一、视频监控的架构和流程二、FFmpeg4.3+SDL2+Qt5开发环境的搭建三、FFmpeg的SDK编程回顾总结并操练四、SDL2.0的编程回顾总结并操练五、颜色空间转换RGB和YUV的原理与实战六、Qt5+FFmpeg本地摄像头采集预览实战七、代码封装:摄像头h264/5编码并存储八、Qt5+FFmpeg单路网络摄像头采集预览九、Qt5+FFmpeg单路网络摄像头采集预览录制会看十、onvif与GB/T-28181的简介  音视频与流媒体是一门很复杂的技术,涉及的概念、原理、理论非常多,很多初学者不学 基础理论,而是直接做项目,往往会看到c/c++的代码时一头雾水,不知道代码到底是什么意思,这是为什么呢?   因为没有学习音视频和流媒体的基础理论,就比如学习英语,不学习基本单词,而是天天听英语新闻,总也听不懂。 所以呢,一定要认真学习基础理论,然后再学习播放器、转码器、非编、流媒体直播、视频监控、等等。   梅老师从事音视频与流媒体行业18年;曾在永新视博、中科大洋、百度、美国Harris广播事业部等公司就职,经验丰富;曾亲手主导广电直播全套项目,精通h.264/h.265/aac,曾亲自参与百度app上的网页播放器等实战产品。  目前全身心自主创业,主要聚焦音视频+流媒体行业,精通音视频加密、流媒体在线转码快编等热门产品。  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值