Skip to content

v1_CN_RTMPHandshake

winlin edited this page May 23, 2015 · 15 revisions

RTMP握手协议

rtmp 1.0规范中,指定了RTMP的握手协议:

  • c0/s0:一个字节,说明是明文还是加密。
  • c1/s1: 1536字节,4字节时间,4字节0x00,1528字节随机数
  • c2/s2: 1536字节,4字节时间1,4字节时间2,1528随机数和s1相同。 这个就是srs以及其他开源软件所谓的simple handshake,简单握手,标准握手,FMLE也是使用这个握手协议。

Flash播放器连接服务器时,若服务器只支持简单握手,则无法播放h264和aac的流,可能是adobe的限制。adobe将简单握手改为了有一系列加密算法的复杂握手(complex handshake) ,详细协议分析参考变更的RTMP握手

下表为总结:

握手方式 依赖库 Flash播放
支持的编码
常见客户端 SRS支持方式 用途
Simple
标准握手
简单握手
不依赖 vp6+mp3/speex 所有客户端 支持 编码器,譬如FMLE,FFMPEG
srs-librtmp(两种都支持,推荐用Simple)
Complex
复杂握手
openssl vp6+mp3/speex
h264+aac
Flash播放器 支持 主要是Flash播放器播放H264+aac流时需要,
其他都不需要

备注:SRS编译时若打开了SSL选项(--with-ssl),SRS会先使用复杂握手和客户端握手,若复杂握手失败,则尝试简单握手。

Winlin 2014.2

Welcome to SRS wiki!

SRS 5.0 wiki

Please select your language:

SRS 4.0 wiki

Please select your language:

SRS 3.0 wiki

Please select your language:

SRS 2.0 wiki

Please select your language:

SRS 1.0 wiki

Please select your language:

Clone this wiki locally