翰旨迹康威視攝像機(jī)Java SDK拉流(二)開(kāi)啟關(guān)閉實(shí)時(shí)預(yù)覽

本篇介紹浩菪幔康威視攝像機(jī)通過(guò)SDK開(kāi)啟關(guān)閉實(shí)時(shí)預(yù)覽接口
下篇介紹實(shí)時(shí)預(yù)覽的回調(diào)函數(shù)及解碼庫(kù)

測(cè)試環(huán)境:

系統(tǒng):Centos 7

SDK:設(shè)備網(wǎng)絡(luò)SDK Linux64

實(shí)時(shí)預(yù)覽模塊流程:

實(shí)時(shí)預(yù)覽模塊流程

圖中虛線框部分的模塊是與預(yù)覽模塊相關(guān)侥猬,必須在啟動(dòng)預(yù)覽后才能調(diào)用傀蓉,這些模塊之間是并列的 關(guān)系勒叠,各自完成相應(yīng)的功能。

關(guān)于SDK初始化和設(shè)備登錄可以看我上一篇博客

實(shí)時(shí)預(yù)覽接口(NET_DVR_RealPlay_V40)

NativeLong NET_DVR_RealPlay_V40(NativeLong lUserID, NET_DVR_PREVIEWINFO lpPreviewInfo, FRealDataCallBack_V30 fRealDataCall, Pointer pUser);

實(shí)時(shí)預(yù)覽接口需要設(shè)置回調(diào)函數(shù)(fRealDataCallBack_V30接口的實(shí)現(xiàn)類)

注意:該接口返回的視頻數(shù)據(jù)流并不能直接使用膏孟,需要使用官方解碼庫(kù)或者第三方解碼庫(kù)才能得到圖片幀數(shù)據(jù)

傳入?yún)?shù)

1眯分、lUserID (NET_DVR_Login_V40等登錄接口的返回值)

2、lpPreviewInfo (預(yù)覽參數(shù))

3柒桑、fRealDataCallBack_V30 (碼流數(shù)據(jù)回調(diào)函數(shù))

4弊决、pUser (用戶數(shù)據(jù))

返回參數(shù)

-1表示失敗,其他值作為NET_DVR_StopRealPlay等函數(shù)的句柄參數(shù)

NET_DVR_StopRealPlay 停止實(shí)時(shí)預(yù)覽接口

接口調(diào)用

/**
 * 開(kāi)始其實(shí)預(yù)覽 設(shè)置實(shí)時(shí)流回調(diào)函數(shù)
 *
 * @param nativeLong
 * @author 云深小麥
 */
private NativeLong startRealPlay(NativeLong nativeLong) {
    HCNetSDK.NET_DVR_PREVIEWINFO previewInfo = new HCNetSDK.NET_DVR_PREVIEWINFO();
    previewInfo.lChannel = new NativeLong(1);
    previewInfo.dwStreamType = 0;
    previewInfo.dwLinkMode = 0;
    previewInfo.hPlayWnd = null;
    previewInfo.bBlocked = false;
    previewInfo.bPassbackRecord = true;
    previewInfo.byPreviewMode = 0;
    previewInfo.byProtoType = 1;
    previewInfo.dwDisplayBufNum = 15;
    previewInfo.write();

    NativeLong realPlayV40 = HKNETSDK.NET_DVR_RealPlay_V40(nativeLong, previewInfo, cbRealData, null);
    if (realPlayV40.intValue() < 0) {
        log.error("streamServiceImpl.startRealPlay.NET_DVR_RealPlay_V40 error:{}", HKNETSDK.NET_DVR_GetLastError());
        throw new StreamException(HKNETSDK.NET_DVR_GetLastError());
    }
    return realPlayV40;
}

NET_DVR_GetLastError:返回最后操作的錯(cuò)誤碼

建議沒(méi)次調(diào)用SDK里的接口都打印一下這個(gè)接口魁淳,返回0代表沒(méi)有錯(cuò)誤飘诗,就怕打印別的

預(yù)覽參數(shù)說(shuō)明:NET_DVR_PREVIEWINFO

lChannel

通道號(hào),目前設(shè)備模擬通道號(hào)從1開(kāi)始界逛,數(shù)字通道的起始通道號(hào)通過(guò)NET_DVR_GetDVRConfig(配置命令NET_DVR_GET_IPPARACFG_V40)獲壤ジ濉(dwStartDChan)。

dwStreamType

碼流類型:0-主碼流息拜,1-子碼流溉潭,2-三碼流,3-虛擬碼流少欺,以此類推

dwLinkMode

連接方式:0- TCP方式喳瓣,1- UDP方式,2- 多播方式赞别,3- RTP方式畏陕,4- RTP/RTSP,5- RTP/HTTP仿滔,6- HRUDP(可靠傳輸) 蹭秋,7- RTSP/HTTPS,8- NPQ

hPlayWnd

播放窗口的句柄堤撵,為NULL表示不解碼顯示。

bBlocked

0- 非阻塞取流羽莺,1- 阻塞取流
若設(shè)為不阻塞实昨,表示發(fā)起與設(shè)備的連接就認(rèn)為連接成功,如果發(fā)生碼流接收失敗盐固、播放失敗等情況以預(yù)覽異常的方式通知上層荒给。在循環(huán)播放的時(shí)候可以減短停頓的時(shí)間,與NET_DVR_RealPlay處理一致刁卜。
若設(shè)為阻塞志电,表示直到播放操作完成才返回成功與否,網(wǎng)絡(luò)異常時(shí)SDK內(nèi)部connect失敗將會(huì)有5s的超時(shí)才能夠返回蛔趴,不適合于輪詢?nèi)×鞑僮鳌?/p>

bPassbackRecord

是否啟用錄像回傳:0-不啟用錄像回傳挑辆,1-啟用錄像回傳。ANR斷網(wǎng)補(bǔ)錄功能,客戶端和設(shè)備之間網(wǎng)絡(luò)異秤悴酰恢復(fù)之后自動(dòng)將前端數(shù)據(jù)同步過(guò)來(lái)洒嗤,需要設(shè)備支持。

byPreviewMode

延遲預(yù)覽模式:0- 正常預(yù)覽魁亦,1- 延遲預(yù)覽

byStreamID

流ID渔隶,為字母、數(shù)字和"_"的組合洁奈,lChannel為0xffffffff時(shí)啟用此參數(shù)

byProtoType

應(yīng)用層取流協(xié)議:0- 私有協(xié)議间唉,1- RTSP協(xié)議。主子碼流支持的取流協(xié)議通過(guò)登錄返回結(jié)構(gòu)參數(shù)NET_DVR_DEVICEINFO_V30的byMainProto利术、bySubProto值得知呈野。設(shè)備同時(shí)支持私協(xié)議和RTSP協(xié)議時(shí),該參數(shù)才有效氯哮,默認(rèn)使用私有協(xié)議际跪,可選RTSP協(xié)議。

byRes1

保留喉钢,置為0

byVideoCodingType

碼流數(shù)據(jù)編解碼類型:0- 通用編碼數(shù)據(jù)姆打,1- 熱成像探測(cè)器產(chǎn)生的原始數(shù)據(jù)(溫度數(shù)據(jù)的加密信息,通過(guò)去加密運(yùn)算肠虽,將原始數(shù)據(jù)算出真實(shí)的溫度值)

dwDisplayBufNum

播放庫(kù)播放緩沖區(qū)最大緩沖幀數(shù)幔戏,取值范圍:1、6(默認(rèn)税课,自適應(yīng)播放模式)闲延、15,置0時(shí)默認(rèn)為1

byNPQMode

NPQ模式:0- 直連模式韩玩,1-過(guò)流媒體模式

byRes

保留垒玲,置為0

備注

1、 dwStreamType(碼流類型)找颓、dwLinkMode(連接方式)合愈、bPassbackRecord(錄像回傳)、byPreviewMode(延遲預(yù)覽模式)击狮、byStreamID(流ID)這些參數(shù)的取值需要設(shè)備支持佛析。

2、 NET_DVR_RealPlay_V40支持多播方式預(yù)覽(dwLinkMode設(shè)為2)彪蓬,不需要傳多播組地址寸莫,底層自動(dòng)從設(shè)備獲取已配置的多播組地址(NET_DVR_NETCFG_V50中的參數(shù)struMulticastIpAddr)并以該多播組地址實(shí)現(xiàn)多播。

3档冬、 碼流類型包含主碼流膘茎、子碼流桃纯、三碼流、事件碼流和虛擬碼流等辽狈,

4慈参、 當(dāng)dwLinkMode == 7的時(shí)候,同時(shí)byProtoType == 1的時(shí)候刮萌,表示RTP over HTTPS預(yù)覽驮配。

停止實(shí)時(shí)預(yù)覽(NET_DVR_StopRealPlay)

傳入?yún)?shù)

1、lRealHandle(NET_DVR_RealPlay或者NET_DVR_RealPlay_V30的返回值)

返回參數(shù)

true 表示成功着茸,false 表示失敗壮锻。

接口調(diào)用

/**
 * 停止實(shí)時(shí)預(yù)覽
 *
 * @return nativeLong
 * @author 云深小麥
 */
private void stopRealPlay(NativeLong nativeLong) {
    boolean response = HKNETSDK.NET_DVR_StopRealPlay(nativeLong);
    if (!response) {
        log.info("streamServiceImpl.stopRealPlay.NET_DVR_StopRealPlay error:{}", HKNETSDK.NET_DVR_GetLastError());
    }
}

代碼寫(xiě)的太亂,我還在整理中涮阔。猜绣。。
注意:so動(dòng)態(tài)庫(kù)是linux版本的敬特,windows版本的有部分接口不一樣

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末掰邢,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子伟阔,更是在濱河造成了極大的恐慌辣之,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件皱炉,死亡現(xiàn)場(chǎng)離奇詭異怀估,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)合搅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)多搀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人灾部,你說(shuō)我怎么就攤上這事康铭。” “怎么了赌髓?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵麻削,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我春弥,道長(zhǎng),這世上最難降的妖魔是什么叠荠? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任匿沛,我火速辦了婚禮,結(jié)果婚禮上榛鼎,老公的妹妹穿的比我還像新娘逃呼。我一直安慰自己鳖孤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布抡笼。 她就那樣靜靜地躺著苏揣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪推姻。 梳的紋絲不亂的頭發(fā)上平匈,一...
    開(kāi)封第一講書(shū)人閱讀 49,784評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音藏古,去河邊找鬼增炭。 笑死,一個(gè)胖子當(dāng)著我的面吹牛拧晕,可吹牛的內(nèi)容都是我干的隙姿。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼厂捞,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼输玷!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起靡馁,我...
    開(kāi)封第一講書(shū)人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤欲鹏,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后奈嘿,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體貌虾,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年裙犹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了尽狠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡叶圃,死狀恐怖袄膏,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情掺冠,我是刑警寧澤沉馆,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站德崭,受9級(jí)特大地震影響斥黑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜眉厨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一锌奴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧憾股,春花似錦鹿蜀、人聲如沸箕慧。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)颠焦。三九已至,卻和暖如春往枣,著一層夾襖步出監(jiān)牢的瞬間伐庭,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工婉商, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留似忧,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓丈秩,卻偏偏與公主長(zhǎng)得像盯捌,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蘑秽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容