zoukankan      html  css  js  c++  java
  • 直播-rtmp学习

    RTMP(实时消息传输协议),官方介绍如下:
    Adobe’s Real Time Messaging Protocol (RTMP), an application-level protocol designed for multiplexing and packetizing multimedia transport streams (such as audio, video, and interactive content) over a suitable transport protocol (such as TCP).
     
     
    简单的这样理解rtmp:
     
     NetConnection 命令
            NetConnection 管理着一个客户端应用和服务器端之间的双相连接。此外,它还提供远程方法的异步调用。
            NetConnection 可以发送以下命令:
    • connect
    • call
    • close
    • createStream
     
    NetStream 命令
            NetStream 定义了传输通道,通过这个通道,音频流、视频流以及数据消息流可以通过连接客户端到服务端的 NetConnection 传输。
            以下命令可以由客户端使用 NetStream 往服务器端发送:
    • play
    • play2
    • deleteStream
    • closeStream
    • receiveAudio
    • receiveVideo
    • publish
    • seek
    • pause
     
     
     
    握手过程
     
    命令执行时消息流动如下:
                    1. 客户端发送 connect 命令到服务器端以请求对服务器端应用实例的连接。
                    2. 收到 connect 命令后,服务器端发送协议消息 '窗口确认大小' 到客户端。服务器端也会连接到 connect 命令中提到的应用。
                    3. 服务器端发送协议消息 '设置对端带宽' 到客户端。
                    4. 在处理完协议消息 '设置对端带宽' 之后客户端发送协议消息 '窗口确认大小' 到服务器端。
                    5. 服务器端发送另一个用户控制消息 (StreamBegin) 类型的协议消息到客户端。
                    6. 服务器端发送结果命令消息告知客户端连接状态 (success/fail)。这一命令定义了事务 ID (常常为 connect 命令设置为 1)。这一消息也定义了一些属性,比如 FMS 服务器版本 (字符串)。此外,它还定义了其他连接关联到的信息,比如 level (字符串)、code (字符串)、description (字符串)、objectencoding (数字) 等等。
     
     
     
     
    播放过程
     
    命令执行时的消息流动是为:
                    1. 当客户端从服务器端接收到 createStream 命令的结果是为 success 时,发送 play 命令。
                    2. 一旦接收到 play 命令,服务器端发送一个协议消息来设置块大小。
                    3. 服务器端发送另一个协议消息 (用户控制),这个消息中定义了 'StreamIsRecorded' 事件和流 ID。消息在前两个字节中保存事件类型,在后四个字节中保存流 ID。
                    4. 服务器端发送另一个协议消息 (用户控制),这一消息包含 'StreamBegin' 事件,来指示发送给客户端的流的起点。
                    5. 如果客户端发送的 play 命令成功,服务器端发送一个 onStatus 命令消息 NetStream.Play.Start & NetStream.Play.Reset。只有当客户端发送的 play 命令设置了 reset 时服务器端才会发送 NetStream.Play.Reset。如果要播放的流没有找到,服务器端发送 onStatus 消息 NetStream.Play.StreamNotFound。
            之后,服务器端发送视频和音频数据,客户端对其进行播放。
     
     
     
     
    发布过程
     
     
     
    参考资料
     
     
  • 相关阅读:
    大数乘法
    大数阶乘
    存js导入excel文件
    设计模式详解
    javascript的api设计原则
    从零开始nodejs系列文章
    git的学习
    如何暴力学英语
    Vsftpd
    shell命令学习
  • 原文地址:https://www.cnblogs.com/vc60er/p/5906728.html
Copyright © 2011-2022 走看看