基于JMF RTP的网络传输媒体流 - 编程入门网
基于JMF RTP的网络传输媒体流时间:2011-02-27 zhangjunhdJMF中可以实现RTP媒体流的回放(playback)和传输(transmission),主要由javax.media.rtp, javax.media.rtp.event,和javax.media.rtp.rtcp包中定义的API完成。JMF可以通过标准的JMF plug-in机制来实现支持特定的RTP格式和动态负载。 你可以在本地播放RTP数据流,或将其存储到本地文件。 同样,你可以通过JMF中RTP API实现传输捕获的或存储的媒体流到网上。RTP媒体流可以创建自一个本地文件或捕获自媒体采集设备。这些RTP媒体流同样可以在本地播放或存储。 整体流程图示: 基于JMF RTP的网络传输媒体流(2)时间:2011-02-27 zhangjunhd1.RTP结构 1.1 SessionManager 在JMF架构中Session Manager对程序之间的会话进程进行控制和管理。Session Manager主要作用: ①明确每一个会话(session)中的所有参与者(participants)。 ②管理每一个RTP会话。 ③保存来自每一个发送或接收到的RTP和RTCP包中的统计信息。 JMF RTP Session结构图: SessionManagr包含2个部分:Session Statistics和Session Streams。 1.1.1Session Statistics 统计量(Statistics)是记录基于每一条媒体流上的整个会话的统计信息。它包含: ①GobalReceptionStats:包含此会话的全局接收统计信息。 ②GobalTransmissionStats:包含此会话的全局传输统计信息。 ③RecetionStats:包含每一个参与者接收统计信息。 ④TransmissionStats:包含每一个参与者的传输统计信息。 1.1.2Session Streams ①ReceiveStream:表示一个接收到的来自远端参与者的媒体流。 ②SendStream:表示一个来自本地的媒体流。 基于JMF RTP的网络传输媒体流(3)时间:2011-02-27 zhangjunhd1.2 RTP事件 如下图所示,通过继承JMF中MediaEvent的类,可以创建响应的RTP事件。 ⑴SessionListener:通过它得到一个会话状态的改变。 ①NewParticipantEvent:表示一个新的参与者加入会话。 ②LocalCollisionEvent:表示参与者请求的同步资源正在使用。 ⑵SendStreamListener:通过它得到一个正在传送的RTP数据流状态的改变。 ①NewSendStreamEvent:表示本地参与者已经创建一个新的发送数据流。 ②ActiveSendStreamEvent:表示从DataSource创建的数据流已经开始发送。 ③InactiveSendStreamEvent:表示从本地DataSource创建的数据流已经停止。 ④LocalPayloadChangeEvent:表示数据流格式已经开始改变。 ⑤StreamClosedEvent:表示数据流已经停止。 ⑶ReceiveStreamListener:通过它得到一个正在接收的RTP数据流状态的改变。 ①NewReceiveStreamEvent:表示SessionManager已经创建了一个从新的侦测到的地址传来的接收数据流。 ②ActiveReceiveStreamEvent: 表示数据的传送已经开始。 ③InactiveReceiveStreamEvent:表示数据的传送已经停止。 ④TimeoutEvent:表示数据传送超时。 ⑤RemotePayloadChangeEvent:表示接收到的数据流格式已经改变。 ⑥ApplicationEvent:表示收到了一个RTCP App数据包。 ⑷RemoteListener:通过它得到远端会话参与者的时间或RTP控制信息。 ①ReceiverReportEvent:表示接收到一个RTCP的RR包。 ②SenderReportEvent:表示收到一个RTCP的SR包。 ③RemoteCollisionEvent:表示两个远端的参与者使用了相同的SSRC 出错。 1.3与RTP事件相对应的RTCP类型表 RTCP的控制类型和JMF事件类的一致性
|
||||||||||||
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |