RTMP简介
RTMP( Real Time g Messaging Protocol)是一个应用层协议,主要用于在Flash player和服务器之间传输视频、音频、控制命令等内容。该协议的突出优点是: 低延时。
RTMP基于TCP, 默认使用端口1935。
RTMP推拉流常用命令
推流: ffmpeg -re -i /doc/filename.mp4 -c copy -f flv rtmp://192.168.1.1/live/livestream
拉流: ffplay rtmp://202.69.69.180:443/webcast/bshdlive-pc
RTMP播放基本流程
推流流程
播流流程
Step 1:TCP三次握手
RTMP是基于TCP的应用层协议。
通过TCP三次握手,可实现RTMP客户端与RTMP服务器的指定端口(默认端口为1935)建立一个可靠的网络连接。
这里的网络连接才是真正的物理连接。
完成了三次握手,客户端和服务器端就可以开始传送数据。
经过三次握手,客户端与服务器端1935端口建立了TCP Connection。
Step 2:RTMP握手
与其叫RTMP握手,其实实质上起到的是验证的作用。
实际工程中RTMP握手的基本流程通常如下:
RTMP握手主要分为: 简单握手和复杂握手。
RTMP握手---简单握手
简单握手中C1和S1从第9个字节开始都是随机数。
S2是C1的复制。
C2是S1的复制。
RTMP握手---复杂握手
相对于简单握手,复杂握手主要是增加了更严格的验证。
主要是将简单握手中1528Bytes随机数的部分平均分成两部分,一部分764Bytes存储public key(公共密钥),另一部分764Bytes存储digest(密文,32字节)。
另外,复杂握手还有一个明显的特征就是 : Version 部分不为0,服务器端可根据这个来判断是否简单握手或复杂握手。
未完待续。。。