1. 程式人生 > >Android+Web視訊直播裝逼實現

Android+Web視訊直播裝逼實現

根據上圖,我們註冊並開通LSS服務後,第一步要做的是建立直播會話。我們先來建立一個指定設定的直播會話,如圖所示:


直播會話建立選項

這裡大家可以看到我用一個紅框標識了重點部分。此處建議大家選擇一個合適的轉碼模板,因為預設的模板設定會導致最終視訊直播時,伺服器只做轉發,保持輸入解析度與位元速率不變。這樣有兩個不妥之處:一是在使用者實際觀看時耗費的流量更大,延遲情況可能更加突出;二是在iPhone手機上,你會發現用HTML5當中預設的Video是無法直播的。這主要是因為iPhone手機預設對視訊格式支援的問題。下面列出iPhone主要支援的視訊格式:

1:H.264 視訊:最高支援 1080p、60 fps、High Profile level 4.2 編碼,其音訊為 AAC-LC 格式、最高支援 160 Kbps、48kHz、立體聲,檔案封包格式為 .m4v、.mp4 和 .mov;

2:MPEG-4 視訊:最高支援 2.5 Mbps、640 x 480 畫素、30 fps、Simple Profile 編碼,其音訊為 AAC-LC 格式、最高支援每聲道 160 Kbps、48kHz、立體聲,檔案封包格式為 .m4v、.mp4 和 .mov;

總而言之,在這裡如果你想直接通過Video標籤來觀看後面的直播,這裡就建議選擇一個合適的轉碼模板,例如我只是用來裝個逼,犯不著跟錢過不去,所以選擇較低的640*360,而且實際上這個解析度已經能在手機上取得不錯的效果了。

2、實現Android端推流

首先下載LSS服務Adnroid推流端的SDK,然後做好相應的配置。在這裡有一個地方要特別提一下,這個SDK包裡面一共包括瞭如下幾個檔案:


SDK包含檔案

關於jar檔案的引入相信大家都不是問題。但關於so檔案的引入,由於官方給的幫助文件還是基於Eclipse+ANT的引入方式(鄙視一個……),因此如果你使用的是Android Studio來作為開發工具,那麼請按我下述的方法來操作:

1.在“src/main”目錄中新建名為“jniLibs”的目錄;

2.將so檔案複製、貼上到“jniLibs”目錄內。

注:如果沒有引用so檔案,可能會在程式執行的時候載入類庫失敗,有類似如下的DEBUG提示——java.lang.UnsatisfiedLinkError: Couldn't load library xxxx from loader dalvik.system.PathClassLoader

引入了SDK後,接下來就要考慮實際的編碼實現了。這裡我廢話就不多說了,直接示例程式的原始碼,以供大家參考。具體請點選如下地址下載:

當你下載程式碼後,需要將程式當中的推流地址換成你自己的實際地址。具體關於推流與拉流的地址,你可以點選我們開始新建立的直播會話,進入會話詳情頁面,然後在這個地方獲取。


獲取視訊推流與拉取地址

最終完成的APP效果如下圖所示:


Android視訊採集與推送效果圖

3、實現Web端拉流播放

在Web端拉流播放有很多種實現方式,你可以自由選擇使用第三方支援HLS的播放器。當然如果你希望能在直播時做一些更深層次的嘗試,例如字幕、播放列表、廣告、互動、直播授權等等,那麼你也可以選擇使用百度自家的T5播放核心。

而對於我來說僅僅為了裝逼的需求,顯然不足以推動我去繼續花費時間,而且我需要的是別人能很輕鬆、沒有任何限制的直接進入直播,不然我還怎麼裝逼?因此我選擇了最簡單粗暴的方式,就是直接做了一個適配移動端的H5頁面,然後在裡面使用了video標籤,通過微信等方式直接分享給好友。關鍵程式碼如下:

<video src="http://gj0kf15c4z2aep308jr.exp.bcelive.com/lss-XXXXXXXXX/live.m3u8" height="300" width="100%" autoplay="autoplay"></video>

從個人隱私角度來考慮,所以我對上述拉流地址中的關鍵部分採用了XXXXXXXXX來代替,請大家不要在意這些小細節。實際使用的時候換上你自己的地址就好了。

4、裝逼時刻

好了,接下來就是最後一步,你只需要把你剛做的移動端H5頁面上傳到你自己的虛擬空間或者雲主機上,然後用微信掃描連結地址,並分享給你的女朋友(如果你真有的話……),或者你的好基友,就可以開啟裝逼模式了!切記,裝逼莫太過,容易遭雷P……

四、一點感慨

隨著資訊科技的發展與開放,公有云技術的穩步提升,之前的一些技術難點,現在已經不再是困擾我們的瓶頸。從我個人來說,以視訊直播為例,僅管我理解它的原理,也明白它的執行機制和關鍵的技術要點,但如果不是身在“雲”的時代,讓我從無到有搭建一套視訊直播的架構並應用於實際生產,顯示不是一朝一夕的事情。而現在半天的時間,藉助雲服務,我就能快速完成一個裝逼的視訊直播功能。感恩這個時代!這是一個屬於我們技術人員的時代!