基于live555的视频直播 DM368IPNC RTSP分析
来源:互联网 发布:淘宝选车牌号靠谱吗 编辑:程序博客网 时间:2024/06/03 01:50
原文转自:http://blog.csdn.net/ghostyu/article/details/7485537
本文是 我对TI DM368IPNC RTSP直播部分的代码分析。
appro IPNC视频流直播部分用的RTSP,基于live555,通过改写wis-streamer实现的,在live555官网上有wis-streamer的代码下载,appro将其修改,在framedsource中加入了GetAVData接口,这样ipnc就可以直播了。
感慨:C++ 真的太好用了
现在懒了,文字部分就直接复制出来,源文档使用的是excel,
文档下载地址:http://www.kuaipan.cn/file/id_48923272389066806.html (转载注:页面打不开)
基于live555的视频直播 DM368IPNC RTSP分析
一、描述
appro利用live555实现了三种视频流以及一种音频流的直播
1、MJPEG Video
2、H264 Video
3、MPEG4 Video
4、PCM Audio
live555是一个开源的RTSP C++类库,默认实现音视频文件的点播,但是可以通过继承相关类,重写相关方法实现视频直播
live555提供的实现直播的通用步骤是:
截图来自之前的《live555分析与开发.xlsx》
appro也是按照此种方法实现
二、Appro的添加的live555源文件
之所以文件复杂,是由于实现了多种音视频流,如果只留其一,源文件将非常简洁
下图是appro源码的UML类图 (转载注:原图也没有)
APPROInput类 类似于设计模式中的简单工厂模式,用于创建具体的FramedSource,对于WISServerMediaSubsession类来说,处理FramedSource的接口是相同的,
但是对于FramedSource来说,VideoSource与AudioSource的具体的帧获取是不同的,
这样,就需要利用APPROInput来分别创建VideoSource和AudioSource。
类APPROInput的videoSource()方法 返回VideoOpenFileSource类的实例
类APPROInput的audioSource()方法 返回AudioOpenFileSource类的实例
三、重要的FramedSource
FramedSource类的doGetNextFrame()方法用于获得音视频的帧数据,子类需要实现这个方法
OpenFileSource中的incomingDataHandler1,调用了虚函数readFromFile,这个函数与底层相关,
所有由OpenFileSource的子类 VideoOpenFIleSource和AudioOpenFileSource类实现
在appro的ipnc中,不管是视频还是音频数据,均是通过GetAVData()函数来获得,
所以VideoOpenFileSource类和AudioOpenFIleSource类的readFromFile方法中封装了GetAVData()这个函数。
具体获得哪种类型的数据是由类OpenFileSource中的属性APPROInput &fInput来传递的
在main函数中有关FramedSource操作的所有代码如下图,以H264为例 (转载注:原图也没有)
启示:在移植appro的live555到高清相机中,我认为最好的方法就是按照IPNC的GetAVData()函数结构,
封装高清相机的GetAVData()函数,高层的live555RTSP部分可不做任何改动
四、RTSP直播 main主程序
这与普通的live555 rtsp service结构并无太多区别,只是由于要传输的视频类型较多,所以多了很多if else,这部分比较简单,不作分析。
appro也是按照此种方法实现
- 基于live555的视频直播 DM368IPNC RTSP分析
- 基于live555的视频直播 DM368IPNC RTSP分析
- 基于live555的视频直播 DM368IPNC RTSP分析
- 基于live555的视频直播 DM368IPNC RTSP分析【转】
- Appro-RTSP详细结构分析——基于live555的视频直播
- [live555]rtsp直播基于live555的实现
- [live555]rtsp直播基于live555的实现
- 基于live555实现rtsp视频直播
- 基于live555实现rtsp视频直播
- 基于live555的视频直播
- 基于live555的视频直播
- 基于live555的实时视频直播
- 基于Live555,ffmpeg的RTSP播放器直播与点播
- 【视频开发】【Live555】通过live555实现H264 RTSP直播
- LIVE555再学习 -- live555实现RTSP直播服务器 分析
- 分享基于Live555开发的 H264视频直播流媒体项目
- 基于内存块的Live555视频直播框架
- live555 接收rtsp视频流流程分析
- 排名
- Software defined storage
- DrawerLayout打开和关闭时禁止刷新ActionBar
- 判断三角形类型
- opengl解引用数组出错
- 基于live555的视频直播 DM368IPNC RTSP分析
- 开机后将sim/uim卡上的联系人写入数据库
- 百鸡问题
- Service kill 掉之后有重新restart
- 深度学习:推进人工智能的梦想
- 七.ORACLE数据库中的序列,同义词,索引等对象
- Thinking in C++: C++中关于union、struct、class的区别
- 如何成为一名优秀的前端工程师 (copy) - 段华建
- redis.conf 配置详解