[위 에] [Darwin 학습 노트] 의 QTS SReflector Module 의 Setup 메시지 처리
[전재 출처 밝 혀 주세요]:http://blog.csdn.net/longlong530
1. 키워드 qtssRTSPReq TransportMode 에 따라 푸 시 모드 인지 여 부 를 판단 합 니 다. 구체 적 인 isPush 값 은 Setup 요청 중의 mode 값 과 관련 이 있 습 니 다. mode = "receive" | mode = "record" 는 isPush 를 true 로 표시 합 니 다.대응 하 는 해석 함 수 는: void RTSPRequest:: ParseModeSubHeader (StrPtrLen * inModeSubHeader)
StrPtrLen theMode;
theSubHeaderParser.ConsumeWord(&theMode);
//mode="receive" || mode="record" isPush true, 。
if ( theMode.EqualIgnoreCase(sReceiveMode) || theMode.EqualIgnoreCase(sRecordMode) )
{
fTransportMode = qtssRTPTransportModeRecord;
break;
}
2. RTPSession Output 을 만 들 었 는 지 확인 합 니 다.
1.1) 없 으 며 UI 에서 보 내 온 표준 RTSP 클 라 이언 트 요청 이 라면
// ( );
RTPSessionOutput* theNewOutput = NEW RTPSessionOutput(inParams->inClientSession, theSession, sServerPrefs, sStreamCookieAttr );
theSession->AddOutput(theNewOutput,true);
// RTPSessionOutput ,key = sOutputAttr;
(void)QTSS_SetValue(inParams->inClientSession, sOutputAttr, 0, &theNewOutput, sizeof(theNewOutput));
1.2) 만약 isPush = true, Announce 가 흐 르 는 SETUP 소식 을 대표 한다 면,/*
Announce qtssRTSPReqLocalPath sdp , DoSessionSetup ReflectorSession<span style="font-family: Arial, Helvetica, sans-serif;"> </span><span style="font-family: Arial, Helvetica, sans-serif;"> </span>
*/
theSession = DoSessionSetup(inParams, qtssRTSPReqFilePathTrunc,isPush,&foundSession);
2) 출력 세 션 이 이미 존재 한다 면 직접 호출 합 니 다.
3. track ID 분석 후 이 track id 에 따라 흐 르 는 정 보 를 가 져 옵 니 다.
char* theDigitStr = NULL;
(void)QTSS_GetValueAsString(inParams->inRTSPRequest, qtssRTSPReqFileDigit, 0, &theDigitStr);
QTSSCharArrayDeleter theDigitStrDeleter(theDigitStr);
4. 푸 시 모드 라면:
//
theStreamInfo->fSetupToReceive = true;
// This is an incoming data session. Set the Reflector Session in the ClientSession
// RTPSession sClientBroadcastSessionAttr
theErr = QTSS_SetValue(inParams->inClientSession, sClientBroadcastSessionAttr, 0, &theSession, sizeof(theSession));
Assert(theErr == QTSS_NoErr);
// ReflectorSession fBroadcasterSession inParams->inClientSession
if (theSession != NULL)
theSession->AddBroadcasterClientSession(inParams);
[전재 출처 밝 혀 주세요]:http://blog.csdn.net/longlong530
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
docker-compose로 심포니 5 환경을 만들려고했습니다.저는 공부용으로 한 것입니다. 실수 등 있으면 가르쳐 주시면 감사합니다. ↓이쪽에도 설정을 준비했습니다 docker-compose.yml default.conf Dockerfile symfony 버전을 지정하려면 c...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.