有两种实现方式
第一种:
RtspServer_init
RtspServerListen
RtspClientMsg //线程1 : 不断监控是否又客服端来连接自己,并且建立双方的连接
if(strstr(cmdName, "OPTIONS")) OptionAnswer;
if(strstr(cmdName, "DESCRIBE")) DescribeAnswer;
if(strstr(cmdName, "SETUP")) SetupAnswer;
if(strstr(cmdName, "PLAY")) PlayAnswer;
if(strstr(cmdName, "PAUSE")) PauseAnswer;
if(strstr(cmdName, "TEARDOWN")) TeardownAnswer;
SAMPLE_VENC_720P_CLASSIC
SAMPLE_COMM_VENC_StartGetStream
SAMPLE_COMM_VENC_GetVencStreamProc //线程2 : 不断从海思的解码器中获取H.264码流
save_stream_rtsp
VENC_Sent //正真的发送数据
sendto(udpfd, sendbuf, bytes, 0, (struct sockaddr *)&server,sizeof(server));
//向UDP中发送数据
第二种:
RtspServer_init
RtspServerListen
RtspClientMsg //线程1 : 不断监控是否又客服端来连接自己,并且建立双方的连接
if(strstr(cmdName, "OPTIONS")) OptionAnswer;
if(strstr(cmdName, "DESCRIBE")) DescribeAnswer;
if(strstr(cmdName, "SETUP")) SetupAnswer;
if(strstr(cmdName, "PLAY")) PlayAnswer;
if(strstr(cmdName, "PAUSE")) PauseAnswer;
if(strstr(cmdName, "TEARDOWN")) TeardownAnswer;
vdRTPSendThread //线程2 : 不断监控全局变量的RTP_BUF是否为空,不为空就发送数据
VENC_Sent //正真的发送数据
sendto(udpfd, sendbuf, bytes, 0, (struct sockaddr *)&server,sizeof(server));
//向UDP中发送数据
SAMPLE_VENC_720P_CLASSIC
SAMPLE_COMM_VENC_StartGetStream
SAMPLE_COMM_VENC_GetVencStreamProc //线程3 : 不断从海思的解码器中获取H.264码流
save_stream_rtsp
saveStream
list_add_tail(&(p->list),&RTP_BUF);//添加数据