资源简介
RTSP视频播放器,包括发送端和接收端。
代码片段和文件信息
#include “h264.h“
FILE * poutfile = NULL;
char * outputfilename = “..\\H264_STREAM\\receive.264“;
int InitiateWinsock()
{
int Error;
WORD Version=MAKEWORD(22);
WSADATA WsaData;
Error=WSAStartup(Version&WsaData); //Start up WSA
if(Error!=0)
return 0;
else
{
if(LOBYTE(WsaData.wVersion)!=2||HIBYTE(WsaData.wHighVersion)!=2)
{
WSACleanup();
return 0;
}
}
return 1;
}
int OpenBitstreamFile (char *fn)
{
if (NULL == (poutfile = fopen(fn “wb“)))
{
printf(“Error: Open input file error\n“);
getchar();
}
return 1;
}
NALU_t *AllocNALU(int buffersize)
{
NALU_t *n;
if ((n = (NALU_t*)calloc (1 sizeof(NALU_t))) == NULL)
{
printf(“AllocNALU Error: Allocate Meory To NALU_t Failed “);
exit(0);
}
return n;
}
void FreeNALU(NALU_t *n)
{
if (n)
{
free (n);
}
}
unsigned char * rtp_unpackage(char *bufInint len)
{
unsigned char recvbuf[1500];
RTPpacket_t *p = NULL;
RTP_HEADER * rtp_hdr = NULL;
NALU_HEADER * nalu_hdr = NULL;
NALU_t * n = NULL;
FU_INDICATOR *fu_ind = NULL;
FU_HEADER *fu_hdr= NULL;
int total_bytes = 0; //当前包传出的数据
static int total_recved = 0; //一共传输的数据
int fwrite_number = 0; //存入文件的数据长度
memcpy(recvbufbufIn len); //复制rtp包
printf(“包长度+ rtp头: = %d\n“len);
//////////////////////////////////////////////////////////////////////////
//begin rtp_payload and rtp_header
p = (RTPpacket_t*)&recvbuf[0];
if ((p = malloc (sizeof (RTPpacket_t)))== NULL)
{
printf (“RTPpacket_t MMEMORY ERROR\n“);
}
if ((p->payload = malloc (MAXDATASIZE))== NULL)
{
printf (“RTPpacket_t payload MMEMORY ERROR\n“);
}
if ((rtp_hdr = malloc(sizeof(RTP_HEADER))) == NULL)
{
printf(“RTP_HEADER MEMORY ERROR\n“);
}
rtp_hdr =(RTP_HEADER*)&recvbuf[0];
printf(“版本号 : %d\n“rtp_hdr->version);
p->v = rtp_hdr->version;
p->p = rtp_hdr->padding;
p->x = rtp_hdr->extension;
p->cc = rtp_hdr->csrc_len;
printf(“标志位 : %d\n“rtp_hdr->marker);
p->m = rtp_hdr->marker;
printf(“负载类型:%d\n“rtp_hdr->payloadtype);
p->pt = rtp_hdr->payloadtype;
printf(“包号 : %d \n“rtp_hdr->seq_no);
p->seq = rtp_hdr->seq_no;
printf(“时间戳 : %d\n“rtp_hdr->timestamp);
p->timestamp = rtp_hdr->timestamp;
printf(“帧号 : %d\n“rtp_hdr->ssrc);
p->ssrc = rtp_hdr->ssrc;
//end rtp_payload and rtp_header
//////////////////////////////////////////////////////////////////////////
//begin nal_hdr
if (!(n = AllocNALU(800000))) //为结构体nalu_t及其成员buf分配空间。返回值为指向nalu_t存储空间的指针
{
printf(“NALU_t MMEMORY ERROR\n“);
}
if ((nalu_hdr = malloc(sizeof(NALU_HEADER))) == NULL)
{
printf(“NALU_HEADER MEMORY ERROR\n“);
}
nalu_hdr =(NALU_HEADER*)&recvbuf[12]; //网络传输过来的字节序 ,当存入内存还是和文档描述的相反,只要匹配网络字节序和文档描述即可传输正确。
printf(“forbidden_zero_bit: %d\n“nalu_hdr->F); //网络传输中的方式为:F->NRI->TYPE.. 内存中存储方式为 TYPE->NRI->F (和nal头匹配)。
n->fo
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 879 2016-08-09 16:32 RTSP视频播放器\rtpRecv\Backup\rtpRecv.sln
..A..H. 27648 2016-08-10 01:33 RTSP视频播放器\rtpRecv\Backup\rtpRecv.v12.suo
文件 35739 2017-07-04 22:09 RTSP视频播放器\rtpRecv\Debug\Rtp2H264.obj
文件 45568 2017-07-05 09:37 RTSP视频播放器\rtpRecv\Debug\rtpRecv.exe
文件 315768 2017-07-05 09:37 RTSP视频播放器\rtpRecv\Debug\rtpRecv.ilk
文件 2548 2017-07-05 09:37 RTSP视频播放器\rtpRecv\Debug\rtpRecv.log
文件 59790 2017-07-05 09:37 RTSP视频播放器\rtpRecv\Debug\rtpRecv.obj
文件 749568 2017-07-05 09:37 RTSP视频播放器\rtpRecv\Debug\rtpRecv.pdb
文件 1802 2017-07-05 09:37 RTSP视频播放器\rtpRecv\Debug\rtpRecv.tlog\cl.command.1.tlog
文件 42462 2017-07-05 09:37 RTSP视频播放器\rtpRecv\Debug\rtpRecv.tlog\CL.read.1.tlog
文件 2302 2017-07-05 09:37 RTSP视频播放器\rtpRecv\Debug\rtpRecv.tlog\CL.write.1.tlog
文件 1444 2017-07-05 09:37 RTSP视频播放器\rtpRecv\Debug\rtpRecv.tlog\li
文件 2976 2017-07-05 09:37 RTSP视频播放器\rtpRecv\Debug\rtpRecv.tlog\li
文件 660 2017-07-05 09:37 RTSP视频播放器\rtpRecv\Debug\rtpRecv.tlog\li
文件 179 2017-07-05 09:37 RTSP视频播放器\rtpRecv\Debug\rtpRecv.tlog\rtpRecv.lastbuildstate
文件 3779 2017-07-04 22:04 RTSP视频播放器\rtpRecv\Debug\stdafx.obj
文件 707584 2017-07-05 09:37 RTSP视频播放器\rtpRecv\Debug\vc120.idb
文件 167936 2017-07-05 09:37 RTSP视频播放器\rtpRecv\Debug\vc120.pdb
文件 5069 2017-07-04 22:08 RTSP视频播放器\rtpRecv\h264.h
文件 8988 2012-07-29 16:32 RTSP视频播放器\rtpRecv\main.c
文件 1302 2016-08-09 16:32 RTSP视频播放器\rtpRecv\ReadMe.txt
文件 3557 2017-07-05 11:17 RTSP视频播放器\rtpRecv\Rtp2H264.cpp
文件 949 2015-11-09 11:41 RTSP视频播放器\rtpRecv\Rtp2H264.h
文件 9707 2017-07-05 09:37 RTSP视频播放器\rtpRecv\rtpRecv.cpp
文件 30081024 2017-07-05 11:54 RTSP视频播放器\rtpRecv\rtpRecv.sdf
文件 959 2017-07-04 21:06 RTSP视频播放器\rtpRecv\rtpRecv.sln
..A..H. 27648 2016-08-10 01:33 RTSP视频播放器\rtpRecv\rtpRecv.suo
..A..H. 47616 2017-07-05 11:54 RTSP视频播放器\rtpRecv\rtpRecv.v12.suo
文件 4364 2016-08-09 17:34 RTSP视频播放器\rtpRecv\rtpRecv.vcproj
文件 1411 2016-08-09 19:19 RTSP视频播放器\rtpRecv\rtpRecv.vcproj.DELL-PC.DELL.user
............此处省略65个文件信息
- 上一篇:固体激光工程
- 下一篇:某企业财务管理系统PB
相关资源
- ffmpeg+SDL2实现的视频播放器(windows版
- vep格式视频播放器 windows版 mac版
- 海康webcomponents最新版64位,32位内附各
- Windows下利用live555实现H264实时流RTSP发
- onvif协议源码rtsp,rtp,gb28181等等协议
- h264视频流解码并通过D3D显示
- 基于libVLC的图形界面版视频播放器 设
- Hi3518采集摄像头图片并把Hi3518当作R
- ffmpeg 采集摄像机流(rtsp)后推流(
- FFMPEG实现RTSP中数据流解码 并且实时播
-
VideoPla
yer_5(FFMPEG Qt视频播放器之播 - 基于FFmpegQt的视频播放器完整源码.r
- 超低延迟RTSP/RTMP/HTTP播放器实测小于
- OpenGL鱼眼镜头特效的视频播放器 基于
- live555实现H264实时流进行RTSP发送
- 从零开始学习音视频编程技术二十二
- wowza media server 1.7.0 with keygen 支持RTS
- Vlc获取rtsp视频流opencv显示
- 从零开始学习音视频编程技术十一
- 基于hi3531的live555发送h264
-
SurfaceView+MediaPla
yer视频播放器支持选 - Qt+FFMPEG 实现简单的视频播放器
-
DHF_Pla
yer破解版加密视频播放器 - 海康webcomponents最新版64位,32位(内附
- 视频播放器 支持旋转、锁屏、各种手
- 基于ios的视频播放器
- Qt实现RTSP视频流播放器
- Qt基于ffmpeg的rtsp视频流接收播放工具
- 从零开始学习音视频编程技术十一
- 从零开始学习音视频编程技术八 FFM
评论
共有 条评论