live555 server分析

本文详细介绍了如何使用Live555库搭建RTSP服务器,包括环境配置、权限设置、服务器创建、媒体会话及子会话管理等步骤。

  main函数一开始:
 (1)建立使用环境:
scheduler = BasicTaskScheduler::createNew();//default 10000ms,也就是live555扫描事件队列的间隔值。
userEnv = BasicUsageEnvironment::createNew(*scheduler);//建立基本的使用环境。
(2)权限设置
利用代码
UserAuthenticationDatabase*authDB=NULL;authDB=newUserAuthenticationDatabase;
   authDB->addUserRecord("username1","password1");实现权限控制,可以阻止没有权限的用户进行点播。没有权限控制需要的可以省略此部分。播放端该怎么进入帐号密码呢?
(3)建立RTSP服务器
利用代码RTSPServer*rtspServer=RTSPServer::createNew(*env,8554,authDB);建立RTSP服务器,该服务器完成与客户端的交互,实现客户端的VCR操作,即在客户端完成对当前节目的播放、暂停、倒退、快进等操作。8554是RTSP服务器的端口,也可以改为其它未被占用的端口,服务器的IP地址不用特别设定,它是运行点播服务程序的计算机的IP地址。该服务器只创建一次,一个服务器响应所有的点播用户。
(4)创建服务器媒体会话
通过创建ServerMediaSession类的对象来创建服务器媒体会话,不同的文体各自对应一个服务器媒体会话。一个媒体会话对应一个流名字(streamName)。当客户点播时,要输入流名字,告诉RTSP服务器点播的是哪个流。流名字和文件名的对应关系是通过增加子会话建立起来的。媒体会话对会话描述、会话持续时间、流名字等与会话有关的信息进行管理。
(5)增加子会话
     给已经创建的服务器媒体会话增加子会话,子会话可以是视频子会话,也可以是声音会话,或者两者都有。增加子会话通过ServerMediaSession类的addSubsession方法来实现。子会话的功能包括开始流、暂停流和删除流等诸多操作。
(6)执行循环方法
       通过代码env->taskScheduler().doEventLoop();来执行循环方法,对套接字的读取事件和对媒体文件的延时发送操作都在这个循环中完成。

### Live555服务器源码详解 Live555 是一款开源的流媒体服务器软件,支持多种多媒体协议如 RTSP、RTP 和 SIP。其设计目标是为了简化实时音视频数据在网络上的传输。 #### 1. 主要模块结构 Live555 的架构由多个核心组件构成: - **Basic Usage Environment (UsageEnvironment)**: 提供基本的操作环境设置功能[^5]。 - **Groupsock**: 负责处理组播套接字通信,允许向多个接收者发送相同的数据包[^5]。 - **Media Session Management (RTSPClient, RTPSink, etc.)**: 实现了会话管理机制以及媒体流的具体操作接口[^5]。 - **Device Drivers Interface**: 接口层用于连接不同的硬件设备驱动程序,从而获取实际的音频或视频输入信号[^5]。 ```cpp // 示例:创建一个新的 RTSP 客户端对象 RTSPClient* rtspClient = RTSPClient::createNew(usageEnvironment); ``` #### 2. 关键类介绍 以下是几个重要的 C++ 类定义及其作用说明: - `UsageEnvironment`: 封装了一个执行上下文的信息集合,包括错误报告函数指针等成员变量[^5]。 - `TaskScheduler`: 继承自 `EventLoop` 并实现了任务调度器的功能,可以用来安排定时事件或其他异步调用[^5]。 - `Medium`: 抽象基类,表示任何类型的 I/O 设备;派生出了具体的子类来代表不同种类的资源实体,比如文件句柄或是网络连接[^5]。 - `Source`: 表示一个可读取数据的对象,通常对应于某种形式的内容提供方(例如摄像头捕捉到的画面帧序列),它通过继承此接口实现自身的读写逻辑[^5]。 #### 3. 流程分析 当启动 live555 服务时,主要经历以下几个阶段的工作流程: 1. 初始化全局配置参数并建立必要的基础设施; 2. 解析命令行选项以确定运行模式和其他用户指定的行为偏好; 3. 构建特定的应用场景实例化相应的业务处理器; 4. 进入主循环等待外部请求的到来直至收到终止指令为止。 对于开发者来说,在深入理解上述概念的基础上进一步探索具体应用场景下的编码实践是非常有帮助的。官方文档和社区论坛也是不可多得的学习资料来源之一。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值