資源簡介
這個是我早期整理和編寫的基于GB/T28181協議的IPC模擬器源碼,在VS2010環境下使用c語言開發,基本實現了GB/T28181的接入和視頻請求協議,對于視頻請求的處理,我從文件中讀取ps流發送給請求端,曾經接入到海康平臺下測試通過(注意:請求客戶端于該ipc模擬器不能在同一機子上,因為sip協議的源和目的地相同會出現請求不到視頻流的問題)
代碼片段和文件信息
#include?
#include?“ctrl.h“
#include?
#include?
#include?
#include?
#include?
#include?“demo.h“
MEDIA_PARA?media_para;
/*設備控制:向左、向右、向上、向下、放大、縮小、停止遙控/開始手動錄像、停止手動錄像/布防、撤防/報警復位/設備遠程啟動*/
/*ctrl_cmd:設備控制命令,_device_control類型的枚舉變量*/
/*返回值:成功時返回0,失敗時返回負值*/
int?dt_eXosip_deviceControl(enum?_device_control?ctrl_cmd)
{
return?0;
}
DWORD?WINAPI?SendRtpProc(LPVOID?lp)
{
SOCKET?socket_cli;
SOCKADDR_IN?addrser;//Initialize?Win?Socket
sockaddr_in?addrMe;?//源端口和地址
NALU_t?*?n?=?NULL;
char?sendbuf[MAXDATASIZE];
RTP_HEADER??*?rtp_hdr?=?NULL?;
int?pocket_number??=?0;???//包號
int?frame_number?=?0;?????//幀號
int?total_sent?=?0;???????//已經發送的總共數據
NALU_HEADER?*?nalu_hdr?=?NULL;
char*?nalu_payload?=?NULL;?
int??bytes?=?0;???????????//一次發送的數據
//unsigned?int?sequence?=?65536;
int?timestamp?=?0;
FU_INDICATOR??*fu_ind?=?NULL?;
FU_HEADER ??*fu_hdr?=?NULL?;
MEDIA_PARA?*pMedia_para?=?(MEDIA_PARA?*)lp;
//創建socket套接字
addrMe.sin_family?=?AF_INET;
addrMe.sin_port?=?htons(atoi(device_info.ipc_media_port));//1001你的端口號
addrMe.sin_addr.s_addr?=?INADDR_ANY;?
socket_cli=?socket(AF_INET?SOCK_DGRAM/*UDP協議的是流式*/0);
addrser.sin_addr.S_un.S_addr?=inet_addr(pMedia_para->media_ip);
addrser.sin_family?=?AF_INET;
addrser.sin_port?=?htons(atoi(pMedia_para->media_port));???????//網絡字節序
????bind(socket_cli?(struct?sockaddr*)&addrMe?sizeof(addrMe));
OpenBitstreamFile(inputfilename);?????????//打開本地要傳輸的文件
n?=?AllocNALU(8000000);???????????????????//分配nal?資源
while(!feof(pinfile)?&&?g_did_realPlay>0)?????????????????????//如果未到文件結尾
{
GetAnnexbNALU(n);?
//? printf(“NALU---?forbidden_bit????????:?????%d\n“?n->forbidden_bit);
//? printf(“NALU---?nal_reference_idc????:?????%d\n“?n->nal_reference_idc);
//? printf(“NALU---?Type?????????????????:?????%d\n“?n->nal_unit_type);
//? printf(“NALU---?startcodeprefix_len??:?????%d\n“?n->startcodeprefix_len);
? printf(“NALU---?len??????????????????:?????%d\n“?n->len);
? printf(“NALU---?max_size?????????????:?????%d\n“?n->max_size);
memset(sendbuf0MAXDATASIZE);
rtp_hdr?=(RTP_HEADER*)&sendbuf[0];????????????
rtp_hdr->payloadtype?????=?H264; //Payload?type
rtp_hdr->version?????????=?2;???????????????????????????????//Payload?version
rtp_hdr->marker??????????=?0; ????//Marker?sign
rtp_hdr->ssrc????????????=?999999999; ????????????????????//幀數
rtp_hdr->timestamp?=?htonl(timestamp);
if?(n->len?1400)??????????????????????????????????????????//打單包
{
if(n->buf[3]?==?0xC0)
??????rtp_hdr->marker?=?1;
else
??rtp_hdr->marker?=?0;
rtp_hdr->seq_no?=?htons(pocket_number++);?
nalu_payload?=?&sendbuf[12];???????????
memcpy(nalu_payloadn->bufn->len);?
rtp_hdr->timestamp?=?htonl(timestamp);
bytes?=?n->len?+?12; ?
Sleep(40);
sendto(socket_clisendbufbytes0(SOCKADDR?*)&addrsersizeof(SOCKADDR));???
total_sent?+=?b
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????571??2014-01-17?09:48??SipClientC\.svn\entries
?????文件????????181??2014-01-17?09:48??SipClientC\.svn\text-ba
?????文件???????1327??2014-01-17?09:48??SipClientC\.svn\text-ba
?????文件?????675876??2014-01-24?15:52??SipClientC\1.264
?????文件????2205983??2014-01-27?10:01??SipClientC\3.ps
?????文件?????420864??2014-01-16?18:03??SipClientC\Debug\eXosip.dll
?????文件?????530432??2012-10-19?16:40??SipClientC\Debug\GLC_Encap.dll
?????文件????1177088??2014-01-14?18:39??SipClientC\Debug\libeay32.dll
?????文件??????90112??2014-01-15?15:42??SipClientC\Debug\osip2.dll
?????文件?????196096??2014-01-15?15:41??SipClientC\Debug\osipparser2.dll
?????文件??????70144??2017-06-22?14:18??SipClientC\Debug\SipClient.exe
?????文件?????562612??2017-06-22?14:18??SipClientC\Debug\SipClient.ilk
?????文件?????723968??2017-06-22?14:18??SipClientC\Debug\SipClient.pdb
?????文件?????269824??2014-01-14?18:40??SipClientC\Debug\ssleay32.dll
?????文件?????458840??2012-10-19?16:35??SipClientC\Debug\Transform.dll
?????文件????????246??2014-01-17?09:48??SipClientC\include\.svn\entries
?????文件???????1863??2014-01-17?09:47??SipClientC\include\eXosip2\.svn\entries
?????文件??????14440??2014-01-17?09:47??SipClientC\include\eXosip2\.svn\text-ba
?????文件???????7971??2014-01-17?09:47??SipClientC\include\eXosip2\.svn\text-ba
?????文件???????3059??2014-01-17?09:47??SipClientC\include\eXosip2\.svn\text-ba
?????文件???????2934??2014-01-17?09:47??SipClientC\include\eXosip2\.svn\text-ba
?????文件???????2387??2014-01-17?09:47??SipClientC\include\eXosip2\.svn\text-ba
?????文件???????2222??2014-01-17?09:47??SipClientC\include\eXosip2\.svn\text-ba
?????文件???????3574??2014-01-17?09:47??SipClientC\include\eXosip2\.svn\text-ba
?????文件??????11926??2014-01-17?09:47??SipClientC\include\eXosip2\.svn\text-ba
?????文件???????7086??2014-01-17?09:47??SipClientC\include\eXosip2\.svn\text-ba
?????文件????????181??2014-01-17?09:47??SipClientC\include\eXosip2\.svn\text-ba
?????文件??????15087??2014-01-17?09:47??SipClientC\include\eXosip2\.svn\text-ba
?????文件??????14440??2014-01-17?09:47??SipClientC\include\eXosip2\eXosip.h
?????文件???????7971??2014-01-17?09:47??SipClientC\include\eXosip2\eX_call.h
............此處省略386個文件信息
評論
共有 條評論