Live555学习

来源:互联网 发布:网络机顶盒看视频软件 编辑:程序博客网 时间:2024/04/28 18:13

       过段时间又要上新项目,在板子上加个RTSP服务器,支持实时视频流播放。这两天一直在看Live555的源码,默认只能编译成静态库,自己修改了下搞成了动态库。虽然花了点时间,但是对了解Live555的结构是有好处的,编译一通不过就知道哪些模块相互关联了,呵呵。

      关于Live555的分析,有前辈已经写了文章了,地址是http://blog.csdn.net/nkmnkm/article/category/1066093/1。有用的是最后几篇。想要改造Live555就只要改写source就行了。live555不支持多线程,所以写source的时候不要搞多线程,绝对会挂。

      我们面临的项目是从板子上取实时流,但是live555内实现的服务器都是文件服务器,所以有必要增加源码,主要是增加一个从设备读取数据的source,以及一个mediaSubSession.今天听同事说,在live555源码中有从音频设备获取数据的source的示例,想来可以借鉴一番。

      最复杂的是TaskScheduler+虚函数+回调的数据和请求处理流程,这里还没有探索清楚,暂且记下,还需继续深入:)

     ####新增加####

     这两天看了一下wis-streamer,是一个从摄像头获取音频和视频实时streamer的程序,也是在Live555上面。不过程序里是软编码之后作为mjpeg发出来的,说白了就是连续的jpeg图像。好在我们的项目可以硬编码。摄像头的驱动比较重要,有了驱动,设备在live555下面就可以像文件一样open,close,我们要做的修改也就只是需要更改下驱动名称以及修改下获取数据的命令。

     昨天和今天都看了一下几个http服务器的代码,发现大部分工作都集中在跨平台的移植上,而且也都做得比较完整了。所以以后要做跨平台的工作的话,还是先参考一下现有的工作,像apache里的apr库,还有nginx。对网络,IO,内存映射,线程都做了跨平台封装,以后用C语言代码,能用则用。感觉现在核心程序开发工作应该是两类,一类是搞算法,搞核心模块的,另一类是搞设计,搞架构的,整合现有资源,生产出一个叫软件的产品。在目前国内的环境下,大部分程序猿无缘第一类工作,但是第二类工作,还是可以做好的,而且我个人觉得,产品是比技术更重要的!!!