live555类图

//补充一张完整的关系图

分析testOnDemandRTSPServer.cpp,以test.264文件作为输入源,发布rtsp。
区分不同的输入,是h264还是aac等,即在 sms->addSubsession(H264VideoFileServerMediaSubsession ::createNew(*env, inputFileName, reuseFirstSource));   创建的H264VideoFileServerMediaSubsession. 不同的ServerMediaSubsession 需要实现ServerMediaSubsession要求的的两个纯虚函数:
1.0 virtual FramedSource* createNewStreamSource(unsigned clientSessionId,
                          unsigned& estBitrate);
 2.0 virtual RTPSink* createNewRTPSink(Groupsock* rtpGroupsock,
                                    unsigned char rtpPayloadTypeIfDynamic,
                    FramedSource* inputSource);
服务端会调用子类的这两个函数,以创建 输入源 FramedSrouce  和输出端 RTPSink.  所以不同的ServerMediaSubsession都有特定的FramedSource和RTPSink的实现.
H264VideoFileServerMediaSubsession, 使用的FramedSrouce  为一个 H264VideoStreamFramer (类似于滤镜,这种FramedSrource同时有输入端口和输出端口,其输入为 ByteStreamFileSource ,即test.264字节流文件源。该”滤镜“的作用,就是从字节流中解析出h264 NAL 单元。)输出端,即H264VideoRTPSink


发布了96 篇原创文章 · 获赞 27 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/u012459903/article/details/102936752
今日推荐