开源项目live555接收rtsp视频流总结
来源:互联网 发布:深度睡眠 食物 知乎 编辑:程序博客网 时间:2024/06/04 17:59
最近因项目开发需要,开始学习开源项目live555,特别将个人的一些学习心得做一下记录,如有理解不正确之处,欢迎各位朋友指出。
首先是源码的下载,这可以从http://www.live555.com上下载,同时上面亦提供了相关的文档,文档虽较为粗糙,但总比找不到任何文档说明强。当然,我在学习的过程中,也从网上查找了一段时间,收获还是有一点的,其中就有诸如:RTSP服务器实例live555源代码分析、live555源代码简介、live555代码解读系列、基于live555的rtp-rtcp研究等文章。
我的学习是在VS2008环境下进行的,要能够在VS环境下顺利进行,还得做相关工作。live开源虽说是用C++写的,代码风格也非常优秀,但是其是用makefile文件来做的,而对未接触过makefile文件的我是一个问题。幸运的是在网上偶然发现了一篇介绍在VC6环境下编译live的文章,然后照着上面所说的做,磕磕碰碰,编译成功了四个库并转移到了VS2008环境中。更幸运的是又是偶然在网上发现了一篇介绍用VS2008编译live的文章并提供了编译后的工程下载,download,然后就开始了相对漫长的学习过程。
从程序的结构来看,live项目包括了四个基本库、程序入口类(在mediaServer中)和一些测试代码(在testProgs中)。四个基本库是UsageEnvironment、BasicUsageEnvironment、groupsock和liveMedia。
UsageEnvironment包括抽象类UsageEnvironment和抽象类TaskScheduler,这两个类用于事件调度,其中包括实现了对事件的异步读取、对事件句柄的设置及对错误信息的输出等;该库中还有一个HashTable,这是一个通用的HashTable,在整个项目中都可以使用它,当然该HashTable也是一个抽象类。
BasicUsageEnvironment中的类主要是对UsageEnvironment中对应类的实现。
groupsock,顾名思义,用于数据包的接收和发送,其同时支持多播和单播。groupsock库中包括了GroupEId、Groupsock、GroupsockHelper、NetAddress、NetInterface等类,其中Groupsock类有两个构造函数,一个是“for a source-independent multicast group”,另一个是“for a source-specific multicast group”;而GroupsockHelper类主要用于读写Socket。
liveMedia是很重要的一个库,其不仅包含了实现RTSP Server的类,还包含了针对不同流媒体类型(如TS流、PS流等)编码的类。在该库中,基类是Medium,层次关系非常清晰。在该库中,有几个很重要的类,如RTSPServer、ServerMediaSession、RTPSink、RTPInterface、FramedSource等。
在http://www.live555.com上的相关文档中提到穿透防火墙的问题,方法是开启一个HTTP的tunnel,然后我们可以在liveMedia库中找到一个RTSPOverHTTPServer的类,该类解决了这样的问题。
mediaServer下的live555MediaServer提供了main函数,DynamicRTSPServer继承了RTSPServer并重写了虚函数lookupServerMediaSession。
整个项目的程序结构大体上就是这样,至于其中的一些具体实现细节,还需要进一步学习研究
- 开源项目live555接收rtsp视频流总结
- live555 接收rtsp视频流详细源码流程详细解析
- live555 接收rtsp视频流详细源码流程详细解析
- live555 接收rtsp视频流流程分析
- live555 接收rtsp视频流流程分析
- live555 接收rtsp视频流流程分析
- Live555教程------live555 接收rtsp视频流详细源码流程详细解析(二)
- Live555库和视频RTSP流解析
- live555接收实时视频流+ffmpeg解
- opencv3接收rtsp网络视频流
- 基于live555实现rtsp视频直播
- 基于live555实现rtsp视频直播
- 使用live555 VLC发送接收视频TS流
- 使用live555 VLC发送接收视频TS流
- 【视频开发】【Live555】live555实现h264码流RTSP传输
- 【视频开发】【Live555】通过live555实现H264 RTSP直播
- Qt基于ffmpeg的rtsp视频流接收播放工具
- 基于live555的rtsp客户端接收及ffmpeg解码
- 怀胎的历程及注意事项
- SetEnable对于ServerProtocol“Tcp”失败。(Microsoft.SqlServer.Smo)Access denied(System.Management)
- 怎么设置对话框的systemmenu
- reportViewer To printDocument Print (Single_Page)
- [Firefox][扩展系列][02]向Firefox说声HelloWorld
- 开源项目live555接收rtsp视频流总结
- 在C#中创建sql的存储过程方法之一
- 网站漏洞扫描工具 webvulnscan破解版
- Android开发者应该深入学习的10个开源应用项目
- Android 中Goolgle 相关服务的移植
- 回调函数的一些总结
- SQl的dateadd函数与getDate()函数
- camera 模块知识
- sql表查询某一字段为空的记录的问题