关于媒体编解码以及封装那点事

前言

从事音视频相关研究的工程师,免不了涉及编码,解码,复用(封装),解复用(解封装)等概念,还可能涉及到播放器,编码器等程序或硬件。现在火爆的互联网直播,小视频还有各种P2P视频通话等,其基本原理都十分类似。

播放器媒体流图

播放器

从上图可以看出,通用的播放器(如FFmpeg中的ffplay)设计都遵循这样的媒体流过程。
Source代表媒体源,有可能是来自本地设备(U盘,移动硬盘,文件系统),也有可能是来自于网络(通过
HTTP,HLS,RTSP,UDP等);
Demux是解复用的意思,读到文件后,首先需要进行解复用(demux,或者叫解封装),将音频,视频,字幕等分离出来;
Buffer是缓存,为了匹配解封装和解码之间的速度,需要有一个内存缓存区来适应动态码率;
Decoder是解码器,即音频解码器和视频解码器,将压缩后的单元流解码成原始流;
A/V Out是音视频输出的意思,音频通过PCM Player进行D/A转换输出到喇叭/耳机等外设,视频则通过屏幕一帧一帧显示画面;这里需要注意音频播放和视频显示之间需要做同步,保证画面和声音的一致性。同步的基准是PTS,即显示时间戳,音视频同步我们在另外的文章里再介绍。

媒体封装过程

编码模型

上图表示音视频原始数据如何组装成媒体文件/流,再传到播放器的。参考箭头从右往左看,原始的音视频数据,首先要经过编码器进行压缩,然后通过封装容器把音视频数据打包成媒体文件/流。接下来,通过本地文件或者网络文件的传输方式,将其发送到解码终端,再送入播放器进行解码等逆向过程。这里一定要理解图上
TS,rtsp,h264,Source,Player这些常见概念所处的位置。

FFmpeg的主要功能

实际上,在开源的音视频项目里,FFmpeg更侧重于编解码,它支持各种各样的编解码格式,还支持各种形式的转码,可以说编解码技术是FFmpeg的核心技术所在。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值