浅析live555媒体库之工作流程介绍

live555项目的源代码包括四个基本的库,各种测试代码以及Media Server。

工作模块

四个基本的库分别是: UsageEnvironment  TaskScheduler, groupsock, liveMedia和BasicUsageEnvironment。

官网英文的基本介绍截图如下:

虽是英文的,但是难度不大,能看懂大致意思。这里多说一句,程序员还是要接触并学习英文,毕竟好的技术都是国外引进的。简单说下我的理解

UsageEnvironment  

该类库是对系统环境的抽象,包括UsageEnvironment 和TaskScheduler。UsageEnvironment  主要用于消息的输入输出和用户功能,TaskScheduler实现事件的异步处理,事件处理函数的注册等。它通过维护一个异步读取源实现如消息到达等事件的处理,通过使用DelayQueue实现其他注册函数的延时调度。另外,还有一个HashTable类定义了一个通用的hash表,其它代码要用 到这个表。我们在使用时可以自定义该类的抽象类的子类,就可以再特定的环境下运行如嵌入式或者GUI等。不需要进行太多的修改。

groupsock

该类是对网络接口的封装,用于收发数据包。groupsock主要是面向多播数据的收发,它也同时支持单播数据的接收。

liveMedia

该类是live555的核心模块,各种媒体的封装和数据的发送。其中基类为Medium,其他的类都派生自该类。如MediaSession,RTP会话类,一个 session又可以包含多个subsession。还有比较重要的两个派生类Source和Sink,Source抽象了需要发送的数据,Sink则抽象数据的发送者,数据的流动可以经过多个source和sink,两者又通过session联系在一起。我们在开发的过程中,可以通过继承这些类,实现自己需要的相关功能。

BasicUsageEnvironment

该类主要针对简单控制台的应用程序,利用select实现事件的获取和处理。

工作流程

live555首先会创建一个RTSP服务(具体的实现可以参看mediaServer里的服务)。在服务创建过程中,会先调用setUpOurSocket建立tcp的连接,并监听对应传入的port,用于等待client请求的rtsp协议的交互,然后会把连接处理句柄已经socket句柄都传入TaskScheduler当中,等待事件触发。

简单并查看网上的一些网友的总结,画了一个UML图分享一下:

live555中有几个比较重要的类,在二次开发使用live555过程中,需要继承其中比较重要的几个类,如mediaSubsession,FramedSource等。在下手之前,则需要先理清楚其类的继承关系,我依照官网中的类图,把几个比较重要的类分离出来来,画出UML如下:

大致几个重要的类图关系就是这样的一个流程。后面文章继续分享如何继承自己的子类来实现的文件读取和实时流的播放等功能。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-21 11:10:35

浅析live555媒体库之工作流程介绍的相关文章

浅析live555媒体库之实现实时码流预览

前面已经介绍了,通过live555来实现媒体文件的播放.这篇主要和大家说一下实时流的通过live555的播放. 相对之前的文件流,这里实时流只需要多实现一个子类:通过继承RTSPServer类来实现一些自己的相关操作. 如:有客户端请求过来的时候,需要先通过lookupServerMediaSession找到对应的session,这里可以定义自己的streamName,也就是url后面按个串,.如果没有找到,则新建生成自己需要的不同的session,还有填充自己的SDP信息等等操作. 继承RTS

浅析live555媒体库之入门编译使用

简介 Live555 是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议如RTP/RTCP.RTSP.SIP等的支持.Live555实现了对多种音视频编码格式的音视频数据的流化.接收和处理等支持,包括MPEG.H.263+.DV.JPEG视频和多种音频编码.同时由于良好的设计,Live555非常容易扩展对其他格式的支持. 主要分支 live555主要包括四个比较重要的库,分别为 UsageE

Storm 中什么是-acker,acker工作流程介绍

概述 我们知道storm一个很重要的特性是它能够保证你发出的每条消息都会被完整处理, 完整处理的意思是指: 一个tuple被完全处理的意思是: 这个tuple以及由这个tuple所导致的所有的tuple都被成功处理.而一个tuple会被认为处理失败了如果这个消息在timeout所指定的时间内没有成功处理. 也就是说对于任何一个spout-tuple以及它的所有子孙到底处理成功失败与否我们都会得到通知.关于如果做到这一点的原理,可以看看Twitter Storm如何保证消息不丢失这篇文章.从那篇文

工作流程介绍

欢迎您加入2014第一诚信兼职网(我们承接的是全球各大刷信誉平台任务)任务随机发配! 兼职人员工作流程以及常见问题,请认真看完! 郑重声明: 凡是收取任何押金,向你索要账号密码的类似项目,都是骗人的!虽然我们对业务员的要求比较高,但加入本项目我们绝不收取任何押金,更不会向你索要任何密码. 据统计,每天有5万人在网上开店,网店数量已经突破百万大关!一个没有信誉的网店,生意绝对不可能好起来!所以越来越多的卖家开始刷信誉,这也就催生网店刷钻手这个行业.网店刷钻手的任务就是给卖家店铺刷信誉赚钱! ———

mybatis工作流程介绍

mybatis通过注解将statement配置起来,再通过java对象和statement中的sql生成待执行的sql,通过mybatis框架执行sql并将结果映射为java对象 mybatis架构图: 解释: 1.mybatis基本配置文件配置了mybatis运行环境信息,包含:数据连接池.数据库事务管理等,映射配置文件配置sql语句,要在基本配置文件中加载 2.通过mybatis环境配置文件构造会话工厂及SqlSessionFactory 3.通过SqlSessionFactory会话工厂创

爬取当当网的图书信息之工作流程介绍

前往http://book.dangdang.com/我们可以看到当当网上面的图书种类非常丰富 我们是计算机类图书为例子,那么计算机类图书页面的URL  http://book.dangdang.com/01.54.htm?ref=book-01-A是我们的种子URL 当我们进入这个页面可以看到很多计算机类图书,什么都别说了,都抓取下来,然后在进入子品类页面继续抓取信息,我们以程序涉及品类为例 进来之后我们可以看到大量的图书,而且在页面上方我们可以看到100页,可不止这么一点还有99页没有显示出

MapReduce与Yarn 的详细工作流程分析

MapReduce详细工作流程之Map阶段 如上图所示 首先有一个200M的待处理文件 切片:在客户端提交之前,根据参数配置,进行任务规划,将文件按128M每块进行切片 提交:提交可以提交到本地工作环境或者Yarn工作环境,本地只需要提交切片信息和xml配置文件,Yarn环境还需要提交jar包:本地环境一般只作为测试用 提交时会将每个任务封装为一个job交给Yarn来处理(详细见后边的Yarn工作流程介绍),计算出MapTask数量(等于切片数量),每个MapTask并行执行 MapTask中执

RDIFramework.NET ━ .NET快速信息化系统开发框架 ━ 工作流程组件介绍

RDIFramework.NET ━ .NET快速信息化系统开发框架 工作流程组件介绍 RDIFramework.NET,基于.NET的快速信息化系统开发.整合框架,给用户和开发者最佳的.Net框架部署方案. 1.RDIFramework.NET框架介绍 RDIFramework.NET,基于.NET的快速信息化系统开发.整合框架,为企业或个人在.NET环境下快速开发系统提供了强大的支持,开发人员不需要开发系统的基础功能和公共模块,框架自身提供了强大的函数库和开发包,开发人员只须集中精力专注于业

Android 4.4 Kitkat Phone工作流程浅析(六)__InCallActivity显示更新流程

本文来自http://blog.csdn.net/yihongyuelan 转载请务必注明出处 本文代码以MTK平台Android 4.4为分析对象,与Google原生AOSP有些许差异,请读者知悉. 前置文章: <Android 4.4 Kitkat Phone工作流程浅析(一)__概要和学习计划> <Android 4.4 Kitkat Phone工作流程浅析(二)__UI结构分析> <Android 4.4 Kitkat Phone工作流程浅析(三)__MO(去电)流程