流媒体技术

流媒体技术 #

视频编码 #

  • H.264
  • H.265
  • H.266
  • Apple Pro Res (MOV 格式的专用编码)

音频编码 #

  • AAC
  • MP3
  • WAV
  • FLAC(无损)
  • APE(无损)

参考:

视频容器 / 视频格式 #

一个格式却可以有不同的编码

  • AVI (Audio Video Interleaved 音视频交错格式)
  • RMVB
  • FLV (Flash Video)
  • MOV
  • WMV (Windows Media Video)
  • MP4
  • MKV

MP4 #

MP4  或称  MPEG-4  第 14 部分(英语:MPEG-4 Part 14)是一种标准的数字多媒体容器格式。MPEG-4 第 14 部分的扩展名为.mp4,以存储数字音频数字视频为主,但也可以存储字幕和静止图像。因其可容纳支持比特流的视频流(如高级视频编码),MP4 可以在网络传输时使用流式传输

MKV #

MKV 格式是民间流行的一种视频格式,以它兼容众多视频编码见长,可以是 DivX、XviD、RealVideo、H264、MPEG2、VC1 等等。但是由于是民间格式,没有版权限制,又易于播放,所以官方发布的视频影片都不采用 mkv,网上制作下载常见。


视频传输协议 #

  • RTP/RTCP
  • RTMP
  • HLS (HTTP Live Streaming)

流媒体传输协议 #

流媒体协议的作用:流同步,播放控制,质量控制,多端跨平台播放等 直播三要素:低延时,高可用,质量反馈和检测

常见流媒体协议类型

常见流媒体协议适用场景

RTP/RTCP/RTSP #

封装:

  • ps
  • ts

视频:

  • H.264
  • H.265
  • VP9

音频:

  • aac
  • g711.a

RTSP

  • 基于 TCP
  • 基于文本的双向实时传输协议,类似 HTTP
  • 每个会话都含有状态,保持长连接,请求信令按顺序(HTTP 无状态)

RTP/RTCP

  • 基于 UDP

RTMP #

Real-Time Messaging Protocol

  • Adobe 的私有协议,性能相对 HTTP 比较低下。
  • 数据和信令在一条通道。
  • 长连接
  • 基于 TCP


HLS #

HTTP Live Streaming

  • 基于 HTTP,性能不错
  • 延时常常大于 10 秒,无法做直播互动

HLS 是由苹果公司提出基于  HTTP  的  流媒体网络传输协议。是苹果公司 QuickTime X 和  iPhone  软件系统的一部分。它的工作原理是把整个流分成一个个小的基于 HTTP 的文件来下载,每次只下载一些。当媒体流正在播放时,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率。在开始一个流媒体会话时,客户端会下载一个包含元数据的 extended M3U (m3u8) playlist 文件,用于寻找可用的媒体流。

HLS 只请求基本的 HTTP 报文,与实时传输协议(RTP)不同,HLS 可以穿过任何允许 HTTP 数据通过的防火墙或者代理服务器。它也很容易使用内容分发网络来传输媒体流。

HLS 基于 HTTP 协议实现,传输内容包括两部分,一是 M3U8 描述文件,二是 TS 媒体文件。

为什么要用 TS 而不是 MP4? #

这是因为两个 TS 片段可以无缝拼接,播放器能连续播放, 而 MP4 文件由于编码方式的原因,两段 MP4 不能无缝拼接,播放器连续播放两个 MP4 文件会出现破音和画面间断,影响用户体验。

而且如果要在一段长达一小时的视频中跳转,如果使用单个 MP4 格式的视频文件,并且也是用 HTTP 协议,那么需要代理服务器支持 HTTP range request 获取大文件中的一部分。 这样的话,对于代理服务器的性能来说要求较高。 而 HTTP Live Streaming 则只需要根据列表文件中的时间轴找出对应的 TS 片段下载即可, 不需要 range request,对代理服务器的要求小很多。 所有代理服务器都支持小文件的高效缓存。


流媒体协议 #

RTP/RTCP #

RTP(Real-time Transport Protocol) 是用于 Internet 上针对多媒体数据流的一种传输协议。

RTCP 为 RTP 媒体流提供信道外控制。 RTCP 定期在流多媒体会话参加者之间传输控制数据。 RTCP 的主要功能是为 RTP 所提供的服务质量提供反馈。

RTP 使用一个 偶数 UDP port, 而 RTCP 则使用 RTP 的下一个 port,也就是一个奇数 port。

RTSP #

RTMP #

H264 #

H265 #

TS #

MPEG2-TS 传输流 (MPEG-2 Transport Stream;又称 MPEG-TS、MTS、TS) 是一种传输和存储包含视频、音频与通信协议各种数据的标准格式,用于数字电视广播系统,如 DVB、ATSC、ISDB、IPTV 等等。

RTP Payload type #

有效负载 (载荷) 类型

有些负载类型由于诞生的较晚,没有具体的 PT 值,只能使用动态(dynamic)PT 值,即 96 到 127, 这就是为什么大家普遍指定 H264 的 PT 值为 96。

Payload identifiers 96–127 are used for payloads defined dynamically during a session. It is recommended to dynamically assigned port numbers, although port numbers 5004 and 5005 have been registered for use of the profile when a dynamically assigned port is not required.

MP2T (Payload type: 33)

RFC 2250: RTP Payload Format for MPEG1/MPEG2 Video

参考:


本文访问量

本站总访问量

本站总访客数