有兩種實現方式
第一種:
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);//添加數據