资源简介
这个是我早期整理和编写的基于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个文件信息
相关资源
- hook,捕获所有案件,查找所有窗口,
- (学习)VS2010之MFC入门到精通教程
- H264转化MP4源码
- 车牌识别系统,VS2010实现,语言C++
- EAN13条码生成(C语言+VS2010)[包含EA
- C语言c++游戏源代码大全
- VS2010 C++ 操作Excel表格的编程实现
- vs2010编写的图书馆管理系统MFC_Librar
- VC++ VS2010实现的简单的学生管理系统
- VS2010_MFC完全版全五十四章从入门到精
- vs2010 MFC基础教程
- zxing有关qrcode二维码源码的vs2010编译
- MFC实现简单计算器支持加减乘除和括
- VS2010中MFC利用TeeChart控件实现画三维图
- VS2010基于对话框的MFC 工具栏和状态栏
- c++实现发邮件类
- CMFCToolBarVS2010
- VS2010 C++ 串口通信软件包含mscomm控件和
- TeeChart绘图控件破解版TeChart.Pro.v5 -V
- VS2010MFC利用TeeChart绘制瀑布图三维图
- 鸡啄米:VS2010MFC编程入门教程.pdf
- Visual Studio 2010之MFC编程
- Gerver View 源码
- 控制台三国杀第三版C++VS2010——公布
- vs2010 2013 mfc
- 基于MFC modbusTcp
- 简单推理机实现_动物推断_VS2010版本
- 学生管理系统VS2010
- VS2010之MFC串口通信的编写教程
- gdal-1.9.2基于vs2010已编译好的c++
评论
共有 条评论