通過調取海康攝像機SDK,獲取的音視頻碼流,其格式並不是直覺上的H264/H265的NALU,而是PS流。如果想得到H264或者H265的裸流、以及音頻幀,需要自行解複用PS。
獲取的碼流打印如下圖所示:
從圖中可以分析出:
(1)左側顯示,當攝像機上“視頻類型”設置爲複合流時,回調得到的數據就包括視頻E0和音頻C0。
(2)右側顯示,當攝像機上“視頻類型”設置爲視頻流時,回調得到的數據就僅僅只包括視頻E0。
調取SDK取流的代碼如下:
NET_DVR_CLIENTINFO ClientInfo;
ClientInfo.lChannel = iPChannel;
ClientInfo.lLinkMode = 0;
ClientInfo.hPlayWnd = NULL;
ClientInfo.sMultiCastIP = NULL;
ClientInfo.byProtoType = 1;
llRealHandle = NET_DVR_RealPlay_V30(lUserID,&ClientInfo, CBREALDATACALLBACK,NULL,TRUE);
NET_DVR_PREVIEWINFO info;
memset(&info, 0, sizeof info);
info.lChannel = iPChannel;
info.dwStreamType = 0;
info.dwLinkMode = 0;
info.bBlocked = 1;
info.byProtoType = 1;
llRealHandle = NET_DVR_RealPlay_V40(lUserID, &info, CBREALDATACALLBACK,NULL);