• 大小: 4KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-10-22
  • 语言: 其他
  • 标签: rtsp  

资源简介

主要演示了RTSP的各种协议指令的使用,并能正常播放音频与视频。

资源截图

代码片段和文件信息

#ifdef _WIN32_WCE
#include “stdafx.h“
#endif

#ifndef _WIN32_WCE
#define WIN32_LEAN_AND_MEAN
#endif

#include 
#include 

#include 

#include 

#include 
#include 
#include 

#ifdef _WIN32_WCE
#pragma comment(lib “ws2.lib“)
#else
#pragma comment(lib “ws2_32.lib“)
#endif

#define  PP_NAME “User-Agent: Master 1.0\r\nPrivate: NOTIFY“
#define  PP_NAME1 “User-Agent: Master 1.0“
#define  PP_CRLF “\r\n“

//测试之用

//打开连接
long InitSocket();

//关闭连接
long DeInitSocket();

//初始化tcp socket
long InitTCPSocket(int port);

//初始化udp socket
long InitUDPSocket(const char *ip int port);

//取socket端口号
long GetSokcetPort(int sock int *port);

//读取数据
long ReadSocket(int sock char *buf int len int timeout);

//发送命令数据
long SendRTSPCmd(int sock const char *cmd const char *szparam);

//解析rtsp命令回应数据
long PraseRTSPCmd();
long PraseOptionCmd(const char *sz);
long PraseDescribeCmd(const char *sz);
long PraseSetupCmd(const char *sz char *sess);
long PrasePlayCmd(const char *sz);
long GetResponseCode(const char *sz);  //取返回值

//////////////////////////////////////////////////////////////////////////
//字符串操作函数 
static char* getLine(char* startOfLine);


//生成rtsp发送命令
char * GetRTSPCmd(const char *);
char * GetOptionCmd(char *url);
char * GetDescribeCmd(char *url);
char * GetPlayCmd(char *url char *session char *range);
char * GetSetupCmd(char *url int port1 int port2);

char * GetReportCmd(char *);

//////////////////////////////////////////////////////////////////////////
//日志函数
long logwr(void * int len);

//全局变量定义区
fd_set rfdsock;
//日志写入文件指针
FILE *fp = NULL;
//

//////////////////////////////////////////////////////////////////////////
//rtsp请求解析
long PraseURL(const char *url char *szip int *iport);
int _tmain(int argc _TCHAR* argv[])
{
 int sockin sc1 sc2;
 sockaddr_in addr;
 char *buf *szcmd *url*strUrl;
 char szip[32]={0};
 int nlen iret iport;
 int ip1 ip2;
 long lret;

 //初始化变量 
 FD_ZERO(&rfdsock);

 fp = fopen(“1.txt“ “w+“);
 //分配缓冲区
 nlen = 10240;
 buf = (char*)malloc(nlen);
 strUrl=(char*)malloc(300);
 memset(strUrl0300);
 memset(buf010240);
 
 //定义要连接的url
//url = “rtsp://192.168.1.43:2554/realmp3.mp3“;
  url = “rtsp://192.168.0.111:80/“;
 //url = “rtsp://192.168.1.43/1.amr“;
 //初始化sock
 long lRet=InitSocket();

 //分析url请求,取出ip,端口
 lret = PraseURL(url szip &iport);
 sprintf(strUrl“rtsp://admin:123456@%s:%i/vga.sdp“szip iport);
 
 //初始化与服务器连接的socket
 sockin = InitTCPSocket(0);
 
 //与服务器连接
 addr.sin_family = AF_INET;
 addr.sin_port = htons(iport);
 addr.sin_addr.s_addr = inet_addr(szip);
 iret = connect(sockin(struct sockaddr*)&addr sizeof addr);

 //发送option命令
 szcmd = GetOptionCmd(url);
 lret = SendRTSPCmd(sockin “OPTIONS“szcmd);
 free(szcmd);

 lret = ReadSocket(sockin buf nlen100);

 
 //发送DESCRIBE命令
 szcmd = GetDescr

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      14163  2012-01-06 16:33  Rtsp.cpp

----------- ---------  ---------- -----  ----

                14163                    1


评论

共有 条评论