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();来执行循环方法,对套接字的读取事件和对媒体文件的延时发送操作都在这个循环中完成。
(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();来执行循环方法,对套接字的读取事件和对媒体文件的延时发送操作都在这个循环中完成。