調用Live555接收RTSP直播流,轉換為Http Live Streaming(iOS直播)協議

來源:互聯網
上載者:User

標籤:png   describe   實現   image   設定檔   項目   size   white   部分   

Live555接收RTSP直播流,轉換Http Live Streaming(iOS直播)協議

  RTSP協議也是廣泛使用的直播/點播流媒體協議,之前實現過一個通過live555接收RTSP協議,然後轉換為HLS(Http Live Streaming)直播協議檔案的程式,為的是可以接收遠端裝置或伺服器的多路RTSP直播資料,即時轉換為HLS協議檔案,以實現iPhone或iPad等裝置觀看RTSP直播源的需求。現在把實現的思路分享如下。

要點分析

  首先,程式的主要目的,是從多路RTSP輸入源中提取AAC編碼的音頻和H.264編碼視頻資料,並產生Http Live Streaming所支援的MPEG-TS格式分段檔案以及對應的m3u8檔案。因此,本程式的關鍵點有以下部分:

 

  1. RTSP直播流的讀取
  2. H.264和AAC編碼資料的分析、處理
  3. MPEG-TS打包以及HLS分段建置原則
  4. m3u8索引檔案

  有了關鍵點,就可以一項一項的去分析。

 

設計思路

  根據上面分析的要點,首先要選擇RTSP直播協議的讀取。我們不需要從零做起,網路上有很多和RTSP相關的開源項目可以使用或借鑒,我選擇了Live555。

  Live555是一個跨平台的流媒體解決方案,主要支援RTSP協議,好像也支援SIP(這個也是我馬上研究的重點,之後會寫文章研究SIP相關的技術實現)。Live555實現了RTSP包括伺服器-用戶端的整套結構,是很知名的一個開源項目。網上有很多關於Live555學習和使用的文章,我就不具體介紹了。

  H.264和AAC資料的分析處理,這個對於從沒做過相關項目開發的人來說,應該是一個痛點,主要是相關概念的理解。好在我一直在做這塊,也比較好弄。

  第3和第4點,可以參照我之前的文章“Http Live Streaming直播(iOS直播)技術分析與實現”的技術方法,來加以實現。因此,主要需要處理的就是RTSP直播流資料的擷取,以及對其中H.264和AAC編碼資料的處理。

  於是可以畫出大體結構如下:

 

  

 

邏輯與實現1. 程式架構和模組說明

  

 

2. RtspCapture的介面

  RtspCapture是我的程式裡管理RTSP直播資料流和分析處理的類,介面很重要,基本上這個設計就可以。(當然,全部代碼是不會放上來的,有興趣的可以和我談,這裡只羅列關鍵的地方。)

  

  他所使用的live555變數,這裡ourRTSPClient實際就是RTSPClient的簡單繼承

  

3.RtspCapture調用live555的主要流程

  1. 首先,在RtspCapture建構函式初始化

  

  2. 在StartRtsp函數中,建立RtspClient,並發送"describe"命令,開始擷取sdp。回呼函數就是continueAfterDESCRIBE。在這裡建立MediaSession,之後再發送"setup"命令,等,這些都可以在live555的例子以及網上的說明中看到。

  

  3. 還有一個關鍵點,就是要在自己的線程迴圈中,調用live555 environment的事件迴圈,就像這樣

  

4. 對rtsp回調h264資料的分析處理

  這裡示範了,如何從rtsp回調的h264資料中,提取sps和pps資訊。裡面的parse函數,是live555內建的。

  

程式效果

   程式介面,很簡單。

  

  設定檔配置如下:

  

  開啟rtsp伺服器,可以用vlc來串流檔案作為RTSP伺服器測試

  iPhone上顯示

   

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

  haibindev.cnblogs.com,合作請聯絡QQ。(轉載請註明作者和出處~)

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

調用Live555接收RTSP直播流,轉換為Http Live Streaming(iOS直播)協議

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.