歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

Android系統(tǒng) 自助式網(wǎng)絡(luò)直播SDK技術(shù)實現(xiàn)方案

  • 資源ID:70824538       資源大?。?span id="rl0y1ig" class="font-tahoma">90KB        全文頁數(shù):10頁
  • 資源格式: DOC        下載積分:15積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要15積分
郵箱/手機:
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機號,方便查詢和重復(fù)下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認打開,此種情況可以點擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標題沒有明確說明有答案則都視為沒有答案,請知曉。

Android系統(tǒng) 自助式網(wǎng)絡(luò)直播SDK技術(shù)實現(xiàn)方案

.Android系統(tǒng)“自助式網(wǎng)絡(luò)直播SDK技術(shù)實現(xiàn)方案目錄一、簡介3三、權(quán)限開通申請3四、SDK使用準備31、下載SDK&DEMO32、開發(fā)環(huán)境要求33、需要導(dǎo)入的Jar34、動態(tài)庫SO35、權(quán)限及配置36、代碼混淆3五、快速接入介紹31、權(quán)限認證信息配置32、發(fā)起直播流程33、觀看直播流程34、根底功能說明35、響應(yīng)事件回調(diào)36、發(fā)起直播詳解37、RTMP觀看直播詳解38、HLS觀看直播及HLS觀看回放39、支持文檔演示3六、DEMO簡介3七、第三方K值認證31、認證流程32、開啟設(shè)置33、K值使用3一、 簡介本文檔為了指導(dǎo)開發(fā)者更快使用Android系統(tǒng)上的“自助式網(wǎng)絡(luò)直播效勞SDK,默認讀者已經(jīng)熟悉IDE的根本使用方法本文以Eclipse為例,以及具有一定的編程知識根底等。支持的產(chǎn)品特性如下:分類特性名稱描述發(fā)起直播支持編碼類型音頻編碼:AAC,視頻編碼:H.264支持推流協(xié)議RTMP視頻分辨率640*480屏幕朝向橫屏、豎屏閃光燈開/關(guān)靜音開/關(guān)切換攝像頭前、后置攝像頭目標碼率使用軟編,碼率固定在300-400之間,暫不可修改支持環(huán)境Android 4.0以上,觀看直播支持播放協(xié)議RTMP/HLS延時RTMP: 2-4秒,HLS:20秒左右支持解碼H.264文檔演示new支持文檔演示文檔可與視頻同步演示觀看回放支持協(xié)議HLS權(quán)限第三方K值認證支持客戶自己的權(quán)限驗證機制來控制觀看直播、觀看回放的權(quán)限其它代碼平安支持代碼混淆二、 權(quán)限開通申請請點擊 API&SDK權(quán)限申請立即溝通申請,申請后客戶經(jīng)理會在線上與您直接聯(lián)系。審核通過后,可以獲取開發(fā)應(yīng)用的權(quán)限信息:App_Key、Secret_Key、App Secret_Key。三、 SDK使用準備1、 下載SDK&DEMO2、 開發(fā)環(huán)境要求Pc操作系統(tǒng):64window系統(tǒng)JDK: 1.6以上Eclipse : 建議使用官方已經(jīng)集成的Eclipse ,慎重使用Android studioAndroid: 4.0以上備注: Android設(shè)備操作系統(tǒng)需要4.0以上, 需要訪問手機硬件,暫不支持模擬器開發(fā)3、 需要導(dǎo)入的JarVhallsdk.jar4、 動態(tài)庫SOLibdynload.soLibffmpeg.soLibjingle.solibstlport_shared.solibVinnyLive.so5、 權(quán)限及配置<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.WRITE_E*TERNAL_STORAGE" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.RECORD_VIDEO" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.FLASHLIGHT" /> <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" /> <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera.autofocus" />備注:主要是訪問網(wǎng)絡(luò).Wife.還有手機硬件的Camera6、 代碼混淆假設(shè)app打包需要進展代碼混淆,請?zhí)砑樱?dontwarn - .vhall.*-dontwarn - .vinny.*-keep class .vhall.*;-keep class .vinny.*;四、 快速接入介紹1、 權(quán)限認證信息配置以下信息配置到文件里。文件名稱:srce*amplertmpdemoConstants.javapublic class Constants public static final String APP_KEY = ""public static final String APP_SECRET_KEY = ""其中:App_Key、App_Secret_Key:從此頁面獲取到,2、 發(fā)起直播流程第一步預(yù)覽采集Camera:在Activity的onCreate方法中,創(chuàng)立CameraNewView,并且初始化第二步發(fā)起直播:設(shè)置開場按鈕,在可點擊情況下調(diào)用NativeLive.StartPublish(String Url)。第三步建立Socket發(fā)起直播成功后,連接Socket建立參會 new ZReqEngine().new Attend第四步停頓直播:設(shè)置停頓按鈕,在可點擊情況下調(diào)用NativeLive.StopPublish()3、 觀看直播流程第一步創(chuàng)立觀看View在Activity的onCreate方法中,創(chuàng)立PlayView,并且初始化第二步開場觀看NativeLive.StartRecv(String watchUrl)第三步停頓觀看NativeLive.StopRecv()4、 根底功能說明備注:以下功能根據(jù)各自需求自行選取使用,設(shè)置后即可顯示Step 1 : 初始化播放器PlayView playview = new PlayView(GLSurfaceView) playview.init(with,height) playview.updataScreen(byte Y ,byte U ,byte V )playview.updataScreenAll(byte YUV)Step 2 : 初始化音頻AudioPlay audio = new AudioPlay()Audio.init(int sampleRate, int channelConfig, int audioFormat)Audio.play(byte data, int size)Audio.destory()Step 3 : 使用自定義CameraNewView 自定義view已經(jīng)對手機攝像頭Camera做好了處理,實時采集每一幀數(shù)據(jù),包括攝像頭的切換,閃光的開啟,用戶可以自行調(diào)用。mCameraView=(CameraNewView) this.findViewById(R.id.cameraview);5、 響應(yīng)事件回調(diào)直播觀看過程中的回調(diào) LiveCallback :在你當前開啟直播的頁面,初始化直播回調(diào):LiveCallback livecallback = new LiveCallback ;實現(xiàn)其中的回調(diào)方法:public void notifyVideoData(byte data) public int notifyAudioData(byte data, int size) public void notifyEvent(int resultCode, String content)public void onH264Video(byte data, int size, int type)在當前Activity onCreate方法中參加回調(diào)LiveObs.setCallBack(livecallback);其中notifyEventresultCode ,content返回的resultCode 是底層定義的直播狀態(tài),需要用戶對其自行處理。狀態(tài)定義如下:public static final int OK_PublishConnect = 0; /直播連接效勞器成功public static final int ERROR_PublishConnect = 1;/直播連接效勞器失敗public static final int OK_WatchConnect = 2; /觀看直播連接效勞器成功public static final int ERROR_WatchConnect = 3; /觀看直播連接效勞器失敗public static final int StartBuffering = 4;/開場緩沖public static final int StopBuffering= 5;/停頓緩沖public static final int ERROR_Param = 6;/錯誤參數(shù)public static final int ERROR_NeedReconnect= 7;/錯誤需要重新連接public static final int ERROR_Send = 8;/發(fā)送直播流失敗public static final int INFO_Speed_Upload= 9;/上傳速度 Kbps單位public static final int INFO_Speed_Download= 10;/下載速度Kbps單位public static final int INFO_NetWork_Status= 11;/網(wǎng)絡(luò)狀態(tài)public static final int INFO_Decoded_Video = 12;/視頻解碼public static final int INFO_Decoded_Audio = 13;/音頻解碼public static final int INFO_Record_Audio = 20;/錄音6、 發(fā)起直播詳解用戶使用VhallSDK發(fā)起直播需要首先了解幾個重要的類LiveParam 直播中所需的重要參數(shù)這些參數(shù)會被傳入底層,錯誤的參數(shù)會讓Activity報錯,目前默認使用分辨率 640*480 更高的分辨率暫不支持ConnectionChangeReceiver 用來檢測網(wǎng)絡(luò)變化定義的一些常量public static final int NET_ERROR = 0;public static final int NET_UNKNOWN = 1;public static final int NET_2G3G = 2;public static final int NET_WIFI = 3;第一步初始化直播信息創(chuàng)立Activity ,初始化自定義view CameraNewView , 此時的CameraNewView被創(chuàng)立,開啟PreviewCallback 回調(diào),實現(xiàn)onPreviewFram(),獲取Camera采集的每一幀的數(shù)據(jù),將此數(shù)據(jù)傳遞底層處理mCameraView = (CameraNewView) this.findViewById(R.id.cameraview);mCameraView.init(param, this, new RelativeLayout.LayoutParams(0, 0);mCameraView.startPublish() / 此方法須直播回調(diào)中返回OK_PublishConnect才能調(diào)用此處代碼必須添加NativeLive.CreateVinnyLive(); / 創(chuàng)立VinnyLive對象LiveObs.setCallback(mLiveCallBack); / 設(shè)置直播回調(diào)NativeLive.EnableDebug(true); / 是否翻開Debug模式會打印日志NativeLive.AddObs(); /添加直播的監(jiān)聽第二步創(chuàng)立button ,開啟直播。這時調(diào)用底層方法,連接推流地址,需要傳遞一個參數(shù) Path , Path為流的地址。判斷這個方法,如果返回的是0 ,則連接成功,返回非0,則連接失敗NativeLive.StartPublishpath / 連接推流地址第三步處理直播時的回調(diào)當直播成功之后,處理直播時時返回的信息,詳細方法可以參考直播過程的回調(diào) LiveCallback , 處理方案根據(jù)各自需求自行處理。第四步停頓直播CameraView.stopPublish();NativeLive.StopPublish()7、 RTMP觀看直播詳解第一步初始化PlayView AudioPlay playView 初始化時需要傳入GLSurfaceView , 使用它需要用戶自定義一個渲染器render不過這里在初始化時已經(jīng)定義好,用戶可以直接使用mPlayView = new PlayView(glSurfaceview);mPlayView.init(width , height) / 傳入初始化的寬高;此處代碼必須添加NativeLive.CreateVinnyLive(); / 創(chuàng)立VinnyLive對象LiveObs.setCallback(mLiveCallBack); / 設(shè)置直播回調(diào)NativeLive.EnableDebug(true); / 是否翻開Debug模式會打印日志NativeLive.AddObs(); /添加直播的監(jiān)聽獲取用戶的活動ID此ID需要在PC上取得,請求ZReqEngine.watch(id , APP_KEY , APP_SECRET_KEY , name , email , password , new ReqCallback()param id / 活動ID必傳param APP_KEY/ app_keyparam APP_SECRET_KEY/ app_secret_keyparam name/ 必傳param email / 必傳且保證唯一性param password / 活動如果有K值需要傳callback ReqCallback/ 傳入回調(diào)獲取返回的參數(shù)請求成功之后,會在ReqCallback OnSuccess()返回Json參數(shù)。result rtmp_video/ rtmp觀看直播地址result video/ hls 觀看直播回放地址result status/ 當前播放狀態(tài)result msg_server/ 建立參會result msg_token/ 建立參會請求失敗之后,會在ReqCallback OnFail()返回信息,直接打印即可建立參會,參會建立成功,可以統(tǒng)計參會人數(shù)。ZReqEngine.Attend attend = new ZReqEngine().new Attend(msg_server, msg_token);第二步創(chuàng)立button 開場觀看將之前獲取的觀看地址傳入當前方法Natiive.StarRecv(path) / 連接承受地址 0則連接成功,非0則連接失敗第三步處理直播時的回調(diào)這時會用到LiveCallback 中的方法public void notifyVideoData(byte data) /得到正在直播的視頻數(shù)據(jù)這時調(diào)用UpdateScreenAll() , 將取得的視頻信息傳給PlayViewmPlayView.UpdateScreenAll(data)public int notifyAudioData(byte data, int size) /得到正在直播的音頻數(shù)據(jù)這時調(diào)用play() , 將取得的視頻信息傳給AudioPlay備注 : notifyEvent() 依然需要調(diào)用第四步停頓觀看NativeLive.StopRecv() stopAudioPlayattend.disAttend(); / 關(guān)閉參會8、 HLS觀看直播及HLS觀看回放初始化 VhallHlsPlayer ,實現(xiàn)VhallHLSPlayer.Listener需要用戶設(shè)置SurfaceViewString userAgent = Util.getUserAgent(this, "VhallAPP");mMediaPlayer = new VhallHlsPlayer(new HlsRendererBuilder(this, userAgent, path); / 這里需要傳入地址mMediaPlayer.addListener(mVhallPlayerListener);mMediaPlayer.setSurface(Surface); / 設(shè)置SurfaceView mMediaPlayer.setPlayWhenReadytrue / 為true的時候開場播放實現(xiàn)VhallHLSPlayer.Listener 所需實現(xiàn)的方法如下 public void onStateChanged(boolean playWhenReady, int playbackState) / 當播放狀態(tài)發(fā)生改變的時候public void onError(E*ception e) / 播放錯誤的時候public void onVideoSizeChanged(int width, int height, int unappliedRotationDegrees,float pi*elWidthHeightRatio) / Video尺寸發(fā)生改變的時候獲取播放地址之前需要先獲取用戶的活動ID通過效勞器接口獲取請求ZReqEngine.watch(id , APP_KEY , APP_SECRET_KEY , name , email , password , new ReqCallback()param id / 活動ID必傳param APP_KEY/ app_keyparam APP_SECRET_KEY/ app_secret_keyparam name/ 必傳,參會人員,用于統(tǒng)計param email / 必傳且保證唯一性,參會人員,用于統(tǒng)計,并做為用戶的唯一標識param password / 可選,活動如果有K值需要傳callback ReqCallback/ 傳入回調(diào)獲取返回的參數(shù)請求成功之后,會在ReqCallback OnSuccess()返回Json參數(shù)result rtmp_video/ rtmp觀看直播地址result video / hls 觀看直播回放地址result status/ 當前播放狀態(tài)result msg_server/ 建立參會result msg_token / 建立參會請求失敗之后,會在ReqCallback OnFail()返回信息,直接打印即可建立Socket連接參會,建立成功后,可以統(tǒng)計參會人數(shù)。ZReqEngine.Attend attend = new ZReqEngine().new Attend(msg_server, msg_token);9、 支持文檔演示當直播活動類型為“視頻+文檔或“音頻+文檔時,通過以下方法可集成觀看,文檔會與視頻或音頻播放同步。public class ClassName implements ZReqEngine.FlashMsgListener /觀看直播頁面實現(xiàn)此接口用于處理文檔翻頁消息ZReqEngine.Attend attend;/ 參會用于統(tǒng)計參與人數(shù)接收文檔聊天等即時消息attend = new ZReqEngine().new Attend(msg_server, msg_token);attend.setFlashMsgListener(this);/設(shè)置文檔翻頁消息接口attend.attend();/參會參會后可承受文檔翻頁消息Overridepublic void onFlash(String flashMsg) /當直播文檔翻頁時,通過此回調(diào)處理消息,flashMsg為json數(shù)據(jù) /具體處理請看demoattend.disAttend(); /退出觀看時取消參會五、 DEMO簡介1、 DEMO簡介DEMO只針對核心功能進展演示,不包括UI界面設(shè)計。2、 主要測試參數(shù)說明:1活動ID:指的是客戶創(chuàng)立的一個直播活動的唯一標識,Demo測試時可從e.vhall.的控制臺頁面上獲取到2)Token:Demo測試時可從頁面調(diào)用接口獲取到,有效期為24小時3碼率設(shè)置:主要用于視頻編碼設(shè)置,碼率與視頻的質(zhì)量成正比,默認值300,單位Kbps4緩沖時間:延時觀看時間5分辨率:640*4806K值:默認為空,指的是控制直播觀看權(quán)限的參數(shù),具體使用說明參考3、 客戶Server端需提供應(yīng)APP的信息客戶Server端需要提供如下信息:1Id:通過客戶Server端接口獲取到,此接口需調(diào)用VHALL接口獲取。2)AccessToken:通過客戶Server端接口獲取到,此接口需調(diào)用VHALL接口獲取。六、 第三方K值認證觀看直播、觀看回放的權(quán)限控制,支持使用客戶的權(quán)限驗證邏輯。1、 認證流程2、 開啟設(shè)置1全局設(shè)置:針對所有的活動配置生效,如果針對單個活動再做配置,以單個活動配置為最終配置。通過接口調(diào)用設(shè)置 webinar/whole-auth-url 全局配置第三方K值驗證URL2) 針對*個活動的配置方式一:通過頁面配置,數(shù)字表示自己下的活動id3針對*個活動的配置方式二:通過接口(webinar/create或webinar/update)設(shè)置3、 K值使用1) 網(wǎng)頁嵌入或SDK里的調(diào)用方法,請務(wù)必帶上k參數(shù),如果這個參數(shù)為空或者沒有這個參數(shù),則視為認證失敗l 網(wǎng)頁嵌入地址類似:l SDK里的調(diào)用方法,需要傳遞3個參數(shù)name,email,passemail:可選參數(shù),如果不填寫系統(tǒng)會隨機生成地址。由于email自身的唯一性,我們推薦使用email來作為唯一標識有效用戶的字段。對于第三方自有用戶數(shù)據(jù)的系統(tǒng),也可以使用一些特征ID作為此標識,請以email的格式組織,比方在第三方系統(tǒng)中,用戶ID為123456,可在其后添加一個domain.,組成123456domain.形式的email地址。name: 可選參數(shù),如果不填寫系統(tǒng)會隨機生成。此字段表示用戶昵稱、或其他有意義的字符串??梢詾橹形模仨殲閁TF-8,且經(jīng)過URL編碼(urlencode)。k:可選參數(shù),此字段為了提供應(yīng)第三方可以根據(jù)自己的權(quán)限系統(tǒng),驗證客戶是否可訪問直播地址。ZReqEngine.watch(id , APP_KEY , APP_SECRET_KEY , name , email , password , new ReqCallback()param id / 活動ID必傳param APP_KEY/ app_keyparam APP_SECRET_KEY/ app_secret_keyparam name/ 必傳param email / 必傳且保證唯一性param password / 活動如果有K值需要傳callback ReqCallback/ 傳入回調(diào)獲取返回的參數(shù)觀看直播 (僅HLS可用)ZReqEngine.watch(id , APP_KEY , APP_SECRET_KEY , name , email , password , new ReqCallback()param id / 活動ID必傳param APP_KEY / app_keyparam APP_SECRET_KEY / app_secret_keyparam name / 必傳,參會人員,用于統(tǒng)計param email / 必傳且保證唯一性,參會人員,用于統(tǒng)計,并做為用戶的唯一標識param password / 可選,活動如果有K值需要傳callback ReqCallback/ 傳入回調(diào)獲取返回的參數(shù)2 Vhall系統(tǒng)收到用戶的接口訪問請求后,會向第三方認證URL(auth_url)發(fā)送HTTP POST請求,同時將email和k值作為POST數(shù)據(jù)提交給第三方認證。由第三方系統(tǒng)驗證k值的合法性。如果認證通過,第三方認證URL(auth_url)返回字符串pass,否則的返回fail注:需要確保您的回調(diào)地址支持 multipart/form-data 方式接收 post 數(shù)據(jù)。3 Vhall 系統(tǒng)根據(jù)第三方認證URL返回值判斷認證是否成功。只有收到pass,才能認定為驗證成功,否則一律跳轉(zhuǎn)到指定的認證失敗 URL,或者提示'非法訪問'4參數(shù)特征URL請求很容易被探測截獲,這就要求第三方系統(tǒng)生成的K值必須有以下特征:l 唯一性:每次調(diào)用接口必須產(chǎn)生不同的K值l 時效性:設(shè)定一個時間圍,超時的K值即失效。l 如果包含有第三方系統(tǒng)部信息,必須加密和混淆過。5建議的K值實現(xiàn)第三方系統(tǒng)可以考慮K值元素包括:用戶ID、Vhall直播ID、時間戳1970-01-01至今的秒數(shù)元素組合后加密后,使用Base64或者he* 匹配成URL可識別編碼。K值在第三方系統(tǒng)中持久化或放在Cache中回調(diào)驗證時,根據(jù)時間戳判斷是否在設(shè)定時間有效驗證完畢,假設(shè)認證通過,則從DB或Cache中移除K值DB或Cache建議有時效性控制,自動失效或定期清理過期數(shù)據(jù). >

注意事項

本文(Android系統(tǒng) 自助式網(wǎng)絡(luò)直播SDK技術(shù)實現(xiàn)方案)為本站會員(ph****6)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!