<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ### [rtmp url基礎](https://pengrl.com/lal/#/RTMPURLVhost?id=rtmp-url%e5%9f%ba%e7%a1%80) rtmp url的格式類似于http url。格式如下: ~~~cpp rtmp://<host>[:port]/<appName>/<streamName>[?param1=value1][&param2=value2] ~~~ *其中rtmp是scheme字段,固定不變。* 我們以rtmp play拉流來說明(publish類似)。rtmp拉流客戶端的邏輯: 第一步,如果host部分是domain域名,則先通過域名解析得到對端ip。 第二步,使用對端ip加port建立tcp連接。注意,如果url中不存在port,則使用1935。 第三步,客戶端和服務端通過rtmp信令的交互,建立好拉流通道,之后服務端給客戶端下發對應流的音視頻數據。這里有的同學可能會疑惑,域名解析成ip進行tcp連接后,服務端如何知道客戶端連接時用的域名是啥? 答案是客戶端通過rtmp信令,將域名傳輸給了服務端。 具體點,是rtmp connect信令(注意,這個connect不是tcp connect)和play信令。看一個簡單的url例子。 *測試前,修改/etc/hosts,使得fake.lal.com這個假的測試域名解析到本地127.0.0.1的*[*lalserver*](https://github.com/q191201771/lal)*上。客戶端使用ffmpeg。* ~~~cpp ffplay rtmp://fake.lal.com/live/test110信令值:connect appName: live tcUrl: rtmp://fake.lal.com:1935/liveplay streamName: test110 ~~~ ### [vhost](https://pengrl.com/lal/#/RTMPURLVhost?id=vhost) 先說vhost的作用。舉個例子,假設你自身有一個rtmp服務器(后面將這個服務器稱為源站),上面有很多流。源站由于網絡以及負載的原因,并不能服務全國的觀眾拉流,于是你為了更好的播放效果,使用了阿里CDN做流分發,也即用戶從阿里CDN的邊緣節點拉流,阿里CDN從你的源站回源拉流。 又由于你擔心阿里CDN不可靠,于是你又加了一家騰訊CDN。用戶可以上任意一家CDN拉取任意一路你源站上的流。 此時,問題來了,你的源站被拉流時,如何區分是哪家CDN來拉流的呢?簡單的做法,你可以申請兩個域名,比如阿里使用`alfake.lal.com`,騰訊使用`txfake.lal.com`,它們的DNS解析都指向源站IP。 但這么做有個缺點,就是后續有變化,需要頻繁操作域名,比如又要接入CDN3,CDN4...然后說說vhost的做法。其實很簡單,就是url的host只用一個,在非host部分,填入一個域名字段。由于不是host,就不涉及到DNS域名解析。你可以任意命名,快速提供給CDN。那么具體放哪呢,這實際上是一個行業潛規則。常見的有兩種: *還拿前面那個例子rtmp://fake.lal.com/live/test110來用* 第一種,在host和appName之間增加了一級目錄。服務端需要從rtmp connect信令中解析。 ~~~plain rtmp://fake.lal.com/alfake.lal.com/live/test110信令值:connect appName: alfake.lal.com/live tcUrl: rtmp://fake.lal.com:1935/alfake.lal.com/liveplay streamName: test110 ~~~ 第二種,更簡單些,直接增加一個url參數。服務端需要從rtmp play信令中解析。 ~~~plain rtmp://fake.lal.com/alfake.lal.com/live/test110信令值:connect appName: live tcUrl: rtmp://fake.lal.com:1935/liveplay streamName: test110?vhost=alfake.lal.com ~~~ 原創不易,轉載請注明文章出自開源流媒體服務器[lal](https://github.com/q191201771/lal),Github:[https://github.com/q191201771/lal](https://github.com/q191201771/lal)官方文檔:[https://pengrl.com/lal](https://pengrl.com/lal)yoko,
                  <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>

                              哎呀哎呀视频在线观看