201904144 视音频知识笔记

前言

工作中接触到了一点流媒体的知识,rtsp协议、rtsp流、rtmp、hls、拉流、推流、流媒体服务器、ffmpeg等等东西看的很晕很晕。感觉是基础知识还没打好吧。因此写下这篇笔记。
这篇文章更多的是在讲视音频的东西,这篇文章只是做些摘抄以及自己的一些理解,主要内容是参考了下面的这两篇文章:
https://blog.csdn.net/qq_36688143/article/details/79162121
https://blog.csdn.net/qq_36688143/article/details/79162121

正文

先来看一张视频播放器的播放本地文件的原理图:
在这里插入图片描述

视音频技术主要包含以下几点:

  1. 封装技术;
  2. 视频压缩编码技术;
  3. 音频压缩编码技术;

封装技术

封装技术即指把音频压缩数据和视频压缩数据以一定的格式要求整合成一个文件如mp4、flv等,以及把一个mp4、flv或其他的汇总文件分解成音频压缩文件和视频压缩文件。

封装数据格式

其中,这里说的汇总文件,具体如mp4、flv、mkv等,它们有一个专业名称,就是上图中的封装格式数据。

视频压缩数据、视频编码数据、视频码流

视频压缩数据、视频编码数据、视频码流,都是同一个意思(下文统一用视频编码数据指代),都是表示通过封装格式数据分解得到的视频流。这里要注意的是,这个并不是在定义视频编码数据,而是在告诉我们视频编码数据和封装格式数据的关系。因为可能会有人会理解成先有了封装格式数据,才有视频编码数据,但并不是这样。实际上是由视频编码数据和音频编码数据这两个原材料,以一定的方式存储在一起才成了封装格式数据。
那视频编码数据是怎么来的呢?这里先记着,视频编码数据是对视频像素数据压缩得到的。

音频压缩数据、音频编码数据、音频码流

音频压缩数据、音频编码数据、音频码流,也一样表示的是通过封装格式数据分解得到的音频流。
同上,音频编码数据是由音频采样数据压缩得到的。

视频像素数据

什么是影片?其实就是一组(很多张)图片,时间间隔很小的连续展示出来,人们就觉得画面中的人物在动,这就是影片。那电影的实质就是N多张图片的集合。这些原始的图片,也成为颜色数据,也就是视频原始数据,也称为视频像素数据,如YUV420P,RGB等等。它保存了屏幕上每一个像素点的像素值

音频采样数据

同上,音频采样数据就是音频原始数据,即没有被压缩过的音频数据。它保存了音频中每个采样点的值。

编码、解码

前面提到了这么一句话:视频编码数据是对视频像素数据压缩得到的。
那么有这么两个问题:为什么要压缩?怎么压缩?
接下来再来回答这两个问题。
之所以要对视频像素数据即视频原始数据进行压缩,是因为视频像素数据体积很大,一般情况下一小时高清视频的RGB24格式的数据体积为:
360025192010803=559.9GB(PS:这里假定帧率为25HZ,取样精度8bit)
因此要对视频编码数据进行压缩。
至于怎么压缩,其实压缩指的就是编码,即通过采用一系列的算法来减少数据的容量,如视频编码中的IPB技术。
至于音频中,也是如此。

压缩编码标准

视频压缩中,有这么几种工业标准:H.264,MPEG2,VC-1,最常见的就是H.264。要理解的是,H.264仅仅是一个编码标准,而不是具体的编码器。将视频像素数据压缩为视频编码数据的,是具体的编码器。音频压缩也是一个道理。

FFmpeg

学习视音频技术,还有一个很强大的工具没有提到,那就是ffmpeg,上面说的视频播放器的原理,其实现就是就是通过ffmpeg。

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。

它包括了领先的音/视频编码库libavcodec等:

  1. libavformat:用于各种音视频封装格式的生成和解析,包括获取解码所需信息以生成解码上下文结构和读取音视频帧等功能;
  2. libavcodec:用于各种类型声音/图像编解码;
  3. libavutil:包含一些公共的工具函数;
  4. libswscale:用于视频场景比例缩放、色彩映射转换;
  5. libpostproc:用于后期效果处理;
  6. ffmpeg:该项目提供的一个工具,可用于格式转换、解码或电视卡即时编码等;
  7. ffsever:一个 HTTP多媒体即时广播串流服务器;
  8. ffplay:是一个简单的播放器,使用ffmpeg库解析和解码,通过SDL显示;

即ffmpeg可以实现封装、解封装、编码、解码的功能。

最后

视音频知识和流媒体知识,是有很多交集的。上面提到的基础概念,都很有必要去记住并理解,ffmpeg在流媒体中也会用到,如将rtsp流转成rtmp流,如降低画质、消声等等。
之所以想做这篇笔记,是因为我觉得要去使用一个东西,应该先要去理解它的一些基础知识,否则一味的参考网上的教程去实现转码、推流等操作,虽然实现了,但是自己却由于不理解而无法消化,过一段时间就忘了很多,这样感觉不对。
于是就做了这个笔记,打好基础知识!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值