Android直播入門實踐:動手搭建一套簡單的直播系統
轉載自:http://www.52im.net/thread-1154-1-1.html
1、前言
實時視訊直播是這兩年非常火的技術形態,已經滲透到教育、線上互娛等各種業務場景中。但要搭建一套實時視訊直播系統,並非易事,當然相關的直播技術理論在論壇的其它文章裡已經寫的非常詳細,本文不再展開。
通常的直播系統的技術模型大致如下圖:
基於對新技術的好奇心,我立馬實踐了下,所以首先給大家分享下整個搭建的流程。本人的作業系統為mac,其他系統的同學可以根據提示,自行安裝軟體。
一個簡易的直播系統,大致可以由三部分組成:
- 搭建一個rtmp媒體伺服器;
- 推流端;
- 拉流端。
現在目標是快速搭建起來,所以當然是藉助開源專案和一些軟體:
- rtmp媒體伺服器:這裡使用srs;
- 推流端:這裡使用obs;
- 拉流端:這裡使用播放器vlc。
2、參考資料
[1] 開源實時音視訊技術WebRTC的文章:
《 開源實時音視訊技術WebRTC的現狀 》
《 簡述開源實時音視訊技術WebRTC的優缺點 》
《 訪談WebRTC標準之父:WebRTC的過去、現在和未來 》
《 良心分享:WebRTC 零基礎開發者教程(中文)[附件下載] 》
《 WebRTC實時音視訊技術的整體架構介紹
《 新手入門:到底什麼是WebRTC伺服器,以及它是如何聯接通話的? 》
《 WebRTC實時音視訊技術基礎:基本架構和協議棧 》
《 淺談開發實時視訊直播平臺的技術要點 》
《 [觀點] WebRTC應該選擇H.264視訊編碼的四大理由 》
《 基於開源WebRTC開發實時音視訊靠譜嗎?第3方SDK有哪些? 》
《 開源實時音視訊技術WebRTC中RTP/RTCP資料傳輸協議的應用 》
《 簡述實時音視訊聊天中端到端加密(E2EE)的工作原理 》
《 實時通訊RTC技術棧之:視訊編解碼 》
《 開源實時音視訊技術WebRTC在Windows下的簡明編譯教程
《 網頁端實時音視訊技術WebRTC:看起來很美,但離生產應用還有多少坑要填? 》
>> 更多同類文章 ……
[2] 實時音視訊開發的其它精華資料:
《 專訪微信視訊技術負責人:微信實時視訊聊天技術的演進 》
《 實時語音聊天中的音訊處理與編碼壓縮技術簡述 》
《 網易視訊雲技術分享:音訊處理與壓縮技術快速入門 》
《 學習RFC3550:RTP/RTCP實時傳輸協議基礎知識 》
《 基於RTMP資料傳輸協議的實時流媒體技術研究(論文全文) 》
《 聲網架構師談實時音視訊雲的實現難點(視訊採訪) 》
《 淺談開發實時視訊直播平臺的技術要點 》
《 還在靠“喂喂喂”測試實時語音通話質量?本文教你科學的評測方法! 》
《 實現延遲低於500毫秒的1080P實時音視訊直播的實踐分享 》
《 移動端實時視訊直播技術實踐:如何做到實時秒開、流暢不卡 》
《 如何用最簡單的方法測試你的實時音視訊方案 》
《 技術揭祕:支援百萬級粉絲互動的Facebook實時視訊直播 》
《 簡述實時音視訊聊天中端到端加密(E2EE)的工作原理 》
《 移動端實時音視訊直播技術詳解(一):開篇 》
《 移動端實時音視訊直播技術詳解(二):採集 》
《 移動端實時音視訊直播技術詳解(三):處理 》
《 移動端實時音視訊直播技術詳解(四):編碼和封裝 》
《 移動端實時音視訊直播技術詳解(五):推流和傳輸 》
《 移動端實時音視訊直播技術詳解(六):延遲優化 》
《 理論聯絡實際:實現一個簡單地基於HTML5的實時視訊直播 》
《 IM實時音視訊聊天時的回聲消除技術詳解 》
《 淺談實時音視訊直播中直接影響使用者體驗的幾項關鍵技術指標 》
《 如何優化傳輸機制來實現實時音視訊的超低延遲? 》
《 首次披露:快手是如何做到百萬觀眾同場看直播仍能秒開且不卡頓的? 》
《 Android直播入門實踐:動手搭建一套簡單的直播系統 》
《 網易雲信實時視訊直播在TCP資料傳輸層的一些優化思路 》
《 實時音視訊聊天技術分享:面向不可靠網路的抗丟包編解碼器 》
>> 更多同類文章 ……
3、rtmp媒體伺服器的搭建
這裡使用srs,srs的連結為: https://github.com/ossrs/srs 。
首先clone到本地,進入到trunk目錄:
1 2 |
git clone [url=https:
//github
.com
/ossrs/srs
.git]https:
//github
.com
/ossrs/srs
.git[
/url
]
cd
srs
/trunk
|
然後執行:
1 |
.
/configure
--osx
|
最後執行:
1 |
make
|
執行成功後,就可以開啟我們的服務了:
1 |
.
/etc/init
.d
/srs
start
|
再次回到trunk目錄:
1 |
.
/etc/init
.d
/srs
start
|
補充說明:
Centos、Ubuntu可以參考官網搭建,比較簡單。
如果你啟動過程中還遇到了其他錯誤,可以檢視log資訊:
1 |
srs
/trunk/objs/srs
.log
|
其他指令:
1 2 |
停止 .
/etc/init
|