本文講的是<b>輕松入門Android直播相關技術 從0搭建直播系統,</b>我立馬實踐了下,是以首先給大家分享下整個搭建的流程:
本人的作業系統為mac,其他系統的同學可以根據提示,自行安裝軟體。
一個簡易的直播系統,大緻可以由三部分組成:
搭建一個rtmp媒體伺服器
推流端
拉流端
現在目标是快速搭建起來,是以當然是借助開源項目和一些軟體:
rtmp媒體伺服器:這裡使用srs
推流端:這裡使用obs
拉流端:這裡使用播放器vlc
rtmp媒體伺服器的搭建
這裡使用srs,srs的連結為:
<a href="https://github.com/ossrs/srs">https://github.com/ossrs/srs</a>
首先clone到本地,進入到trunk目錄:
git clone https://github.com/ossrs/srs.git
cd srs/trunk
然後執行:
./configure --osx
注意: Centos6.x/Ubuntu12 32/64bits使用者僅需要執行./configure。
最後執行:
make
執行成功後,就可以開啟我們的服務了:
./etc/init.d/srs start
如果是mac系統,此時會失敗,原因是srs.conf中max_connections太大,
目錄為srs/trunk/conf/srs.conf,可以修改為248(其他作業系統可能無此問題)。
再次回到trunk目錄:
到此我們的srs伺服器就搭建起來了。
注:
Centos、Ubuntu可以參考官網搭建,比較簡單。
如果你啟動過程中還遇到了其他錯誤,可以檢視log資訊:
srs/trunk/objs/srs.log
其他指令:
停止 ./etc/init.d/srs stop
重新開機 ./etc/init.d/srs restart
有了伺服器之後,我們就準備開始我們的推流端。
如果你實在搭建不成功,可以先拿116.196.121.20這個ip做測試,我在京東雲上搭建的,配置較低,主要用于大家臨時測試,可能不穩定,看一眼就行,後續會關掉,是以還是盡可能自己搭建成功吧。
使用OBS推流
先下載下傳安裝,這裡就簡單了

首先選擇點選+選擇來源,這裡我選擇了視窗捕獲,然後點選右側的設定:
選擇流,串流類型選擇自定義,然後url,填寫:
rtmp://你的ip/你喜歡的url
流名稱可以按照上述自由輸入。
記住我們的url和流名稱:
rtmp://192.168.1.102/zhy/mylive
完成後,點選确定。
然後點選開始推流即可。
這樣,我們的OBS推流就開啟啦,軟體的更多使用自行探索吧。
最後就剩下我們的拉流了。
使用VLC拉流
先下載下傳安裝,這個就更簡單啦。
點選Open Network,輸入我們剛才的url+流名稱,點選确定即可。
稍等,就開始播放我們的推流内容了。
最左側是VLC,中間是OBS,右側是我視窗捕獲對象。
到這裡,就算我們搭建了一個直播系統啦~~自己搭建成功的感覺,無比爽快,也能很大的激發我們後續的學習興趣。
後面我們可以根據自己的需求去選擇學習拉流或者推流,逐漸替換掉軟體。拉流的方式很多,很多開源播放器都支援。這裡我們考慮替換掉推流,希望可以使用手機來推流。
使用第三方推流SDK
最簡單的方式,就是可以借助于第三方的推流SDK,大多情況下第三方SDK完整方案都是收費的,不過他們的推流Android SDK倒是可以下載下傳無需付費情況下來學習使用的。
這裡以百度雲的直播SDK為例,下載下傳位址:
<a href="https://cloud.baidu.com/doc/Downloadcenter/Push.html#.E7.89.88.E6.9C.AC.E6.9B.B4.E6.96.B0.E8.AF.B4.E6.98.8E">https://cloud.baidu.com/doc/Downloadcenter/Push.html#.E7.89.88.E6.9C.AC.E6.9B.B4.E6.96.B0.E8.AF.B4.E6.98.8E</a>
直接點選下載下傳Android SDK即可,下載下傳完成後解壓,然後倒入AS(這竟然是個Eclipse項目…),還好AS支援,導入後:
直接将mStreamKey修改我們的rtmp的位址即可。
注意,需要在build.gradle中添加下v7的依賴
compile 'com.android.support:appcompat-v7:23.0.0'
然後運作,界面還可以:
貼一下運作時的效果圖:
還是以vlc拉流即可,整個過程很緩慢,耐心等待,效果也不是很好,不過能跑通即可,主要是學習。然後你可以舉一反三試試其他的SDK。
當然了,很多開源項目其實比SDK作為學習資料更好,比較源碼都有,下面以一個開源項目舉例。
使用開源項目推流
使用一個開源項目:
<a href="https://github.com/begeekmyfriend/yasea">https://github.com/begeekmyfriend/yasea</a>
直接clone,導入。
這個比較順利,導入後,修改下rtmp連結:
然後運作即可(導入不成功,自己想辦法解決,基礎能力啦~)。
貼一張效果圖:
硬解碼的情況下,效果比前面的SDK好很多~~
好了,最後我們再看一種方式。
恩,ffmpeg很火,ffmpeg很強大。
是以最後一種方式,就是看如何利用ffmpeg推流啦~~
利用ffmpeg推流
大家可以自己下載下傳ffmepg的源碼,然後按照網上的方式去編成so,簡單的一點而且比較實用的,就是編出可以執行ffmpeg 指令的so,這樣就能幹很多事情了。
這裡,由于篇幅,我們就直接使用别人編好的項目了。
<a href="https://github.com/WritingMinds/ffmpeg-android-java">https://github.com/WritingMinds/ffmpeg-android-java</a>
直接導入,該項目支援直接運作ffmpeg的指令。
ffmpeg指令很多:
例如:
将.avi轉成gif動畫(未壓縮)
ffmpeg -i video_origine.avi gif_anime.gif
合成視訊和音頻
ffmpeg -i son.wav -i video_origine.avi video_finale.mpg
其中有一個指令就是支援推流,這裡将手機上的zixia.mp4作為輸入:
ffmpeg -re -i /storage/emulated/0/zixia.mp4
-vcodec libx264
-acodec aac
-f flv
-strict -2 rtmp://192.168.1.102/zhy/mylive=
那麼這個庫是支援在手機上運作ffmpeg指令的,那就簡單了:
貼上我們需要執行的指令,運作即可。
這裡注意我推的是存儲卡上的一個媒體檔案,注意添加相關權限,效果如下。
好了,這樣我們的大緻學習了如何搭建一個小直播系統,如何利用SDK,開源項目,以及簡單的使用ffmpeg來進行推流~~
很多時候,學習一個比較大的技術方向就是開頭難,無從下手,那麼本篇應該是一篇非常易懂的教程,希望對想要學習直播技術的小夥伴有所幫助,也希望以此能夠激發大家一定的學習興趣,當然直播技術遠不止于此,大家可以根據自己的情況繼續深入學習~
本文作者:佚名
來源:51CTO
原文标題:輕松入門Android直播相關技術 從0搭建直播系統