• 大小: 15.34MB
    文件类型: .rar
    金币: 2
    下载: 2 次
    发布日期: 2023-06-21
  • 语言: C/C++
  • 标签: GB/T28181  VS2010  IPC  

资源简介

这个是我早期整理和编写的基于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-base\test.xml.svn-base

     文件       1327  2014-01-17 09:48  SipClientC\.svn\text-base\UpgradeLog.xml.svn-base

     文件     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-base\eXosip.h.svn-base

     文件       7971  2014-01-17 09:47  SipClientC\include\eXosip2\.svn\text-base\eX_call.h.svn-base

     文件       3059  2014-01-17 09:47  SipClientC\include\eXosip2\.svn\text-base\eX_message.h.svn-base

     文件       2934  2014-01-17 09:47  SipClientC\include\eXosip2\.svn\text-base\eX_options.h.svn-base

     文件       2387  2014-01-17 09:47  SipClientC\include\eXosip2\.svn\text-base\eX_publish.h.svn-base

     文件       2222  2014-01-17 09:47  SipClientC\include\eXosip2\.svn\text-base\eX_refer.h.svn-base

     文件       3574  2014-01-17 09:47  SipClientC\include\eXosip2\.svn\text-base\eX_register.h.svn-base

     文件      11926  2014-01-17 09:47  SipClientC\include\eXosip2\.svn\text-base\eX_setup.h.svn-base

     文件       7086  2014-01-17 09:47  SipClientC\include\eXosip2\.svn\text-base\eX_subscribe.h.svn-base

     文件        181  2014-01-17 09:47  SipClientC\include\eXosip2\.svn\text-base\Makefile.am.svn-base

     文件      15087  2014-01-17 09:47  SipClientC\include\eXosip2\.svn\text-base\Makefile.in.svn-base

     文件      14440  2014-01-17 09:47  SipClientC\include\eXosip2\eXosip.h

     文件       7971  2014-01-17 09:47  SipClientC\include\eXosip2\eX_call.h

............此处省略386个文件信息

评论

共有 条评论