音视频编解码基础

本文详细介绍了音视频编码的必要性,包括H264/H265和AAC的压缩技术,以及从采集到推流的全流程。同时,讲述了音视频解码的过程,重点在于音视频同步的难点和解决方案。
摘要由CSDN通过智能技术生成

一、音视频为什么要编码?

        音视频编码技术在音视频领域有着举足轻重的地位,这是由于音视频原始数据量较大,在传输的过程中如果不进行编码的话,则无法进行传输。比方说,一张普通的图片的大小大概是1-2M ,假设我们传输的帧率是 30 帧,则相当于一秒钟三十张 2M 的图片,那这个传输量是不得了的。所以此时我们就要引入视频编码技术进行压缩处理,目前常见的视频压缩技术有H264/H265 两种压缩技术 ( 这方面我们后面再慢慢介绍 ) ,音频编码技术是 AAC ,这两种压缩格式可以使得每一帧数据的大小能够压缩100-200 倍,这使得传输效率大大提高。

二、音视频编码总体框图

这框图就是音视频从采集到编码到推流的全流程。

2.1.第一步:采集摄像头、麦克风的数据:

        编码的第一步基本上都是采集视频、音频的数据,并把采集到的数据送到对应的音视频编码器。视频数据送到H264/H265 编码器,音频数据送到 AAC
码器,编码处理过后分别送到视频编码队列和音频编码队列。

2.2.第二步:音视频编码数据封装:

        从视频编码队列和音频编码队列拿出数据,并进行音视频的封装, 所谓的音视频封装相当于把视频裸流和音频裸流合并在一起成为一个既有视频也有音频
的复合流。常见的复合流有 f lv 封装复合流、 mpegts 封装复合流 ( 这两种具体的区别,在后面会说到 )

2.3.第三步:把复合流推送到对应的流媒体服务器:

把复合流拿到之后,就每一帧音频和视频数据往对应的流媒体服务器发送数据 ( 这里要注意:不同的流媒体协议,用不同的封装格式。比方说 RTMP 用的
FLV 格式, SRT/RTSP 用的是 mpegts 复合流格式 )

三、什么是音视频解码:

        音视频解码,顾名思义就是把已经压缩过后的音视频( 视频 :H264/H265 ,音频: AAC MP3) 数据还原成原始数据 ( 视频原始数据: YUV ,音频原始数据:
PCM) 的过程。

四、音视频解码的大体框图:

4.1 :读取流媒体地址 : 并进行解封装操作 先读取音视频的流媒体地址,并把流媒体获取到的音视频进行解封装处理。所谓解封装处理就相当于把 f lv 、mpegts等复合流分割成视频裸流 (H264/H265 视频流 ) 和音频裸流 (AAC 音频流 ) 。并把每个裸流分别存放到不同的队列,视频裸流存放 VideoPacket
Queue, 音频裸流存放到 Audio Queue ( 注:这里的队列名称都是自己命名的 )
4.2 :把队列的裸流数据取出来,进行每一帧的解码操作 把视频裸流队列和音频裸流队列的数据取出来,并一帧一帧送到解码器进行视频解码和音频解码。并把解码后的数据分别进入视频解码队列和音频解码队列。
4.3 :从解码队列拿数据,并进行音视频同步处理 把第二步解码队列的音视频拿出来,分别进行音视频同步的算法处理。目前的话音视频同步,基本上都是基于音频作为参考时钟,而视频基于音频的节奏进行同步操作。音视频同步处理后,音视频基本上可以做到声音和画面完全同步了。
4.4:把音视频同步过后的数据分别播放出来 经过音视频同步处理后,视频数据 (YUV 数据 ) 就直接送到 SDL 或者 drm 显示出来。而音频数据 (PCM) 则直接送到alsa 框架进行音频播放。

五、音视频解码的难点:

音视频解码总体来说还是比较难的,其中最大的一个难点就是音视频同步的算法控制。很多音视频的初学者,对音视频的节奏总是把握不好。所以经常
会出现视频比音频快十几个毫秒或者音频比视频快个十几个毫秒,这都会导致音视频不同步的重要原因。关于这部分如何控制好,还需要多去看看源代
码才能更好地解决。
  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哈~~哈~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值