<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] 參考:[https://blog.csdn.net/leixiaohua1020/article/details/11704355](https://blog.csdn.net/leixiaohua1020/article/details/11704355) ## 播放流媒體的步驟 RTMP協議規定,播放一個流媒體有兩個前提步驟: 第一步,建立一個網絡連接(NetConnection); 第二步,建立一個網絡流(NetStream)。 ` ` 其中,網絡連接代表服務器端應用程序和客戶端之間基礎的連通關系。網絡流代表了發送多媒體數據的通道。**服務器和客戶端之間只能建立一個網絡連接,但是基于該連接可以創建很多網絡流**。他們的關系如圖所示: ![](https://img-blog.csdn.net/20130915111501437?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGVpeGlhb2h1YTEwMjA=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) ## 簡要介紹 播放一個RTMP協議的流媒體需要經過以下幾個步驟:**握手**,**建立連接**,**建立流**,**播放**。RTMP連接都是以握手作為開始的。建立連接階段用于建立客戶端與服務器之間的“網絡連接”;建立流階段用于建立客戶端與服務器之間的“網絡流”;播放階段用于傳輸視音頻數據。 ## 握手(HandShake) 一個RTMP連接以握手開始,雙方分別發送大小固定的三個數據塊 * a)??握手開始于客戶端發送C0、C1塊。服務器收到C0或C1后發送S0和S1。 * b)??當客戶端收齊S0和S1后,開始發送C2。當服務器收齊C0和C1后,開始發送S2。 * c)???當客戶端和服務器分別收到S2和C2后,握手完成 ![](https://img-blog.csdn.net/20130915111408781?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGVpeGlhb2h1YTEwMjA=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) ## 建立網絡連接(NetConnection) * a)?客戶端發送命令消息中的“連接”(connect)到服務器,請求與一個服務應用實例建立連接。 * b)?服務器接收到連接命令消息后,發送確認窗口大小(Window Acknowledgement Size)協議消息到客戶端,同時連接到連接命令中提到的應用程序。 * c)?服務器發送設置帶寬()協議消息到客戶端。 * d)?客戶端處理設置帶寬協議消息后,發送確認窗口大小(Window Acknowledgement Size)協議消息到服務器端。 * e)?服務器發送用戶控制消息中的“流開始”(Stream Begin)消息到客戶端。 * f) 服務器發送命令消息中的“結果”(\_result),通知客戶端連接的狀態。 ![](https://img-blog.csdn.net/20130915111423578?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGVpeGlhb2h1YTEwMjA=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) ## 建立網絡流(NetStream) * a)? 客戶端發送命令消息中的“創建流”(createStream)命令到服務器端。 * b)? 服務器端接收到“創建流”命令后,發送命令消息中的“結果”(\_result),通知客戶端流的狀態。 ![](https://img-blog.csdn.net/20130915111350062?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGVpeGlhb2h1YTEwMjA=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) ## 播放(Play) * a)??客戶端發送命令消息中的“播放”(play)命令到服務器。 * b)??接收到播放命令后,服務器發送設置塊大小(ChunkSize)協議消息。 * c)??服務器發送用戶控制消息中的“streambegin”,告知客戶端流ID。 * d)??播放命令成功的話,服務器發送命令消息中的“響應狀態” NetStream.Play.Start & NetStream.Play.reset,告知客戶端“播放”命令執行成功。 * e)??在此之后服務器發送客戶端要播放的音頻和視頻數據。 ![](https://img-blog.csdn.net/20130915111446703?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGVpeGlhb2h1YTEwMjA=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看