zoukankan      html  css  js  c++  java
  • RTMP流媒体播放过程:握手,建立连接,建立流,播放

    本文讲述从打开一个RTMP流媒体到视音频数据开始播放的整个过程。

    播放一个流媒体有两个前提步骤:

    第一步,建立一个网络连接(NetConnection);

    第二步,建立一个网络流(NetStream)。

    其中,网络连接代表服务器端应用程序和客户端之间的连通关系。

    网络流代表了发送多媒体数据的通道。服务器和客户端之间只能建立一个网络连接,但是基于该连接可以创建很多网络流。他们的关系如图所示:

    1 介绍

    播放一个RTMP协议的流媒体需要经过以下几个步骤:握手,建立连接,建立流,播放。RTMP连接都是以握手作为开始的。建立连接阶段用于建立客户端与服务器之间的“网络连接”;建立流阶段用于建立客户端与服务器之间的“网络流”;播放阶段用于传输视音频数据。

    2 握手(HandShake)

    一个RTMP连接以握手开始,双方分别发送大小固定的三个数据块

    a)        握手开始于客户端,发送C0、C1块。服务器收到C0或C1后发送S0和S1。

    b)        当客户端收齐S0和S1后,开始发送C2。当服务器收齐C0和C1后,开始发送S2。

    c)        当客户端和服务器分别收到S2和C2后,握手完成。

    握手

    3,建立网络连接(NetConnection)

    a)        客户端发送命令消息中的“连接”(connect)到服务器,请求与一个服务应用实例建立连接。

    b)        服务器接收到连接命令消息后,发送确认窗口大小(Window Acknowledgement Size)协议消息到客户端,同时连接到连接命令中提到的应用程序。

    c)        服务器发送设置带宽()协议消息到客户端。

    d)        客户端处理设置带宽协议消息后,发送确认窗口大小(Window Acknowledgement Size)协议消息到服务器端。

    e)        服务器发送用户控制消息中的“流开始”(Stream Begin)消息到客户端。

    f)         服务器发送命令消息中的“结果”(_result),通知客户端连接的状态。

    建立连接

    4,建立网络流(NetStream)

    a)      客户端发送命令消息中的“创建流”(createStream)命令到服务器端。

    b)      服务器端接收到“创建流”命令后,发送命令消息中的“结果”(_result),通知客户端流的状态。

    建立流

    5 ,播放(Play)

    a)        客户端发送命令消息中的“播放”(play)命令到服务器。

    b)        接收到播放命令后,服务器发送设置块大小(ChunkSize)协议消息。

    c)        服务器发送用户控制消息中的“streambegin”,告知客户端流ID。

    d)        播放命令成功的话,服务器发送命令消息中的“响应状态” NetStream.Play.Start & NetStream.Play.reset,告知客户端“播放”命令执行成功。

    e)        在此之后服务器发送客户端要播放的音频和视频数据。

    播放流

    RTMP协议规范(中文翻译):http://download.csdn.net/detail/leixiaohua1020/6563059

    http://blog.csdn.net/leixiaohua1020/article/details/11704355

  • 相关阅读:
    Mayan游戏 (codevs 1136)题解
    虫食算 (codevs 1064)题解
    靶形数独 (codevs 1174)题解
    黑白棋游戏 (codevs 2743)题解
    神经网络 (codevs 1088) 题解
    The Rotation Game (POJ 2286) 题解
    倒水问题 (codevs 1226) 题解
    银河英雄传说 (codevs 1540) 题解
    生日蛋糕 (codevs 1710) 题解
    第一章 1.11 高阶函数
  • 原文地址:https://www.cnblogs.com/elesos/p/9394212.html
Copyright © 2011-2022 走看看