Android开发之APP直播简介
隨著網(wǎng)絡(luò)技術(shù)的迅猛發(fā)展,網(wǎng)絡(luò)直播已不再遙不可及。各行各業(yè)以直播為基礎(chǔ)的應(yīng)用場景更是如雨后春筍,遍地開花,相關(guān)數(shù)據(jù)也顯示,無論是國內(nèi)還是國外,市場需求層出不窮,不僅包含視頻門戶、視頻社交、在線教育、娛樂直播,企業(yè)視頻協(xié)作、新聞媒體、金融、監(jiān)控以及醫(yī)療等各行業(yè)均存在巨大的視頻需求。由此,也催生出很多幫助這些行業(yè)實現(xiàn)直播功能的第三方云服務(wù)平臺,接入成本不到開發(fā)者自己開發(fā)的十分之一,相比自主研發(fā),外包直播模塊成為大多數(shù)開發(fā)者的首選。
如圖所示,從2015年下半年開始,各大巨頭紛紛發(fā)力視頻云服務(wù),推出直播功能搶灘市場,市場競爭漸進入焦灼狀態(tài)。但不管選擇接入哪家的直播SDK,開發(fā)者在接入過程中總會遇到各種各樣的問題。下面,小編就APP接入過程中最受開發(fā)者關(guān)心的問題進行一個詳細的梳理。
如何選擇靠譜的直播產(chǎn)品?
直播產(chǎn)品架構(gòu)
首先看口碑。看知乎或開發(fā)者論壇上是否有該服務(wù)商的負面評價,這些評價有些是真實的,但有些可能是競爭對手惡意抹黑,這一點需要辨別清楚。然后是負面評價內(nèi)容是否是自己最為關(guān)心的,比如服務(wù)品質(zhì)差,技術(shù)支持不到位的視頻云服務(wù)平臺,對于小型的開發(fā)實力一般的創(chuàng)業(yè)公司而言,就不太適合,一旦接入,開發(fā)過程中遇到的技術(shù)問題因為得不到及時和有效的響應(yīng),經(jīng)常會讓程序員抓狂。其次看功能。功能是否能滿足需求也是需要關(guān)注的核心問題。最后,要看產(chǎn)品性能。這個可以從視頻云服務(wù)商提供的demo判斷出來,試用之后,性能穩(wěn)不穩(wěn)定通常心里就有數(shù)了。
直播功能有哪些應(yīng)用場景?
如圖所示,直播功能的場景非常多樣化,小編總結(jié)了一下,直播場景細分為以下幾個方面:
1、在線教育行業(yè):網(wǎng)校、慕課、K12、在線家教等
2、在線娛樂行業(yè):美女秀場、游戲直播、演唱會直播KTV直播、婚禮直播、活動直播、體育賽事直播、裝修直播、吃飯直播等
3、社交:明星社交、視頻社交等
4、視頻門戶:視頻直播等
5、企業(yè)協(xié)作:企業(yè)例會直播、產(chǎn)品發(fā)布會直播等
6、在線金融:視頻理財咨詢、在線簽約過程錄制、股評直播、大宗交易平臺直播等
7、安防監(jiān)控:家庭監(jiān)控、幼兒園監(jiān)控、早教中心監(jiān)控、旅游景區(qū)監(jiān)控等
8、遠程醫(yī)療:視頻問診、專家會診等
9、新聞媒體:現(xiàn)場手機直播、短新聞、庭審直播等
直播功能接入流程及有哪些常見問題?
上圖是網(wǎng)易云信直播功能的接入流程,一般來說,開發(fā)者在接入直播功能的時候,接入流程大概如下:
a、注冊視頻云賬號
b、創(chuàng)建直播頻道
c、下載SDK和API文檔
d、開發(fā)直播推流程序
看起來簡單的接入流程,開發(fā)者在實際操作過程中還是會遇到各種各樣的問題。對于這些問題,小編總結(jié)了一下,主要有以下四個方面:
1、工程上的問題。比如接入Android端直播SDK,首先要導(dǎo)入SDK包到eclipse或AndroidStudio工程。將開發(fā)包libs目錄下的so庫文件放置于工程名/libs/armabi或者/lib/armibi-v7a目錄下,同時將LiveStreamingSDK.jar加入工程。
同時需要在AndroidManifest.xml中添加系統(tǒng)權(quán)限。如下
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS">
作用:允許掛載和反掛載文件系統(tǒng)?<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"?/>
作用:允許程序創(chuàng)建顯示在其他程序之上,并且類型為TYPE_SYSTEM_ALERT的窗體?<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">
作用:允許程序向外部存儲設(shè)備寫數(shù)據(jù)?<uses-permission android:name="android.permission.INTERNET"?/>
作用:允許程序打開網(wǎng)絡(luò)套接字?<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"?/>
作用:允許程序獲取網(wǎng)絡(luò)相關(guān)信息?<uses-permission android:name="android.permission.RECORD_AUDIO"/>
作用:允許程序?qū)懸纛l數(shù)據(jù)?<uses-permission android:name="android.permission.WAKE_LOCK"?/>
作用:允許程序使用PowerManager WakeLocks以防止處理器休眠或者屏幕鎖屏?<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"?/>
作用:允許程序獲取Wifi網(wǎng)絡(luò)狀態(tài)信息?<uses-permission android:name="android.permission.CAMERA"?/>
作用:允許程序使用設(shè)備的camera?<uses-permission android:name="android.permission.SET_DEBUG_APP"?/>
作用:配置一個程序用于調(diào)試?<uses-feature android:name="android.hardware.camera "/>
<uses-feature android:name="android.hardware.camera.autofocus"/>
作用:聲明程序使用camera和自動對焦功能?<uses-feature android:glEsVersion="0x00020000" android:required="true"?/>
作用:聲明程序使用OpenGL ES 2.0最后在Java代碼中導(dǎo)入SDK類,在直播Activity中導(dǎo)入如下類: import com.netease.livestreamingFilter.view.*;
import com.netease.LSMediaCapture.*;
import com.netease.LSMediaCapture.lsMediaCapture.*;
網(wǎng)易云信工程師建議:對于Andriod,iOS,Windows平臺的接入的詳細使用說明,可以參考網(wǎng)易云信直播SDK接入文檔。
2、功能性上的問題。開發(fā)者在調(diào)用第三方SDK接口的時候,由于絕大多數(shù)的程序員不會認真去讀對方的API文檔,經(jīng)常跟著感覺或經(jīng)驗去做調(diào)用,調(diào)用過程中經(jīng)常會出現(xiàn)這樣或那樣的問題。
例如,利用SDK開發(fā)一個直播推流應(yīng)用程序,首先需要的設(shè)置相關(guān)的直播參數(shù)集,包括音頻的碼率,聲道,采樣率,位寬,編碼格式,視頻的碼率,幀率,分辨率,編碼格式,以及直播發(fā)送協(xié)議。詳細參數(shù)如下:
//輸出封裝格式
mLSLiveStreamingParaCtx.eOutFormatType.outputFormatType?=?RTMP;//直播封裝格式
//攝像頭參數(shù)配置
mLSLiveStreamingParaCtx.sLSVideoParaCtx.cameraPosition.cameraPosition?=CAMERA_POSITION_BACK;//后置攝像頭
mLSLiveStreamingParaCtx.sLSVideoParaCtx.interfaceOrientation.interfaceOrientation?=CAMERA_ORIENTATION_PORTRAIT;//豎屏
//音頻編碼參數(shù)配置
mLSLiveStreamingParaCtx.sLSAudioParaCtx.samplerate?=?44100;//音頻采樣率
mLSLiveStreamingParaCtx.sLSAudioParaCtx.bitrate?=?64000;//音頻編碼碼率
mLSLiveStreamingParaCtx.sLSAudioParaCtx.frameSize?=?2048;//音頻一幀數(shù)據(jù)量
mLSLiveStreamingParaCtx.sLSAudioParaCtx.audioEncoding?=?AudioFormat.ENCODING_PCM_16BIT;//音頻數(shù)據(jù)位寬
mLSLiveStreamingParaCtx.sLSAudioParaCtx.channelConfig?=?AudioFormat.CHANNEL_IN_MONO;
//音頻采樣聲道數(shù)
mLSLiveStreamingParaCtx.sLSAudioParaCtx.codec.audioCODECType?=?LS_AUDIO_CODEC_AAC;
//音頻編碼格式
//視頻編碼參數(shù)配置
mLSLiveStreamingParaCtx.sLSVideoParaCtx.fps?=?20;//視頻幀率
mLSLiveStreamingParaCtx.sLSVideoParaCtx.bitrate?=?600000;//視頻碼率
mLSLiveStreamingParaCtx.sLSVideoParaCtx.codec.videoCODECType?=?LS_VIDEO_CODEC_AVC;
//視頻編碼格式
mLSLiveStreamingParaCtx.sLSVideoParaCtx.width?=?640;//視頻分辨率(寬)
mLSLiveStreamingParaCtx.sLSVideoParaCtx.height?=?480;//視頻分辨率(高)
網(wǎng)易云信工程師建議:對于SDK提供的具體功能,以及相關(guān)的接口參數(shù)的設(shè)置和調(diào)用規(guī)則,開發(fā)者接入前需要好好閱讀開發(fā)文檔,詳情可以參考網(wǎng)易云信直播API文檔。
3、個性化需求的問題。上述兩類問題都被解決后,開發(fā)者在整體產(chǎn)品體驗上,還會有一些個性化的需求,比如后臺切換、音視頻流的動態(tài)切換、加濾鏡或者混音等。
網(wǎng)易云信工程師建議:這就需要前期了解清楚對方的功能點,是否提供個性化需求的接口。
4、整套系統(tǒng)跑起來之后的穩(wěn)定性問題。有些不穩(wěn)定情況是自身的網(wǎng)絡(luò)環(huán)境不穩(wěn)定引起的,如果對方的直播產(chǎn)品能夠很好的檢測到網(wǎng)絡(luò)抖動,擁有碼流自適應(yīng)的功能,一定程度上就能避免這個問題。另外,也有一些不穩(wěn)定情況是對方產(chǎn)品穩(wěn)定性差引起的。
網(wǎng)易云信工程師建議:這就需要開發(fā)者去關(guān)注下對方的關(guān)鍵性能指標(biāo),比如延遲、卡頓及安全性等。
總結(jié):開發(fā)者在選用市面上云服務(wù)商的直播產(chǎn)品時,功能是否滿足需求和服務(wù)響應(yīng)是否及時應(yīng)該是開發(fā)者最應(yīng)該考量的兩個方面,看似簡單的接入流程,有時候會衍生出各種各樣的問題,對方的技術(shù)支持和運維服務(wù)非常重要。有些資金不充足的開發(fā)者前期會優(yōu)先選用免費的云服務(wù),但這也會出現(xiàn)一定的隱患,一旦產(chǎn)品體驗差,更換云服務(wù)商的代價會更大。一般而言,知名大公司的技術(shù)實力更強,服務(wù)品質(zhì)也站得住腳。
隨著網(wǎng)絡(luò)技術(shù)的迅猛發(fā)展,網(wǎng)絡(luò)直播已不再遙不可及。各行各業(yè)以直播為基礎(chǔ)的應(yīng)用場景更是如雨后春筍,遍地開花,相關(guān)數(shù)據(jù)也顯示,無論是國內(nèi)還是國外,市場需求層出不窮,不僅包含視頻門戶、視頻社交、在線教育、娛樂直播,企業(yè)視頻協(xié)作、新聞媒體、金融、監(jiān)控以及醫(yī)療等各行業(yè)均存在巨大的視頻需求。由此,也催生出很多幫助這些行業(yè)實現(xiàn)直播功能的第三方云服務(wù)平臺,接入成本不到開發(fā)者自己開發(fā)的十分之一,相比自主研發(fā),外包直播模塊成為大多數(shù)開發(fā)者的首選。
如圖所示,從2015年下半年開始,各大巨頭紛紛發(fā)力視頻云服務(wù),推出直播功能搶灘市場,市場競爭漸進入焦灼狀態(tài)。但不管選擇接入哪家的直播SDK,開發(fā)者在接入過程中總會遇到各種各樣的問題。下面,小編就APP接入過程中最受開發(fā)者關(guān)心的問題進行一個詳細的梳理。
如何選擇靠譜的直播產(chǎn)品?
直播產(chǎn)品架構(gòu)
首先看口碑。看知乎或開發(fā)者論壇上是否有該服務(wù)商的負面評價,這些評價有些是真實的,但有些可能是競爭對手惡意抹黑,這一點需要辨別清楚。然后是負面評價內(nèi)容是否是自己最為關(guān)心的,比如服務(wù)品質(zhì)差,技術(shù)支持不到位的視頻云服務(wù)平臺,對于小型的開發(fā)實力一般的創(chuàng)業(yè)公司而言,就不太適合,一旦接入,開發(fā)過程中遇到的技術(shù)問題因為得不到及時和有效的響應(yīng),經(jīng)常會讓程序員抓狂。其次看功能。功能是否能滿足需求也是需要關(guān)注的核心問題。最后,要看產(chǎn)品性能。這個可以從視頻云服務(wù)商提供的demo判斷出來,試用之后,性能穩(wěn)不穩(wěn)定通常心里就有數(shù)了。
直播功能有哪些應(yīng)用場景?
如圖所示,直播功能的場景非常多樣化,小編總結(jié)了一下,直播場景細分為以下幾個方面:
1、在線教育行業(yè):網(wǎng)校、慕課、K12、在線家教等
2、在線娛樂行業(yè):美女秀場、游戲直播、演唱會直播KTV直播、婚禮直播、活動直播、體育賽事直播、裝修直播、吃飯直播等
3、社交:明星社交、視頻社交等
4、視頻門戶:視頻直播等
5、企業(yè)協(xié)作:企業(yè)例會直播、產(chǎn)品發(fā)布會直播等
6、在線金融:視頻理財咨詢、在線簽約過程錄制、股評直播、大宗交易平臺直播等
7、安防監(jiān)控:家庭監(jiān)控、幼兒園監(jiān)控、早教中心監(jiān)控、旅游景區(qū)監(jiān)控等
8、遠程醫(yī)療:視頻問診、專家會診等
9、新聞媒體:現(xiàn)場手機直播、短新聞、庭審直播等
直播功能接入流程及有哪些常見問題?
上圖是網(wǎng)易云信直播功能的接入流程,一般來說,開發(fā)者在接入直播功能的時候,接入流程大概如下:
a、注冊視頻云賬號
b、創(chuàng)建直播頻道
c、下載SDK和API文檔
d、開發(fā)直播推流程序
看起來簡單的接入流程,開發(fā)者在實際操作過程中還是會遇到各種各樣的問題。對于這些問題,小編總結(jié)了一下,主要有以下四個方面:
1、工程上的問題。比如接入Android端直播SDK,首先要導(dǎo)入SDK包到eclipse或AndroidStudio工程。將開發(fā)包libs目錄下的so庫文件放置于工程名/libs/armabi或者/lib/armibi-v7a目錄下,同時將LiveStreamingSDK.jar加入工程。
同時需要在AndroidManifest.xml中添加系統(tǒng)權(quán)限。如下
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS">
作用:允許掛載和反掛載文件系統(tǒng)?<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"?/>
作用:允許程序創(chuàng)建顯示在其他程序之上,并且類型為TYPE_SYSTEM_ALERT的窗體?<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">
作用:允許程序向外部存儲設(shè)備寫數(shù)據(jù)?<uses-permission android:name="android.permission.INTERNET"?/>
作用:允許程序打開網(wǎng)絡(luò)套接字?<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"?/>
作用:允許程序獲取網(wǎng)絡(luò)相關(guān)信息?<uses-permission android:name="android.permission.RECORD_AUDIO"/>
作用:允許程序?qū)懸纛l數(shù)據(jù)?<uses-permission android:name="android.permission.WAKE_LOCK"?/>
作用:允許程序使用PowerManager WakeLocks以防止處理器休眠或者屏幕鎖屏?<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"?/>
作用:允許程序獲取Wifi網(wǎng)絡(luò)狀態(tài)信息?<uses-permission android:name="android.permission.CAMERA"?/>
作用:允許程序使用設(shè)備的camera?<uses-permission android:name="android.permission.SET_DEBUG_APP"?/>
作用:配置一個程序用于調(diào)試?<uses-feature android:name="android.hardware.camera "/>
<uses-feature android:name="android.hardware.camera.autofocus"/>
作用:聲明程序使用camera和自動對焦功能?<uses-feature android:glEsVersion="0x00020000" android:required="true"?/>
作用:聲明程序使用OpenGL ES 2.0最后在Java代碼中導(dǎo)入SDK類,在直播Activity中導(dǎo)入如下類: import com.netease.livestreamingFilter.view.*;
import com.netease.LSMediaCapture.*;
import com.netease.LSMediaCapture.lsMediaCapture.*;
網(wǎng)易云信工程師建議:對于Andriod,iOS,Windows平臺的接入的詳細使用說明,可以參考網(wǎng)易云信直播SDK接入文檔。
2、功能性上的問題。開發(fā)者在調(diào)用第三方SDK接口的時候,由于絕大多數(shù)的程序員不會認真去讀對方的API文檔,經(jīng)常跟著感覺或經(jīng)驗去做調(diào)用,調(diào)用過程中經(jīng)常會出現(xiàn)這樣或那樣的問題。
例如,利用SDK開發(fā)一個直播推流應(yīng)用程序,首先需要的設(shè)置相關(guān)的直播參數(shù)集,包括音頻的碼率,聲道,采樣率,位寬,編碼格式,視頻的碼率,幀率,分辨率,編碼格式,以及直播發(fā)送協(xié)議。詳細參數(shù)如下:
//輸出封裝格式
mLSLiveStreamingParaCtx.eOutFormatType.outputFormatType?=?RTMP;//直播封裝格式
//攝像頭參數(shù)配置
mLSLiveStreamingParaCtx.sLSVideoParaCtx.cameraPosition.cameraPosition?=CAMERA_POSITION_BACK;//后置攝像頭
mLSLiveStreamingParaCtx.sLSVideoParaCtx.interfaceOrientation.interfaceOrientation?=CAMERA_ORIENTATION_PORTRAIT;//豎屏
//音頻編碼參數(shù)配置
mLSLiveStreamingParaCtx.sLSAudioParaCtx.samplerate?=?44100;//音頻采樣率
mLSLiveStreamingParaCtx.sLSAudioParaCtx.bitrate?=?64000;//音頻編碼碼率
mLSLiveStreamingParaCtx.sLSAudioParaCtx.frameSize?=?2048;//音頻一幀數(shù)據(jù)量
mLSLiveStreamingParaCtx.sLSAudioParaCtx.audioEncoding?=?AudioFormat.ENCODING_PCM_16BIT;//音頻數(shù)據(jù)位寬
mLSLiveStreamingParaCtx.sLSAudioParaCtx.channelConfig?=?AudioFormat.CHANNEL_IN_MONO;
//音頻采樣聲道數(shù)
mLSLiveStreamingParaCtx.sLSAudioParaCtx.codec.audioCODECType?=?LS_AUDIO_CODEC_AAC;
//音頻編碼格式
//視頻編碼參數(shù)配置
mLSLiveStreamingParaCtx.sLSVideoParaCtx.fps?=?20;//視頻幀率
mLSLiveStreamingParaCtx.sLSVideoParaCtx.bitrate?=?600000;//視頻碼率
mLSLiveStreamingParaCtx.sLSVideoParaCtx.codec.videoCODECType?=?LS_VIDEO_CODEC_AVC;
//視頻編碼格式
mLSLiveStreamingParaCtx.sLSVideoParaCtx.width?=?640;//視頻分辨率(寬)
mLSLiveStreamingParaCtx.sLSVideoParaCtx.height?=?480;//視頻分辨率(高)
網(wǎng)易云信工程師建議:對于SDK提供的具體功能,以及相關(guān)的接口參數(shù)的設(shè)置和調(diào)用規(guī)則,開發(fā)者接入前需要好好閱讀開發(fā)文檔,詳情可以參考網(wǎng)易云信直播API文檔。
3、個性化需求的問題。上述兩類問題都被解決后,開發(fā)者在整體產(chǎn)品體驗上,還會有一些個性化的需求,比如后臺切換、音視頻流的動態(tài)切換、加濾鏡或者混音等。
網(wǎng)易云信工程師建議:這就需要前期了解清楚對方的功能點,是否提供個性化需求的接口。
4、整套系統(tǒng)跑起來之后的穩(wěn)定性問題。有些不穩(wěn)定情況是自身的網(wǎng)絡(luò)環(huán)境不穩(wěn)定引起的,如果對方的直播產(chǎn)品能夠很好的檢測到網(wǎng)絡(luò)抖動,擁有碼流自適應(yīng)的功能,一定程度上就能避免這個問題。另外,也有一些不穩(wěn)定情況是對方產(chǎn)品穩(wěn)定性差引起的。
網(wǎng)易云信工程師建議:這就需要開發(fā)者去關(guān)注下對方的關(guān)鍵性能指標(biāo),比如延遲、卡頓及安全性等。
總結(jié):開發(fā)者在選用市面上云服務(wù)商的直播產(chǎn)品時,功能是否滿足需求和服務(wù)響應(yīng)是否及時應(yīng)該是開發(fā)者最應(yīng)該考量的兩個方面,看似簡單的接入流程,有時候會衍生出各種各樣的問題,對方的技術(shù)支持和運維服務(wù)非常重要。有些資金不充足的開發(fā)者前期會優(yōu)先選用免費的云服務(wù),但這也會出現(xiàn)一定的隱患,一旦產(chǎn)品體驗差,更換云服務(wù)商的代價會更大。一般而言,知名大公司的技術(shù)實力更強,服務(wù)品質(zhì)也站得住腳。
總結(jié)
以上是生活随笔為你收集整理的Android开发之APP直播简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html focus 唤醒手机键盘,移动
- 下一篇: OTB50、OTB2013、OTB100