simple rtmp server:
https://github.com/winlinvip/simple-rtmp-server
RTMP协议:
播放一个RTMP协议的流媒体需要经过以下几个步骤:握手,建立连接,建立流,播放。
1. RTMP连接都是以握手作为开始的;
2. 建立连接阶段用于建立客户端与服务器之间的“网络连接”;
3. 建立流阶段用于建立客户端与服务器之间的“网络流”;
4. 播放阶段用于传输视音频数据。
在一条TCP 连接中,包含着几条Message Stream,绝大部分情况下是Control Msg Stream 和Media Msg Stream。
而这些Msg Stream 由一段一段的Chunk Stream 组成,每个Chunk Stream 都带有一个Message Stream ID 以标识这个Chunk Stream 是属于哪一个Msg Stream
设想一段用rtmp播放的视频,应该包含两条message stream,一条command,一条media;而media stream中又包含了两条chunk stream,一条video,一条audio。
RTMP消息:
1. 消息是RTMP最基本的数据单元,包括消息头和消息负载:
message type分为:
user control message(4);
command message(20 for AMF0, 17 for AMF3);
data message(18 for AMF0,15 for AMF3);
shared object message(19 for AMF0, 16 for AMF3);
audio message(8)
video message(9)
aggregate message(22)
2. 消息负载一般被分为固定大小的chunk(默认128bytes):
chunk basic header有三种,分别为1byte,2bytes,和3bytes;根据chunk stream id的不同选择使用。
chunk message header有四种,分别为11bytes,7bytes,3bytes和0bytes,头里包含有stream id。
extended timstamp,当chunk message header里面的timestamp超过三字节范围时,补充使用。
3. 消息分块:
今天的文章rtmp协议分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/11441.html