趣谈网络协议笔记-二(第十六讲上)

趣谈网络协议笔记-二(第十六讲上)

流媒体协议:如何在直播里看到美女帅哥?


自勉

  • 给岁月以文明,而不是给文明以岁月!——《三体》
  • 在触不到的獠牙上点火……就像不必仰望那星星就能够解决……就像不必喊破喉咙就可以一样。——阿散井恋次《死神Bleach》

前言

今天公司说要办联谊活动,然后同事们就很快乐地帮我报名了= =,就很快乐地帮我报名了。我这人有一个坏毛病,如果有些事情没有尝试过,就特别想去试一试(违法的除外!),所以就点头报名了。
然后被拒绝了,说我年纪太小了,应该把机会让给更有需要的人们。
《三体》真的有很多经典的台词,总是能让我深有启发。就比如给岁月以文明而不是给文明以岁月,这句台词是人类得知三体人的进攻时,采取计划经济导致文明衰退后的自省。
放到今天不是也一样吗?如果是像蝼蚁一样苟活着,那么即使你活的再久又有什么意义呢?
其实我感觉昨天的章节的表达方式挺好的,照着他所给出的图片来构建出自己的认知。今天其实也打算再按照昨天的流程来理一遍视频直播协议RTMP的网络通信过程的,但是当我复制图片的时候,我惊呆了,10张图片!是昨天的十倍!好了,只能改变一下战略,将RTMP协议分两天完成。毕竟我的规划中,Android部分才是相对重要的部分。计划是这样的,但是也不保证我一口气就说完了呢= =
先定个计划,先把视频的压缩过程说完吧。


正文

直播,说到底是一种即时的媒体播放协议,注意,是即时的,所以你正常情况下无法回退。

你有可能会存在延迟,但是这个延迟绝对是短暂的,如果延迟过长,则会直接更新到最新的视频内容中,因为,协议的设计就是为了保证所谓的即时性。不然当对面的美女主播进行一些互动甚至抽奖时,如果不确保这个即时性,等你知道信息的时候,互动都已经结束了,这就叫单纯的看视频而不是看直播了。

那么问题来了,视频是什么,为什么我传输了那一串不知道是什么的01数据,播放器就能清楚我传输的是什么并且能够进行播放呢?

视频说到底就是快速切换的一堆图片,当图片切换地足够快的时候,因为人眼的视觉残留,所以看到的就好像是图像在运动一般。

但是如果仅仅是简单存储一堆图片并播放的话,视频所占用的空间是惊人的,比如说我在支持1024*768的显示器上要播放一分钟的30fps的视频,那么这个视频的大小应该是多少呢?假如说像素是通过RGB组成的,那么总共需要1024*768*3*60*30=4246732800B,大约4个G的数据!然而实际上,我之前所假设的场景绝对是低配中的低配,实际场景绝对比这个要复杂。那么怎么办呢?如果1分钟的视频我都需要4个G的流量来运行,那我一个月话费再多都支撑不了我看多少时间的直播啊!
这个时候,就需要对视频本身进行压缩了,媒体的压缩一般是从如下几个方面进行处理的:

一. 空间冗余

一张图片的相邻像素的颜色往往是渐变的,所以没有必要每个像素都完整地保存,完全可以每隔几个保存一个,中间的用算法计算出来。

二. 时间冗余

视频序列的相邻图像之间的内容相似。一个视频中连续出现的图片也不是突变的,可以根据已有的图片进行预测和推断。

三. 视觉冗余

人的视觉系统对某些细节不敏感,因此不会每一个细节都注意到,可以允许丢失一些数据。

四. 编码冗余

有些像素用到的少,有些多,那就在编码的时候按照哈夫曼编码的思路对其进行优化,从而减少传输的数据长度。
趣谈网络协议笔记-二(第十六讲上)_第1张图片

基于这四种压缩思路进行压缩后的数据就可以用于数据传输了。
趣谈网络协议笔记-二(第十六讲上)_第2张图片

你可能感兴趣的:(趣谈网络协议)