摘要:推薦閱讀封裝之路學(xué)習(xí)資源分享合集去年在項目中用到了螢石云視頻,它的項目源碼很多,找到有用的代碼很費時間,所以今天寫成文章把集成步驟,預(yù)覽功能,雙擊放大,手勢放大功能以及注意事項等分享給大家。
推薦閱讀:
SurfaceView+MediaPlayer封裝之路
Android學(xué)習(xí)資源分享合集(1)
去年在項目中用到了螢石云視頻,它的項目源碼很多,找到有用的代碼很費時間,所以今天寫成文章把集成步驟,預(yù)覽功能,雙擊放大,手勢放大功能以及注意事項等分享給大家。
效果圖如下:
螢石開發(fā)平臺地址:
https://open.ys7.com/
點擊"文檔"進入螢石云開發(fā)平臺開發(fā)文檔使用。
集成步驟:1. 創(chuàng)建應(yīng)用
首先,你需要在螢石開放平臺官網(wǎng)的 “ 開發(fā)者服務(wù)-我的應(yīng)用-應(yīng)用秘鑰 ” 查看Appkey。
2.安裝 SDK
dependencies { compile "com.hikvision.ezviz:ezviz-sdk:4.5.1" }
3. 配置 Android 權(quán)限
4. 配置 build.gradle
defaultConfig { ... targetSdkVersion 22//小于23 ... ndk { abiFilters "armeabi-v7a"http://只支持32位 } } sourceSets { main { jniLibs.srcDirs = ["libs"] } }
注意:
(1).目前提供所有so均為32位,只能在armeabi-v7a引用,所以需要添加
ndk { abiFilters "armeabi-v7a"http://只支持32位 }
(2).targetSdkVersion設(shè)置為23及以上,在android6.0系統(tǒng)的手機上會出現(xiàn)沒有權(quán)限崩潰的情況,因為android6.0牽扯到Dangerous Permissions問題,如果需要使用高版本,需要自己處理Dangerous Permissions。
5. 配置 AndroidManifest.xml
6.代碼初始化
要在Application中初始化
/** * APP_KEY請?zhí)鎿Q成自己申請的 */ EZOpenSDK.initLib(this, APP_KEY, "");
代碼混淆直接去看開發(fā)文檔,這里就省略了。
7.重要名詞解釋:
1.初始化SDK-initLib,也就是在Application。
EZOpenSDK.initLib(this, APP_KEY,"");
2.獲取AccessToken.
EZOpenSDK.getInstance().setAccessToken("您要填的Token值");
3.您購買的攝像機設(shè)備添加在螢石云APP上。(直接在下載APP通過序列號添加)
如果您開發(fā)中還要獲取設(shè)計列表等等的功能請直接查看螢石云開發(fā)平臺文檔。
播放視頻流程及實現(xiàn)代碼:播放流程:
1.初始化EZPlayer調(diào)用EZOpenSDK的createPlayer,詳見api;
2.預(yù)覽播放成功后可以進行以下操作:錄像、拍照、畫面翻轉(zhuǎn)、對講、云臺控制、聲音開關(guān)、視頻畫面縮放、拖動進度播放,詳見api的EZPlayer,其中設(shè)備控制該接口的如云臺控制和鏡頭顯示功能、對講,屬于限制級接口,要優(yōu)選通過判斷設(shè)備的能力集來調(diào)用,設(shè)備能力集請查看EZDeviceInfo對象的屬性值來判斷具體方法;
3.關(guān)于對講功能,如果預(yù)覽播放有聲音輸出,則在開啟對講前需要關(guān)閉預(yù)覽播放的聲音closeSound,關(guān)閉對講后開啟預(yù)覽播放的聲音openSound,詳見demo;
4.EZOpenSDK中的setVideoLevel設(shè)置視頻清晰度(videoLevel),此調(diào)節(jié)可以在視頻播放前設(shè)置也可以在視頻播放成功后設(shè)置,視頻播放成功后設(shè)置了清晰度需要先停止播放stopRealPlay然后重新開啟播放startRealPlay才能生效;
5.開始播放之后在消息回調(diào)中會收到a、成功消息:EZRealPlayConstants.MSG_REALPLAY_PLAY_SUCCESS,b、失敗消息:EZRealPlayConstants.MSG_REALPLAY_PLAY_FAIL,失敗回調(diào)時查看errorCode,如果為400035(需要輸入驗證碼)和400036(驗證碼錯誤),則需要開發(fā)者自己處理讓用戶重新輸入驗證密碼,并調(diào)用setPlayVerifyCode設(shè)置密碼,然后重新啟動播放。
實現(xiàn)代碼:
布局主要控件是SurfaceView,SurfaceView的用法大家應(yīng)該都知道吧,主要實現(xiàn)了implements SurfaceHolder.Callback接口,聲明SurfaceView 對象,并實方法,代碼如下:
private SurfaceView mRealPlaySv = null; private SurfaceHolder mRealPlaySh = null;
mRealPlaySh = mRealPlaySv.getHolder(); mRealPlaySh.addCallback(VideoActivity.this);
@Override public void surfaceCreated(SurfaceHolder holder) { if (mEZPlayer != null) { mEZPlayer.setSurfaceHold(holder); } else { } mRealPlaySh = holder; } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { } @Override public void surfaceDestroyed(SurfaceHolder holder) { if (mEZPlayer != null) { mEZPlayer.setSurfaceHold(null); } mRealPlaySh = null; }
1.初始化EZPlayer,綁定設(shè)備,開始播放。
mEZPlayer = YourApplication.getOpenSDK().createPlayer(deviceSerial, cameraNo);//綁定設(shè)備 mEZPlayer.setHandler(mHandler); mEZPlayer.setSurfaceHold(mRealPlaySh); mEZPlayer.startRealPlay();//開始播放
2.播放回調(diào)
/* 視頻的回調(diào) */ @Override public boolean handleMessage(Message msg) { // Log.e("回調(diào)","true+zong"+msg); switch (msg.what) { //播放成功的回調(diào) case EZConstants.EZRealPlayConstants.MSG_REALPLAY_PLAY_SUCCESS: break; } return false; }視頻放大,手勢放大功能
在播放成功的回調(diào)里加上 setRealPlaySvLayout();方法,方法的代碼如下:
private void setRealPlaySvLayout() throws InnerException, PlaySDKException { DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); int whdth = dm.widthPixels; int height = dm.heightPixels; mRealPlayTouchListener.setSacaleRect(Constant.MAX_SCALE, 0, 0, whdth, height); setPlayScaleUI(1, null, null); }
private void setPlayScaleUI(float scale, CustomRect oRect, CustomRect curRect) { if (scale == 1) { try { if (mEZPlayer != null) { mEZPlayer.setDisplayRegion(false, null, null); } } catch (BaseException e) { // TODO Auto-generated catch block e.printStackTrace(); } } else { if (mPlayScale == scale) { try { if (mEZPlayer != null) { mEZPlayer.setDisplayRegion(true, oRect, curRect); } } catch (BaseException e) { // TODO Auto-generated catch block e.printStackTrace(); } return; } try { if (mEZPlayer != null) { mEZPlayer.setDisplayRegion(true, oRect, curRect); } } catch (BaseException e) { // TODO Auto-generated catch block e.printStackTrace(); } } mPlayScale = scale; }強調(diào):
1.必須在onDestory()方法上注銷,否則會報錯,代碼如下:
@Override protected void onDestroy() { super.onDestroy(); if (mEZPlayer != null) { mEZPlayer.release(); } }
2.暫停播放的方法
mEZPlayer.stopRealPlay();
如果有什么不清楚的可以加我公眾號或者加微信,希望對大家有所幫助。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/67626.html
摘要:前言我之前寫過一篇螢石云的集成文章,很多人問我有沒有,今天我再次總結(jié)一下,并加個些功能。 前言 我之前寫過一篇螢石云的集成文章,很多人問我有沒有demo, 今天我再次總結(jié)一下, 并加個些功能。 集成步驟 視頻預(yù)覽播放 視頻放大縮小 視頻的質(zhì)量切換 截圖 視頻加載細節(jié) 之前的文章大家可以看下面的鏈接:https://mp.weixin.qq.com/s/V4... 先看效果圖:sho...
摘要:首先先祝大家國慶節(jié)快樂今天距離為我運營公眾號已經(jīng)一個月了,今天把文章整合一下,希望對大家有幫助,也謝謝朋友的支持,我會繼續(xù)堅持原創(chuàng),寫更好的文章給大家一視頻獲取學(xué)習(xí)資源分享合集二功能篇實現(xiàn)金額的語音播報功能基于模式風(fēng)格的封裝之路炫酷動畫跳 showImg(https://segmentfault.com/img/remote/1460000011437678?w=900&h=500);...
摘要:首先先祝大家國慶節(jié)快樂今天距離為我運營公眾號已經(jīng)一個月了,今天把文章整合一下,希望對大家有幫助,也謝謝朋友的支持,我會繼續(xù)堅持原創(chuàng),寫更好的文章給大家一視頻獲取學(xué)習(xí)資源分享合集二功能篇實現(xiàn)金額的語音播報功能基于模式風(fēng)格的封裝之路炫酷動畫跳 showImg(https://segmentfault.com/img/remote/1460000011437678?w=900&h=500);...
閱讀 748·2021-11-23 09:51
閱讀 2452·2021-10-11 11:10
閱讀 1322·2021-09-23 11:21
閱讀 1103·2021-09-10 10:50
閱讀 899·2019-08-30 15:54
閱讀 3340·2019-08-30 15:53
閱讀 3303·2019-08-30 15:53
閱讀 3200·2019-08-29 17:23