live555移植到交叉编译并实现一个rtspserver。

1.根据网上步骤交叉编译出live555的库。

2.找到testOnDemandRTSPServer.cpp,以此作为main.cpp开发

3.适配思路,目标:实现摄像头的rtsp点播或者多播。默认是文件 作为流的源,现在要根据 实现自己的摄像头app来实现source。

详细:需要实现以下类:Framesouce -- 自带基本的源的操作函数, 需要实现doGetNextFrame这个虚函数。
MediaServerSubSession --用来绑定 Source and Sink

具体流程:
————————————————
1,编写类:LiveServerMediaSubsession: public OnDemandServerMediaSubsession
2,对于H264编码而言,我们可以把H264VideoFileServerMediaSubsession原样抄过来,在其基础上修改
3,去掉无用的参数,重写createNewStreamSource。里面换成一个新类:FrameLiveSource做输入Source
4,编写类:FramedLiveSource: public FramedSource
5,有几个函数需要完成:
1)maxFrameSize,最大帧的大小。
2)doGetNextFrame(); 关键函数,负责获取数据。核心代码如下:
memcpy(fTo, buffer, len);
gettimeofday(&fPresentationTime, NULL);
fFrameSize = len;
nextTask() = envir().taskScheduler().scheduleDelayedTask(0,
(TaskFunc*)FramedSource::afterGetting, this);
3)isH264VideoStreamFramer。当数据准备好时,该函数返回True
6,后面就简单了,只要把doGetNextFrame和正常的实时视频数据联系起来,一切就解决了。
————————————————

原文链接:https://blog.csdn.net/taixinlfx/article/details/8854440

posted @ 2025-12-24 00:44  lostkk  阅读(2)  评论(0)    收藏  举报