基于live555的视频直播 DM368IPNC RTSP分析
因需要,从个人的理解顺序和需求角度对live555的分析与开发整理,包含RTSP Server与RTSP Client、如何直播H.264流与JPEG流等,均进行了探讨,对live555的初学者有一定的指导意义。
本人习惯使用excel归档,所以本文均为excel的截图,源文件可以再资源中下载。








基于live555的视频直播 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分析的更多相关文章
- iOS平台基于ffmpeg的视频直播技术揭秘
现在非常流行直播,相信很多人都跟我一样十分好奇这个技术是如何实现的,正好最近在做一个ffmpeg的项目,发现这个工具很容易就可以做直播,下面来给大家分享下技术要点: 首先你得编译出ffmpeg运行所需 ...
- 基于Flink的视频直播案例(上)
目录 数据产生 Logstash部分 Kafka部分 Flink部分 配置/准备代码 视频核心指标监控 本案例参考自阿里云的视频直播解决方案之视频核心指标监控和视频直播解决方案之直播数字化运营. 基于 ...
- 视频直播APP开发分析
视频直播APP开发到目前为止都还是热门的一个行业,而且发展到现在直播的种类非常多,很多行业都打入了直播行业,再也不是单纯的人物直播这么单一了.视频直播APP开发行业就像是吃螃蟹,来的早的人不懂如何吃, ...
- 在Windows下搭建基于nginx的视频直播和点播系统
http://my.oschina.net/gaga/blog/478480 一.软件准备 由于nginx原生是为linux服务的,因此官方并没有编译好的windows版本可以下载,要在windows ...
- EasyPusher:基于live555的DarwinInjector实现的RTSP直播推送程序
先简单介绍一下EasyPusher的功能,后面再对具体内部架构做介绍: EasyPusher:https://github.com/EasyDarwin/EasyPusher EasyPusher是什 ...
- 基于Red5的视频直播平台
搭建环境:Win2008 server + jdk1.8+red5-server-1.0.6 下载地址:https://github.com/Red5 修改启动配置文件(修改为jdk路径): 安装模版 ...
- 基于Flink的视频直播案例(下)
目录 直播数字化运营 结果写入Elasticsearch 第二种思路 Flink实现总结 Elasticsearch部分 Kibana部分 直播数字化运营 业务目标 全站观看直播总人数以及走势 房间直 ...
- 基于Live555,ffmpeg的RTSP播放器直播与点播
基于Live555,ffmpeg的RTSP播放器直播与点播 多路RTSP高清视频播放器下载地址:http://download.csdn.net/detail/u011352914/6604437多路 ...
- 基于HLS(HTTP Live Streaming)的视频直播分析与实现
转自:http://www.cnblogs.com/haibindev/archive/2013/01/30/2880764.html HLS(HTTP Live Streaming)的分析: HTT ...
随机推荐
- MVC4数据访问EF查询linq语句的时候报错找不到表名问题
一天做项目的时候遇到这样的问题,MVC4用EF访问数据查询用linq语句的时候报错找不到表名:报错如下图: 研究了几种情况,最后还是没有找到正真的问题所在,不过可能是和路由解析问题有关,暂时还没有进行 ...
- N!水题
//题目是求N!的问题,思路:设定一个整形数组来存放每次计算过后的值 有两个for循环,第一个for循环每次加进一个数 然后在第二个for循环里面计算出此时的阶乘,比如9999,先给出i=2 在第二个 ...
- HTML5文件加载进度管理
/** * 文件加载进度管理 */ DownloadUtils = function(options){ options = options || {}; this.init(options); }; ...
- 修改登录linux之后显示的默认文件夹目录
命令如下: ll -a vim .bash_profile 最后一行加上cd 需要显示的文件夹
- expected function body after function declarator
我出现这个错误是在pch中添加了一个a.h文件 然后在其他文件的b.h文件中就出现这个错误.. 后来排查出原因是: 在pch中, 这个a.h文件在b.h文件之后, 所以在b.h中使用的时候就会报错
- geotools导入shp文件到Oracle数据库时表名带下划线的问题解决
问题: 最近在做利用geotools导入shp文件到Oracle表中,发现一个问题Oracle表名带下划线时导入失败,问题代码行: dsOracle.getFeatureWriterAppend(or ...
- UVA11538Chess Queen(组合数学推公式)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud 题目意思:在n*m的棋盘中放置两个不同的皇后,使得两者能够相互攻击,共有多少种放置 ...
- html表格table设置边框
对于很多初学HTML的人来说,表格<table>是最常用的标签了,但对于表格边框的控制,很多初学者却不甚其解. 一般我们用表格的时候总会给它个border属性,比如:<table b ...
- -fembed-bitcode is not supported on versions of iOS prior to 6.0
-fembed-bitcode is not supported on versions of iOS prior to 6.0 说法二 错误提示 -fembed-bitcode is not s ...
- 转:redis windows下的环境搭建
原文来自于:http://www.2cto.com/os/201204/125971.html 下载地址:https://github.com/dmajkic/redis/downloads 下载 ...