美文网首页
12-流媒体协议

12-流媒体协议

作者: Mr_十九 | 来源:发表于2018-11-10 10:17 被阅读0次

本人在“极客时间”上购买了一套“趣谈网络协议”的课程,本文为该课程第16讲(第16讲 流媒体协议)的课程笔记。


1.视频相关名词系列
  • 名词系列一:AVI、MPEG、RMVB、MP4、MOV、FLV、WebM、WMV、ASF、MKV。例如 RMVB 和 MP4,看着是不是很熟悉?

  • 名词系列二:H.261、 H.262、H.263、H.264、H.265。这个是不是就没怎么听过了?别着急,你先记住,要重点关注 H.264。

  • 名词系列三:MPEG-1、MPEG-2、MPEG-4、MPEG-7。MPEG 好像听说过,但是后面的数字是怎么回事?是不是又熟悉又陌生?

2.视频的组成
  • 视频,其实就是快速播放一连串连续的图片。

  • 每一张图片,我们称为一帧。只要每秒钟帧的数据足够多,也即播放得足够快。比如每秒 30 帧,以人的眼睛的敏感程度,是看不出这是一张张独立的图片的,这就是我们常说的帧率(FPS)。

  • 每一张图片,都是由像素组成的,假设为 1024*768(这个像素数不算多)。每个像素由 RGB 组成,每个 8 位,共 24 位。

  • 每秒钟的视频有多大?

    • 30 帧 × 1024 × 768 × 24 = 566,231,040Bits = 70,778,880Bytes
    • 如果一分钟呢?4,246,732,800Bytes,已经是 4 个 G 了。

人们想到了编码,就是看如何用尽量少的 Bit 数保存视频,使播放的时候画面看起来仍然很精美。编码是一个压缩的过程。

3.视频和图片的压缩过程有什么特点?

之所以能够对视频流中的图片进行压缩,因为视频和图片有这样一些特点。

1 空间冗余
2 时间冗余
3 视觉冗余
4 编码冗余

4.视频编码的两大流派
  • 流派一:ITU(International Telecommunications Union)的 VCEG(Video Coding Experts Group),这个称为国际电联下的 VCEG。既然是电信,可想而知,他们最初做视频编码,主要侧重传输。名词系列二,就是这个组织制定的标准。

  • 流派二:ISO(International Standards Organization)的 MPEG(Moving Picture Experts Group),这个是ISO 旗下的 MPEG,本来是做视频存储的。例如,编码后保存在 VCD 和 DVD 中。当然后来也慢慢侧重视频传输了。名词系列三,就是这个组织制定的标准。

  • 后来,ITU-T(国际电信联盟电信标准化部门,ITU Telecommunication Standardization Sector)与 MPEG 联合制定了 H.264/MPEG-4 AVC,这才是我们这一节要重点关注的。

5.直播过程介绍

1)整个直播过程,可以用这个的图来描述。


2)直播中每个过程介绍

  1. 编码:将丰富多彩的图片变成二进制流
  • 视频会将视频序列分成三种帧。
  • I 帧,也称关键帧。里面是完整的图片,只需要本帧数据,就可以完成解码。
  • P 帧,前向预测编码帧。P 帧表示的是这一帧跟之前的一个关键帧(或 P 帧)的差别,解码时需要用之前缓存的画面,叠加上和本帧定义的差别,生成最终画面。
  • B 帧,双向预测内插编码帧。B 帧记录的是本帧与前后帧的差别。要解码 B 帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的数据与本帧数据的叠加,取得最终的画面。
  • 一个视频,可以拆分成一系列的帧,每一帧拆分成一系列的片,每一片都放在一个 NALU 里面,NALU 之间都是通过特殊的起始标识符分隔,在每一个 I 帧的第一片前面,要插入单独保存 SPS 和 PPS 的 NALU,最终形成一个长长的 NALU 序列。
  1. 推流:如何把数据流打包传输到对端?
  • 需要将这个二进制的流打包成网络包进行发送,这里我们使用RTMP 协议。这就进入了第二个过程,推流。

  • RTMP 是基于 TCP 的,因而肯定需要双方建立一个 TCP 的连接。在有 TCP 的连接的基础上,还需要建立一个 RTMP 的连接,也即在程序里面,你需要调用 RTMP 类库的 Connect 函数,显示创建一个连接。

  1. 拉流:观众的客户端如何看到视频?


6.总结
  • 视频名词比较多,编码两大流派达成了一致,都是通过时间、空间的各种算法来压缩数据;

  • 压缩好的数据,为了传输组成一系列 NALU,按照帧和片依次排列;

  • 排列好的 NALU,在网络传输的时候,要按照 RTMP 包的格式进行包装,RTMP 的包会拆分成 Chunk 进行传输;

  • 推送到流媒体集群的视频流经过转码和分发,可以被客户端通过 RTMP 协议拉取,然后组合为 NALU,解码成视频格式进行播放。

相关文章

  • 12-流媒体协议

    本人在“极客时间”上购买了一套“趣谈网络协议”的课程,本文为该课程第16讲(第16讲 流媒体协议)的课程笔记。 1...

  • RTSP协议介绍

    流媒体传输协议介绍 1,RTMP协议(1)是流媒体协议。(2)RTMP协议是 Adobe 的私有协议,未完全公开。...

  • 流媒体播放协议

    流媒体通信协议 常用的流媒体协议主要有HTTP渐进下载(如HLS)和基于RTSP/RTP的实时流媒体协议,这两种基...

  • 流媒体协议

    在流媒体协议中,常用的流媒体协议主要有 HTTP协议,RTSP协议和RTMP协议。国内视频网站多采用HTTP+MP...

  • 视频开发知识储备

    1,rtp实时传输协议,用于传输流媒体数据,基于udp.2,rtsp实时流媒体协议,用于发起流媒体会话,交互信息,...

  • iOS 直播之流媒体协议篇

    常见的流媒体协议 常见的流媒体协议有很多比如: RTP(Real-time Transport Protocol)...

  • iOS直播技术学习笔记-流媒体协议(七)

    常见的流媒体协议 常见的流媒体协议有很多比如:RTP(Real-time Transport Protocol),...

  • 流媒体协议

    常见的流媒体协议 常见的流媒体协议有很多比如: RTP(Real-time Transport Protocol)...

  • Android 视频播放技术

    1.HTTP渐进下载流媒体播放2.RTSP/RTP流媒体协议3.HTTP Live Streaming协议4.常用...

  • iOS-RTMP协议

    1.伪流媒体协议渐进式流媒体:下载一点、保存一点。 使用http协议,实现视频播放,快进快退,和流媒体很像,优酷、...

网友评论

      本文标题:12-流媒体协议

      本文链接:https://www.haomeiwen.com/subject/zafzxqtx.html