live555源码分析系列
live555源码分析(七)播放过程
本文衔接上文,分析播放过程,涉及音视频数据如何获取、如何处理以及如何发送
上一篇文章我们分析到StreamState::startPlaying函数,本文从这里开始分析,其定义如下
void StreamState
::startPlaying(Destinations* dests, unsigned clientSessionId,
TaskFunc* rtcpRRHandler, void* rtcpRRHandlerClientData,
ServerRequestAlternativeByteHandler* serverRequestAlternativeByteHandler,
void* serverRequestAlternativeByteHandlerClientData) {
/* 将目的添加到消费者中 */
if (dests->isTCP) { //TCP
fRTPSink->addStreamSocket(dests->tcpSocketNum, dests->rtpChannelId);
fRTCPInstance->addStreamSocket(dests->tcpSocketNum, dests->rtcpChannelId);
} else { //UDP
fRTPgs->addDestination(dests->addr, dests->rtpPort, clientSessionId);
fRTCPgs->addDestination(dests->addr, dests->rtcpPort, clientSessionId);
}
/* 开始播放 */
fRTPSink->startPlaying(*fMediaSource, afterPlayingStreamState, this);
}
从上面可以看到,会将目的添加到RTPSink中,然后调用RTPSink开始播放,并指定好它的源为fMediaSource
在我们live555源码分析(四)RTSPServer分析中实现的这个例子中
RTPSink是这样产生的
4247


播放过程&spm=1001.2101.3001.11974&articleId=100746999&d=1&t=3&u=f0e5ac7abcf348b08d0d0c1e99b9b91c)

被折叠的 条评论
为什么被折叠?



