rtsp流媒体地址址

宙视达数字矩阵行业领导者
宙视达新一代高清云数字矩阵及云存储服务器一体化解决方案!
咨询热线:400-
暂无相关信息
地址:深圳市龙华新区油松路泉森创业园A栋五楼
邮编:518000
&当前位置: -
24盘位流媒体存储服务器
产品名称:24盘位流媒体存储服务器
产品型号:JSD5300-72T
更新时间:
浏览次数:
产品简介& &JSD5000实时是系统环节中的级产品,技术的高低直接影响到网络视频众多效果的好坏,采用电信级专业技术,不仅解决了在网络视频里多个分控同时访问同一路视频时的“瓶颈”问题,而且做到对视频切换的实时性、流畅性的要求。在方面解决了应用于高清录像时使用寿命,磁盘碎片,磁头调度等方面水土不服的问题。结合多厂家兼容,功能,及报警广播等安防行业的专用功能,是一款安防行业的专业级,是中不可缺少的核心产品。产品功能特性& &采用全新的按盘轮巡策略,让不再支离破碎,采用大分区方式,分区满了就只能采用删除文件的方式,长时间录像后就会产生大量的磁盘碎片,删除文件及读写文件的速度都会不断缓慢下来。本产品采用按盘轮巡的方式,存满一个盘,就跳转下一个盘,所有硬盘存满后再格式化前面的盘,删除文件不再需要占用硬盘时间,同时完全解决了磁盘碎片问题,写入文件时一直处于理想状态,读取文件的速度也是最快的,因为一直只有一块盘在工作,而其余盘则处于休眠状态,延长了硬盘的使用寿命,同时也减少了电源的使用频率,使电源老化速度减慢,间接的稳定保护了硬盘供电,实现多重措施延长使用寿命。采用块状写入,让磁头不再东奔西跑& &1路高达8M码流,以太网上标准包大小为1500字节,HK等IPC厂家会发出4096字节大小的包,每秒256个包,64路则高达16384个数据包,如果采用传统的加IPSAN,收到一个包写入一次的话,就会在64个不同的位置让一块或多块磁盘来回奔跑1.6万次,磁头理论转速是7200转,相当于什么都不干,来回跑都不够速度。矩阵采用块状写入方式,一次写入128kbyte或256kbyte,就是每秒4-8次写入即可。这个技术优势不仅直接延长了使用寿命,而且也很大程度提升了并行输入路数,矩阵在IPSAN之后成为了真正在监控行业的替代性技术。行业独创的一键回看功能& &我们在实际的项目应用中发现,30秒之前的录像内容是最有效的,主要补充监控人员的反应意识有一定延迟的不足。及的录像回放功能受制于最小打包文件的限制,只能回放半个小时以前的录像。回放时要进入界面输入时间段选择视频等系列动作,并且将录像取回来才能进行回放,整个过程相对比较繁琐且费时,这就已经错过了这个操作需要的最佳时间。我们实现了录像回看功能,当发现刚才某个有什么异常,就能用以最快的方式切换到回看,并且可以持续到开始回看的时间点之后,确认后再通过矩阵键盘切换回实时视频,或是两个窗口实时与回看同时进行。72TB阵列功能,采用冗余录像,让文件衔接不再掉链子& &与一体化设计,支持计划录像、循环录像、移动帧测录像及录像回放功能。单机72TB,含24个3000G以内SATAII位。4-8秒冗余录像,给前后两个文件断线重连及跨天、跨月、跨年的关键时候上了双保险,确保不出现遗漏录像数据。一对多网络转发功能& 采用电信多媒体交换机的核心即实时流媒体(Realtime Stream)技术,实现了大容量网络视频数据的实时转发,突破了安防行业普遍采用的文件 (File Stream)高达四秒延时的局限,达到了电信级在600毫秒以内的行业要求标准,同时也实现了PTZ的一对多控制、报警信号的一对多广播。双网口网络负载平衡,多机联网全交叉矩阵切换功能& 采用标准的TCP/IP输入及输出,实现内外网的隔离及网络负载平衡,通过多个子网解决300路以上高清视频需要万兆核心交换机的问题。通过交换机进行全交叉矩阵切换,实现256 入256出(16屏),512入512出(32屏)等超。含IP路由以及网关功能,将前端IPC与后端访问网络相隔离,对监控网进行多片区物理切割。减少中央骨干网络的网络压力,减少网络风暴的出现,保证骨干的稳定性。
JSD5300-72T
LAN/Ethernet(RJ-45) 双1000M网口
单平台单设备组网;单平台多设备堆叠组网;多平台多级级联组网
电信级网络分组交换技术,分布式数据库管理,支持负载均衡
录像转发和
24盘位,单机最大可接24个3000G,单平台组网:100*1Mbps转发100路D1画质SATA阵列并发,72*2Mbps转发,72路画质RAID阵列并发
;48*3Mbps转发48路画质RAID阵列并发。
RAID0/ RAID1/ RAID5
网络适应性
具备多网口功能,可跨接不同网段
图像监控、转发、录像回放、音频通信、报警联动、移动侦测、电子地图等
权限管理、设备管理、日志管理、系统远程升级等
支持GB28181,ONVIF,RTP,RTSP,SDK等方式接入
支持PS、RTP、TS、ES等主流的封装格式
24个热插拔位
<90% (无凝结)
8%~90%(无结霜,无凝露)
900W冗余电源
RJ45 1000M以太网接口,TCP/IP协议
4U:660*430*178(mm)
流媒体存储服务器资料下载
Copyright 1999 ~ 2015
All rights reserved.
公司地址:深圳市龙华新区油松路泉森创业园A栋五楼&电话:8&传真:0&号-1
网站技术支持:
主要从事:深圳宙视达科技-高清数字矩阵行业领导者,市场占有率第一,专业提供9屏36路1080P解码高清矩阵,网络矩阵,高清解码矩阵,网络高清矩阵,网络数字矩阵今日论坛第 1 个签到,每日签到可得财富值+2,连续5天签到后再连续签到则每日可得财富值
+4,记得每天都来签到哦~
上一主题:
下一主题:
查看: 19098 | 回复: 197
授人以鱼不如授人以渔,手把手教你怎么提去流媒体直播地址
财富值 2750
交易信用 0
积分/帖子:746
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
状态: 离线
授人以鱼不如授人以渔,手把手教你怎么提去流媒体直播地址
首先讲一下怎么提取rtsp的流媒体吧
1.用UC浏览器打开一个手机电视网站,如3 g.js tv.c om(去掉空格)
2.选择直播,别的网站可能不同,当然是要找到看电视的页面
3.选择一个可以播放的免费台
4.将光标移动到播放的按钮上
5.选项-工具-页面属性,就可以看到有个链接url是以rtsp开头的了,这就是我们要找的流媒体地址,把它复制,然后新建一个ram文件就可以直接播放了,不用每次都进网站了
当然,不是所有的电视台都是免费的,你可以先把免费的全找出来,然后再根据规律把别的收费台推理出来,比如这里我们得到的地址是
从这里就可以看出,只要我们改下后面的tv然后加数字就可以得到别的台了
6.我能提取的台已经放出了,部分省的手机电视限地区的,我提不出来,希望有机油可以提出来
注意电脑播放的rtsp其实是mms的,手机不能播放
大家到各省的联通电信手机电视网站提取流媒体吧,当然我希望大家可以把提取出来的东西拿出来共享
下面讲一下怎么提取http的流媒体吧
1.安装一个嗅探器,如酷抓6,运行
2.打开看直播的网站
3.点击播放一个直播电视台
4.这是酷抓6会捕获一个flv的视频地址,这个地址就是该电视台的直播地址
5.把地址复制下来到你的手机里播放吧
个人经验,coreplayer只能播放http的flv格式的流媒体
另外没有流量的机油想提取的话,用电脑测试流媒体即可,本人亲测发现电脑安装potplayer后可以播放手机的rtsp和http流媒体
[ 本帖最后由 guyunlin1990 于
21:14 编辑 ]
&&下载次数: 295
和上面文本一样,只是有几个手机电视网站,希望有机油能够提取
评分次数:1 次 &人气值: +1 &&&&
我很赞同,不错,向你致敬
手机电视最强帖:
rtsp流媒体/thread--190-1.html
安卓手机电视/thread--354-1.html
财富值 2750
交易信用 0
积分/帖子:746
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
状态: 离线
惯例沙发,留楼更新
手机电视最强帖:
rtsp流媒体/thread--190-1.html
安卓手机电视/thread--354-1.html
财富值 441
交易信用 0
人气值 966
DOSPY中级评论员
中学生一枚
积分/帖子:16453
连续签到天数:1
全部签到天数:150
注册时间:
手机型号:
来自:广东省惠州市惠东县
状态: 离线
财富值 1898
交易信用 0
积分/帖子:1294
连续签到天数:55
全部签到天数:390
注册时间:
手机型号:
状态:在线
财富值 1909
交易信用 0
诺基亚的明天
积分/帖子:1889
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
E63→Lumia 900
状态: 离线
学习下。。。
财富值 3565
交易信用 0
积分/帖子:3241
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
来自:OPDA
状态: 离线
财富值 763
交易信用 0
积分/帖子:804
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
来自:头像2815
状态: 离线
岁月是把杀猪刀,
黑了木耳,
紫了葡萄,
软了香蕉 ! ! !
财富值 867
交易信用 0
积分/帖子:1073
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
6730c→HTC One S
状态: 离线
财富值 1812
交易信用 0
积分/帖子:2242
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
状态: 离线
流量有限,只能无缘此帖了
财富值 3754
交易信用 0
积分/帖子:4481
连续签到天数:1
全部签到天数:38
注册时间:
手机型号:
honor6,小米2,黑莓9000,n8
来自:厦门
状态: 离线
财富值 822
交易信用 0
积分/帖子:946
连续签到天数:1
全部签到天数:15
注册时间:
手机型号:
诺基亚e5-00
状态: 离线
需要的就是这个,技术最主要
手机续航是王道
财富值 2727
交易信用 0
积分/帖子:2156
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
状态: 离线
感谢楼主分享!
UID 7213997
交易信用 0
积分/帖子:151
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
状态: 离线
顶一下,,
财富值 625
交易信用 0
积分/帖子:779
连续签到天数:1
全部签到天数:1
注册时间:
手机型号:
状态: 离线
多谢分享,跟楼主学习了。
财富值 1495
交易信用 0
积分/帖子:1870
连续签到天数:1
全部签到天数:2
注册时间:
手机型号:
来自:四川 达州
状态: 离线
微信扫一扫关注dospy| | | | | | | | |
1-7月,宽带接入用户总数达到2.08亿户,三网融合业务也稳步推进,IPTV用户净增630.0万户,总数达到3993.7万户...
重庆iTV发布8月17日-8月23日付费电视剧电影排行榜,榜单显示付费电视剧前三名为《HD-血族第一季-原声版》《HD-我的媳妇是女王》《HD-神犬小七》。付费电影前三甲为《HD-道士下山-国语版》《HD-速度与激情7-原声版》《HD-猪猪侠之终极决战-国语版》。...
据《日本经济新闻》8月24日报道,夏普与台湾鸿海精密工业正在就液晶面板业务展开包括出资在内的合作谈判。夏普的液晶面板业务以智能手机用中小尺寸面板为主力,其收益正在以超出预期的程度恶化。为切实推进经营重建,夏普计划与日本政府和民间基金“产业革新机构”(INCJ)等,有关液晶面板业务方面推进合作谈判。
在“互联网+”时代,优酷土豆集团更名“合一”的意义被加倍凸显,正如优酷总裁魏明所言,“互联网的价值在于把创造内容的人或者机构,以及消费这种创作内容的人连接起来,这是互联网当中最有魅力的地方”。而这种价值载体的兴盛值得整个影视产业关注。...
海尔集团官方微信账号8月18日发布消息称,海尔联合华为、百度,本周六将发布一款智能机器人―克鲁德。
日前,暴风科技宣布,拟10股转12股。如果该方案通过,暴风股价将除权至50元左右――未来计算振幅时要费劲一些,股价也不再那么“扎眼”。...
中国移动、中国联通和中国电信分别召开内部会议,宣布“换帅”。如上周曝出的消息,中国移动董事长奚国华退休,工信部副部长尚冰接任;电信联通领导人“互换”,王晓初调任中国联通董事长,常小兵调任中国电信董事长。
日前,国家新闻出版广电总局局长蔡赴朝表示:线上线下要遵循统一的导向要求和内容标准;建立健全节目内容审核流程,坚持先审后播;传统媒体不允许播出的内容,新媒体一样不允许播...此言论一出激起千层浪,总局为了电视台的未来煞费苦心;无自由的中国互联网还叫互联网吗;国内影视剧市场通过政策的帮助可大获成功吗...诸如此类议论层出不穷,对此你怎么看?
如若想让自己的电视台以及内容大放异彩,何不加强自身建设,监管虽然必须,但也要适度,毕竟互联网的基因是自由。
听党的话,跟着政策走,有饭吃。
电广传媒拟与感知科技有限公司签署《合资合同》,共同出资成立上海感知实业发展有限公司,以智慧城市为切入点,共同打造基于广电网络的物联网平台。
在视频方面,人眼对清晰度的追求是永无止境的,目前的视频监控系统在人们回放监控录像的时候经常发现数字看不清或人脸难以辨识等情况,人们一直期望视频监控有更好的清晰度来提升监控的价值。
据美国《投资人商业日报》10月8日消息,随着中国科技公司华为视频会议设备业务的收入不断增加,领先的视频会议和远程呈现设备制造商思科(Cisco)和宝利通(Polycom)正面临着日益激烈的竞争。...
移动互联时代,我们的生活方式将翻天覆地。想要在云端组建家庭娱乐中心?想随时网上金融还要保证安全?想透过物联网实现家居安防?还想利用可穿戴设备进行健康管理?如果你有这些想法,那一定要来“2014年中国国际信息通信展览会”上一探究竟。...
流媒体网动态
流媒体网服务
关注流媒体微信iptvott
运 营 商:
合作媒体:
合作伙伴:流媒体的地址 rtsp 什么的_百度知道
流媒体的地址 rtsp 什么的
提问者采纳
实时流传输协议,是TCP/IP协议体系中的一个应用层协议,由哥伦比亚大学、网景和RealNetworks公司提交的IETF RFC标准。该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或RTP完成数据传输。HTTP与RTSP相比,HTTP传送HTML,而RTSP传送的是多媒体数据。
其他类似问题
为您推荐:
您可能关注的推广
rtsp的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁IBM Bluemix
点击按钮,开始云上的开发!
developerWorks 社区
流媒体指的是在网络中使用流技术传输的连续时基媒体,其特点是在播放前不需要下载整个文件,而是采用边下载边播放的方式,它是视频会议、IP电话等应用场合的技术基础。RTP是进行实时流媒体传输的标准协议和关键技术,本文介绍如何在Linux下利用JRTPLIB进行实时流媒体编程。
(), 硕士研究生, 北京理工大学计算机系
本文作者肖文鹏是一名自由软件爱好者,主要从事操作系统和分布式计算环境的研究,喜爱Linux和Python。你可以通过
与他取得联系。
一、流媒体简介随着Internet的日益普及,在网络上传输的数据已经不再局限于文字和图形,而是逐渐向声音和视频等多媒体格式过渡。目前在网络上传输音频/视频(Audio/Video,简称A/V)等多媒体文件时,基本上只有下载和流式传输两种选择。通常说来,A/V文件占据的存储空间都比较大,在带宽受限的网络环境中下载可能要耗费数分钟甚至数小时,所以这种处理方法的延迟很大。如果换用流式传输的话,声音、影像、动画等多媒体文件将由专门的流媒体服务器负责向用户连续、实时地发送,这样用户可以不必等到整个文件全部下载完毕,而只需要经过几秒钟的启动延时就可以了,当这些多媒体数据在客户机上播放时,文件的剩余部分将继续从流媒体服务器下载。流(Streaming)是近年在Internet上出现的新概念,其定义非常广泛,主要是指通过网络传输多媒体数据的技术总称。流媒体包含广义和狭义两种内涵:广义上的流媒体指的是使音频和视频形成稳定和连续的传输流和回放流的一系列技术、方法和协议的总称,即流媒体技术;狭义上的流媒体是相对于传统的下载-回放方式而言的,指的是一种从Internet上获取音频和视频等多媒体数据的新方法,它能够支持多媒体数据流的实时传输和实时播放。通过运用流媒体技术,服务器能够向客户机发送稳定和连续的多媒体数据流,客户机在接收数据的同时以一个稳定的速率回放,而不用等数据全部下载完之后再进行回放。由于受网络带宽、计算机处理能力和协议规范等方面的限制,要想从Internet上下载大量的音频和视频数据,无论从下载时间和存储空间上来讲都是不太现实的,而流媒体技术的出现则很好地解决了这一难题。目前实现流媒体传输主要有两种方法:顺序流(progressive streaming)传输和实时流(realtime streaming)传输,它们分别适合于不同的应用场合。顺序流传输顺序流传输采用顺序下载的方式进行传输,在下载的同时用户可以在线回放多媒体数据,但给定时刻只能观看已经下载的部分,不能跳到尚未下载的部分,也不能在传输期间根据网络状况对下载速度进行调整。由于标准的HTTP服务器就可以发送这种形式的流媒体,而不需要其他特殊协议的支持,因此也常常被称作HTTP流式传输。顺序流式传输比较适合于高质量的多媒体片段,如片头、片尾或者广告等。实时流传输实时流式传输保证媒体信号带宽能够与当前网络状况相匹配,从而使得流媒体数据总是被实时地传送,因此特别适合于现场事件。实时流传输支持随机访问,即用户可以通过快进或者后退操作来观看前面或者后面的内容。从理论上讲,实时流媒体一经播放就不会停顿,但事实上仍有可能发生周期性的暂停现象,尤其是在网络状况恶化时更是如此。与顺序流传输不同的是,实时流传输需要用到特定的流媒体服务器,而且还需要特定网络协议的支持。二、流媒体协议实时传输协议(Real-time Transport Protocol,PRT)是在Internet上处理多媒体数据流的一种网络协议,利用它能够在一对一(unicast,单播)或者一对多(multicast,多播)的网络环境中实现传流媒体数据的实时传输。RTP通常使用UDP来进行多媒体数据的传输,但如果需要的话可以使用TCP或者ATM等其它协议,整个RTP协议由两个密切相关的部分组成:RTP数据协议和RTP控制协议。实时流协议(Real Time Streaming Protocol,RTSP)最早由Real Networks和Netscape公司共同提出,它位于RTP和RTCP之上,其目的是希望通过IP网络有效地传输多媒体数据。2.1 RTP数据协议RTP数据协议负责对流媒体数据进行封包并实现媒体流的实时传输,每一个RTP数据报都由头部(Header)和负载(Payload)两个部分组成,其中头部前12个字节的含义是固定的,而负载则可以是音频或者视频数据。RTP数据报的头部格式如图1所示:图1 RTP头部格式其中比较重要的几个域及其意义如下:
CSRC记数(CC)  表示CSRC标识的数目。CSRC标识紧跟在RTP固定头部之后,用来表示RTP数据报的来源,RTP协议允许在同一个会话中存在多个数据源,它们可以通过RTP混合器合并为一个数据源。例如,可以产生一个CSRC列表来表示一个电话会议,该会议通过一个RTP混合器将所有讲话者的语音数据组合为一个RTP数据源。
负载类型(PT)  标明RTP负载的格式,包括所采用的编码算法、采样频率、承载通道等。例如,类型2表明该RTP数据包中承载的是用ITU G.721算法编码的语音数据,采样频率为8000Hz,并且采用单声道。
序列号  用来为接收方提供探测数据丢失的方法,但如何处理丢失的数据则是应用程序自己的事情,RTP协议本身并不负责数据的重传。
时间戳  记录了负载中第一个字节的采样时间,接收方能够时间戳能够确定数据的到达是否受到了延迟抖动的影响,但具体如何来补偿延迟抖动则是应用程序自己的事情。
从RTP数据报的格式不难看出,它包含了传输媒体的类型、格式、序列号、时间戳以及是否有附加数据等信息,这些都为实时的流媒体传输提供了相应的基础。RTP协议的目的是提供实时数据(如交互式的音频和视频)的端到端传输服务,因此在RTP中没有连接的概念,它可以建立在底层的面向连接或面向非连接的传输协议之上;RTP也不依赖于特别的网络地址格式,而仅仅只需要底层传输协议支持组帧(Framing)和分段(Segmentation)就足够了;另外RTP本身还不提供任何可靠性机制,这些都要由传输协议或者应用程序自己来保证。在典型的应用场合下,RTP一般是在传输协议之上作为应用程序的一部分加以实现的,如图2所示:图2 RTP与各种网络协议的关系2.2 RTCP控制协议RTCP控制协议需要与RTP数据协议一起配合使用,当应用程序启动一个RTP会话时将同时占用两个端口,分别供RTP和RTCP使用。RTP本身并不能为按序传输数据包提供可靠的保证,也不提供流量控制和拥塞控制,这些都由RTCP来负责完成。通常RTCP会采用与RTP相同的分发机制,向会话中的所有成员周期性地发送控制信息,应用程序通过接收这些数据,从中获取会话参与者的相关资料,以及网络状况、分组丢失概率等反馈信息,从而能够对服务质量进行控制或者对网络状况进行诊断。RTCP协议的功能是通过不同的RTCP数据报来实现的,主要有如下几种类型:
SR  发送端报告,所谓发送端是指发出RTP数据报的应用程序或者终端,发送端同时也可以是接收端。
RR  接收端报告,所谓接收端是指仅接收但不发送RTP数据报的应用程序或者终端。
SDES  源描述,主要功能是作为会话成员有关标识信息的载体,如用户名、邮件地址、电话号码等,此外还具有向会话成员传达会话控制信息的功能。
BYE  通知离开,主要功能是指示某一个或者几个源不再有效,即通知会话中的其他成员自己将退出会话。
APP  由应用程序自己定义,解决了RTCP的扩展性问题,并且为协议的实现者提供了很大的灵活性。
RTCP数据报携带有服务质量监控的必要信息,能够对服务质量进行动态的调整,并能够对网络拥塞进行有效的控制。由于RTCP数据报采用的是多播方式,因此会话中的所有成员都可以通过RTCP数据报返回的控制信息,来了解其他参与者的当前情况。在一个典型的应用场合下,发送媒体流的应用程序将周期性地产生发送端报告SR,该RTCP数据报含有不同媒体流间的同步信息,以及已经发送的数据报和字节的计数,接收端根据这些信息可以估计出实际的数据传输速率。另一方面,接收端会向所有已知的发送端发送接收端报告RR,该RTCP数据报含有已接收数据报的最大序列号、丢失的数据报数目、延时抖动和时间戳等重要信息,发送端应用根据这些信息可以估计出往返时延,并且可以根据数据报丢失概率和时延抖动情况动态调整发送速率,以改善网络拥塞状况,或者根据网络状况平滑地调整应用程序的服务质量。2.3 RTSP实时流协议作为一个应用层协议,RTSP提供了一个可供扩展的框架,它的意义在于使得实时流媒体数据的受控和点播变得可能。总的说来,RTSP是一个流媒体表示协议,主要用来控制具有实时特性的数据发送,但它本身并不传输数据,而是必须依赖于下层传输协议所提供的某些服务。RTSP可以对流媒体提供诸如播放、暂停、快进等操作,它负责定义具体的控制消息、操作方法、状态码等,此外还描述了与RTP间的交互操作。RTSP在制定时较多地参考了HTTP/1.1协议,甚至许多描述与HTTP/1.1完全相同。RTSP之所以特意使用与HTTP/1.1类似的语法和操作,在很大程度上是为了兼容现有的Web基础结构,正因如此,HTTP/1.1的扩展机制大都可以直接引入到RTSP中。由RTSP控制的媒体流集合可以用表示描述(Presentation Description)来定义,所谓表示是指流媒体服务器提供给客户机的一个或者多个媒体流的集合,而表示描述则包含了一个表示中各个媒体流的相关信息,如数据编码/解码算法、网络地址、媒体流的内容等。虽然RTSP服务器同样也使用标识符来区别每一流连接会话(Session),但RTSP连接并没有被绑定到传输层连接(如TCP等),也就是说在整个RTSP连接期间,RTSP用户可打开或者关闭多个对RTSP服务器的可靠传输连接以发出RTSP 请求。此外,RTSP连接也可以基于面向无连接的传输协议(如UDP等)。RTSP协议目前支持以下操作:
检索媒体  允许用户通过HTTP或者其它方法向媒体服务器提交一个表示描述。如表示是组播的,则表示描述就包含用于该媒体流的组播地址和端口号;如果表示是单播的,为了安全在表示描述中应该只提供目的地址。
邀请加入  媒体服务器可以被邀请参加正在进行的会议,或者在表示中回放媒体,或者在表示中录制全部媒体或其子集,非常适合于分布式教学。
添加媒体  通知用户新加入的可利用媒体流,这对现场讲座来讲显得尤其有用。与HTTP/1.1类似,RTSP请求也可以交由代理、通道或者缓存来进行处理。
三、流媒体编程
RTP是目前解决流媒体实时传输问题的最好办法,如果需要在Linux平台上进行实时流媒体编程,可以考虑使用一些开放源代码的RTP库,如LIBRTP、JRTPLIB等。JRTPLIB是一个面向对象的RTP库,它完全遵循RFC 1889设计,在很多场合下是一个非常不错的选择,下面就以JRTPLIB为例,讲述如何在Linux平台上运用RTP协议进行实时流媒体编程。3.1 环境搭建JRTPLIB是一个用C++语言实现的RTP库,目前已经可以运行在Windows、Linux、FreeBSD、Solaris、Unix和VxWorks等多种操作系统上。要为Linux 系统安装JRTPLIB,首先从JRTPLIB的网站(http://lumumba.luc.ac.be/jori/jrtplib/jrtplib.html)下载最新的源码包,此处使用的是jrtplib-2.7b.tar.bz2。假设下载后的源码包保存在/usr/local/src目录下,执行下面的命令可以对其进行解压缩:[root@linuxgam src]# bzip2 -dc jrtplib-2.7b.tar.bz2 | tar xvf -接下去需要对JRTPLIB进行配置和编译:[root@linuxgam src]# cd jrtplib-2.7
[root@linuxgam jrtplib-2.7b]# ./configure
[root@linuxgam jrtplib-2.7b]# make最后再执行如下命令就可以完成JRTPLIB的安装:[root@linuxgam jrtplib-2.7b]# make install3.2 初始化在使用JRTPLIB进行实时流媒体数据传输之前,首先应该生成RTPSession类的一个实例来表示此次RTP会话,然后调用Create()方法来对其进行初始化操作。RTPSession类的Create()方法只有一个参数,用来指明此次RTP会话所采用的端口号。清单1给出了一个最简单的初始化框架,它只是完成了RTP会话的初始化工作,还不具备任何实际的功能。代码清单1:initial.cpp#include "rtpsession.h"
int main(void)
sess.Create(5000);
}如果RTP会话创建过程失败,Create()方法将会返回一个负数,通过它虽然可以很容易地判断出函数调用究竟是成功的还是失败的,但却很难明白出错的原因到底什么。JRTPLIB采用了统一的错误处理机制,它提供的所有函数如果返回负数就表明出现了某种形式的错误,而具体的出错信息则可以通过调用RTPGetErrorString()函数得到。RTPGetErrorString()函数将错误代码作为参数传入,然后返回该错误代码所对应的错误信息。清单2给出了一个更加完整的初始化框架,它可以对RTP会话初始化过程中所产生的错误进行更好的处理:代码清单2:framework.cpp#include &stdio.h&
#include "rtpsession.h"
int main(void)
sess.Create(6000);
msg = RTPGetErrorString(status);
printf("Error String: %s\\n", msg);
}设置恰当的时戳单元,是RTP会话初始化过程所要进行的另外一项重要工作,这是通过调用RTPSession类的SetTimestampUnit()方法来实现的,该方法同样也只有一个参数,表示的是以秒为单元的时戳单元。例如,当使用RTP会话传输8000Hz采样的音频数据时,由于时戳每秒钟将递增8000,所以时戳单元相应地应该被设置成1/8000:sess.SetTimestampUnit(1.0/8000.0);3.3 数据发送当RTP会话成功建立起来之后,接下去就可以开始进行流媒体数据的实时传输了。首先需要设置好数据发送的目标地址,RTP协议允许同一会话存在多个目标地址,这可以通过调用RTPSession类的AddDestination()、DeleteDestination()和ClearDestinations()方法来完成。例如,下面的语句表示的是让RTP会话将数据发送到本地主机的6000端口:unsigned long addr = ntohl(inet_addr("127.0.0.1"));
sess.AddDestination(addr, 6000);目标地址全部指定之后,接着就可以调用RTPSession类的SendPacket()方法,向所有的目标地址发送流媒体数据。SendPacket()是RTPSession类提供的一个重载函数,它具有下列多种形式:int SendPacket(void *data,int len)
int SendPacket(void *data,int len,unsigned char pt,bool mark,unsigned long timestampinc)
int SendPacket(void *data,int len,unsigned short hdrextID,void *hdrextdata,
int numhdrextwords)
int SendPacket(void *data,int len,unsigned char pt,bool mark,unsigned long timestampinc,
unsigned short hdrextID,void *hdrextdata,int numhdrextwords)SendPacket()最典型的用法是类似于下面的语句,其中第一个参数是要被发送的数据,而第二个参数则指明将要发送数据的长度,再往后依次是RTP负载类型、标识和时戳增量。sess.SendPacket(buffer, 5, 0, false, 10);对于同一个RTP会话来讲,负载类型、标识和时戳增量通常来讲都是相同的,JRTPLIB允许将它们设置为会话的默认参数,这是通过调用RTPSession类的SetDefaultPayloadType()、SetDefaultMark()和SetDefaultTimeStampIncrement()方法来完成的。为RTP会话设置这些默认参数的好处是可以简化数据的发送,例如,如果为RTP会话设置了默认参数:sess.SetDefaultPayloadType(0);
sess.SetDefaultMark(false);
sess.SetDefaultTimeStampIncrement(10);之后在进行数据发送时只需指明要发送的数据及其长度就可以了:sess.SendPacket(buffer, 5);3.4 数据接收对于流媒体数据的接收端,首先需要调用RTPSession类的PollData()方法来接收发送过来的RTP或者RTCP数据报。由于同一个RTP会话中允许有多个参与者(源),你既可以通过调用RTPSession类的GotoFirstSource()和GotoNextSource()方法来遍历所有的源,也可以通过调用RTPSession类的GotoFirstSourceWithData()和GotoNextSourceWithData()方法来遍历那些携带有数据的源。在从RTP会话中检测出有效的数据源之后,接下去就可以调用RTPSession类的GetNextPacket()方法从中抽取RTP数据报,当接收到的RTP数据报处理完之后,一定要记得及时释放。下面的代码示范了该如何对接收到的RTP数据报进行处理:if (sess.GotoFirstSourceWithData()) {
RTPPacket *
pack = sess.GetNextPacket();
// 处理接收到的数据
} while (sess.GotoNextSourceWithData());
}JRTPLIB为RTP数据报定义了三种接收模式,其中每种接收模式都具体规定了哪些到达的RTP数据报将会被接受,而哪些到达的RTP数据报将会被拒绝。通过调用RTPSession类的SetReceiveMode()方法可以设置下列这些接收模式:RECEIVEMODE_ALL  缺省的接收模式,所有到达的RTP数据报都将被接受;
RECEIVEMODE_IGNORESOME  除了某些特定的发送者之外,所有到达的RTP数据报都将被接受,而被拒绝的发送者列表可以通过调用AddToIgnoreList()、DeleteFromIgnoreList()和ClearIgnoreList()方法来进行设置;
RECEIVEMODE_ACCEPTSOME  除了某些特定的发送者之外,所有到达的RTP数据报都将被拒绝,而被接受的发送者列表可以通过调用AddToAcceptList ()、DeleteFromAcceptList和ClearAcceptList ()方法来进行设置。
3.5 控制信息JRTPLIB是一个高度封装后的RTP库,程序员在使用它时很多时候并不用关心RTCP数据报是如何被发送和接收的,因为这些都可以由JRTPLIB自己来完成。只要PollData()或者SendPacket()方法被成功调用,JRTPLIB就能够自动对到达的RTCP数据报进行处理,并且还会在需要的时候发送RTCP数据报,从而能够确保整个RTP会话过程的正确性。而另一方面,通过调用RTPSession类提供的SetLocalName()、SetLocalEMail()、SetLocalLocation()、SetLocalPhone()、SetLocalTool()和SetLocalNote()方法,JRTPLIB又允许程序员对RTP会话的控制信息进行设置。所有这些方法在调用时都带有两个参数,其中第一个参数是一个char型的指针,指向将要被设置的数据;而第二个参数则是一个int型的数值,表明该数据中的前面多少个字符将会被使用。例如下面的语句可以被用来设置控制信息中的电子邮件地址:sess.SetLocalEMail("",19);在RTP会话过程中,不是所有的控制信息都需要被发送,通过调用RTPSession类提供的EnableSendName()、EnableSendEMail()、EnableSendLocation()、EnableSendPhone()、EnableSendTool()和EnableSendNote()方法,可以为当前RTP会话选择将被发送的控制信息。3.6 实际应用最后通过一个简单的流媒体发送-接收实例,介绍如何利用JRTPLIB来进行实时流媒体的编程。清单3给出了数据发送端的完整代码,它负责向用户指定的IP地址和端口,不断地发送RTP数据包:代码清单3:sender.cpp#include &stdio.h&
#include &string.h&
#include "rtpsession.h"
// 错误处理函数
void checkerror(int err)
if (err & 0) {
char* errstr = RTPGetErrorString(err);
printf("Error:%s\\n", errstr);
int main(int argc, char** argv)
int portbase = 6000;
int status,
char buffer[128];
if (argc != 3) {
printf("Usage: ./sender destip destport\\n");
return -1;
// 获得接收端的IP地址和端口号
destip = inet_addr(argv[1]);
if (destip == INADDR_NONE) {
printf("Bad IP address specified.\\n");
return -1;
destip = ntohl(destip);
destport = atoi(argv[2]);
// 创建RTP会话
status = sess.Create(portbase);
checkerror(status);
// 指定RTP数据接收端
status = sess.AddDestination(destip, destport);
checkerror(status);
// 设置RTP会话默认参数
sess.SetDefaultPayloadType(0);
sess.SetDefaultMark(false);
sess.SetDefaultTimeStampIncrement(10);
// 发送流媒体数据
index = 1;
sprintf(buffer, "%d: RTP packet", index ++);
sess.SendPacket(buffer, strlen(buffer));
printf("Send packet !\\n");
} while(1);
}清单4则给出了数据接收端的完整代码,它负责从指定的端口不断地读取RTP数据包:代码清单4:receiver.cpp#include &stdio.h&
#include "rtpsession.h"
#include "rtppacket.h"
// 错误处理函数
void checkerror(int err)
if (err & 0) {
char* errstr = RTPGetErrorString(err);
printf("Error:%s\\n", errstr);
int main(int argc, char** argv)
if (argc != 2) {
printf("Usage: ./sender localport\\n");
return -1;
// 获得用户指定的端口号
localport = atoi(argv[1]);
// 创建RTP会话
status = sess.Create(localport);
checkerror(status);
// 接受RTP数据
status = sess.PollData();
// 检索RTP数据源
if (sess.GotoFirstSourceWithData()) {
RTPPacket*
// 获取RTP数据报
while ((packet = sess.GetNextPacket()) != NULL) {
printf("Got packet !\\n");
// 删除RTP数据报
} while (sess.GotoNextSourceWithData());
} while(1);
四、小结随着多媒体数据在Internet上所承担的作用变得越来越重要,需要实时传输音频和视频等多媒体数据的场合也将变得越来越多,如IP电话、视频点播、在线会议等。RTP是用来在Internet上进行实时流媒体传输的一种协议,目前已经被广泛地应用在各种场合,JRTPLIB是一个面向对象的RTP封装库,利用它可以很方便地完成Linux平台上的实时流媒体编程。
参考资料 1. 在JRTPLIB的网站http://lumumba.luc.ac.be/jori/jrtplib/jrtplib.html上,可以下载到JRTPLIB最新的源码包,并且还能找到一些与RTP相关的资源。2. 顾淑珍等编著,宽带增值服务开发实例,北京:机械工业出版社,20023. 黄永峰等编著,IP网络多媒体通信技术,北京:人民邮电出版社,2003
developerWorks: 登录
标有星(*)号的字段是必填字段。
保持登录。
单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件。
在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。
所有提交的信息确保安全。
选择您的昵称
当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。昵称长度在 3 至 31 个字符之间。
您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。
标有星(*)号的字段是必填字段。
(昵称长度在 3 至 31 个字符之间)
单击提交则表示您同意developerWorks 的条款和条件。 .
所有提交的信息确保安全。
IBM PureSystems(TM) 系列解决方案是一个专家集成系统
通过学习路线图系统掌握软件开发技能
软件下载、试用版及云计算
static.content.url=/developerworks/js/artrating/SITE_ID=10Zone=LinuxArticleID=22015ArticleTitle=Linux下的实时流媒体编程publish-date=

我要回帖

更多关于 流媒体 的文章

 

随机推荐