今天我们来教你有关(rtsp取帧人脸识别)rtsp识别算法,以下7个关于rtsp取帧人脸识别的观点希望能帮助到您找到想要的答案。
rtsp怎么下载教程
热心用户提供:【别在捏我脸啦】 ,解答(rtsp取帧人脸识别)的问题,欢迎阅读!
最佳答案已知服务器:Helix Server Version 9.0.8.1427 (win32) (RealServer compatible)
用java的Socket模拟realplayer的数据传送,资料是用WPE拦截的realplayer与服务器传送的数据和迅雷等下载日志。
String url="rtsp://.";
RtspUrl rurl = new RtspUrl(url);
Socket sk=new Socket(rurl.getHost(),rurl.getPort());
BufferedInputStream in=new BufferedInputStream(sk.getInputStream());
BufferedOutputStream out=new BufferedOutputStream(sk.getOutputStream());
下面发送和接受用的都是in和out.
第三、四步都发送 SETUP 请求时用到的RealChallenge2是网上找的算法,RealChallenge.java,@author Roger Chen
第一步发送OPTIONS 正常接受到回复
第二步发送 DESCRIBE 也能正常接受到回复
第三、四步都发送 SETUP 都能正常接受到回复
SETUP rtsp://210.26.112.183:5540/%C1%AC%D0%F8%BE%E7/%B3%FE%C1%F4%CF%E3%B4%AB%C6%E6/%B3%FE%C1%F4%CF%E3%B4%AB%C6%E643.rmvb/streamid=0 RTSP/1.0
CSeq: 3
RealChallenge2: b2faca7cebcc827d08bc3a5bf92a8ed701d0a8e3, sd=bce803f8
RDTFeatureLevel: 2
Transport: x-pn-tng/tcp;mode=play,x-real-rdt/tcp;mode=play,RTP/AVP/TCP;unicast;mode=play
User-Agent: RealMedia Player (HelixDNAClient)/10.0.0.0 (win32)
If-Match: 2143912-1
RTSP/1.0 200 OK
CSeq: 3
Date: Mon, 21 Jan 2008 14:08:02 GMT
Session: 2143912-1
Reconnect: true
RealChallenge3: ee313bac80b8938e70021c666d45cc8c4f213d09,sdr=e389716c
RDTFeatureLevel: 2
Transport: x-pn-tng/tcp;interleaved=0
第五步发送 SET_PARAMETER 也正常
SET_PARAMETER rtsp://210.26.112.183:5540/%C1%AC%D0%F8%BE%E7/%B3%FE%C1%F4%CF%E3%B4%AB%C6%E6/%B3%FE%C1%F4%CF%E3%B4%AB%C6%E643.rmvb RTSP/1.0
CSeq: 5
Subscribe: stream=0;rule=0,stream=0;rule=1,stream=1;rule=0,stream=1;rule=1
Session: 2143912-1
SetDeliveryBandwidth: Bandwidth=492592;BackOff=0
回复:
RTSP/1.0 200 OK
CSeq: 5
Date: Mon, 21 Jan 2008 14:08:03 GMT
Session: 2143912-1
然后PLAY就有问题了:
PLAY rtsp://210.26.112.183:5540/%C1%AC%D0%F8%BE%E7/%B3%FE%C1%F4%CF%E3%B4%AB%C6%E6/%B3%FE%C1%F4%CF%E3%B4%AB%C6%E643.rmvb RTSP/1.0
CSeq: 6
User-Agent: RealMedia Player (HelixDNAClient)/10.0.0.0 (win32)
Session: 2143912-1
Range: npt=0.000-
回复:
SET_PARAMETER * RTSP/1.0
CSeq: 1
Alert: 0;You need to obtain a new player to play this clip. Please point your web browser to and download the latest RealOne Player from RealNetworks. Once you have installed it you should try this clip again.
.(一堆数据)
RTSP/1.0 200 OK
CSeq: 6
Date: Mon, 21 Jan 2008 14:08:03 GMT
RTP-Info: url=rtsp://210.26.112.183:5540/%C1%AC%D0%F8%BE%E7/%B3%FE%C1%F4%CF%E3%B4%AB%C6%E6/%B3%FE%C1%F4%CF%E3%B4%AB%C6%E643.rmvb/streamid=0;seq=0;rtptime=0, url=rtsp://210.26.112.183:5540/%C1%AC%D0%F8%BE%E7/%B3%FE%C1%F4%CF%E3%B4%AB%C6%E6/%B3%FE%C1%F4%CF%E3%B4%AB%C6%E643.rmvb/streamid=1;seq=0;rtptime=0
.(又一小堆数据)
然后
in.read(buf)返回-1
完蛋了!
我快哭了,Realpalyer正常,迅雷、Net Transport的下载日志也是这个样子,但是现在就出错了,我什么也不懂,现在能做的只能这些了,但愿会得到帮助!
不会
上文就是道尔智控小编解答贡献者:(别在捏我脸啦)回答的关于“rtsp怎么下载教程”的问题了,不知是否已经解决你的问题?如果没有,下一篇内容可能是你想要的答案,下面继续:下文用户【心的憧憬】回答的“c语言字符串加密算法”的一些相关疑点做出分析与解答,如果能找到你的答案,可以关注本站。

c语言字符串加密算法
热心用户提供:【心的憧憬】 ,解答(rtsp取帧人脸识别)的问题,欢迎阅读!
最佳答案但是这个加密算法好像很简单.
可以看出是一个字符一个字符加密的.
第一个字符r的十六进制内码通过某种方式(如与某数异或)加密为F3,
第二个字符除了采用了第一个字符的加密方法之外,
还把第一个字符作为加密因素一起运算了,
不然第二个密文不会也是F3.
以此类推.
到IP地址时密文开始不一样了.
不愿费脑子了.
以上就是道尔智控小编解答贡献者:(心的憧憬)解答的关于“c语言字符串加密算法”的问题了,不知是否已经解决你的问题?如果没有,下一篇内容可能是你想要的答案,下面继续解答下文用户【风霜莫蚀颜】分享的“H264文件RTP传输的问题”的一些相关疑问做出分析与解答,如果能找到你的答案,可以关注本站。
H264文件RTP传输的问题
热心用户提供:【风霜莫蚀颜】 ,解答(rtsp取帧人脸识别)的问题,欢迎阅读!
最佳答案搜索rtsp。
然后找到rtsp的文档。上面会有告诉你如何
rtp over tcp
实际上就是在软件的rtp包基础上
+一个'$'一个字节
+一个字节的通道号,区分rtp还是rtcp
+2个字节的包大小
就这么简单。当然这个只是在rtsp中的应用,你自己的协议中可以参考他的。
你也可以自己定义你喜欢的。扩展性更强的。
good luck。
还不错,希望你。
上文就是道尔智控小编解疑贡献者:(风霜莫蚀颜)回答的关于“H264文件RTP传输的问题”的问题了,不知是否已经解决你的问题?如果没有,下一篇内容可能是你想要的答案,下面继续讲析下文用户【青年才俊】贡献的“千千静听文件名”的一些相关疑问做出分析与解答,如果能找到你的答案,可以关注本站。
千千静听文件名
热心用户提供:【青年才俊】 ,解答(rtsp取帧人脸识别)的问题,欢迎阅读!
最佳答案下载:
千千静听 主页
简体中文版
繁体中文版
=====
天空软件园
简体中文版
繁体中文版
千千静听 - FAQ
一。常规问题
问:Unicode和Ansi版本是怎么回事,用一个更好?
Unicode是统一字符编码方式,Unicode版本的程序只能运行在NT/2000/XP/2003等新的Windows上,可以解决不同语言的显示问题,并且由于Unicode在这些系统上有高好的性能,所以当处理大量列表的时候也有很大的帮助。
千千静听内部处理字符串时(例如处理标签或列表时),大量使用系统默认的16位Unicode(即使是Ansi版本也一样,只是显示的时候才转换成Ansi),可以最大限度的提高处理的性能。
问:我是繁体XP的用户,可以使用千千静听吗?
可以,千千静听已经支持unicode,可以在非简体中文的Windows 2000/XP下使用,千千静听的界面不会出现乱码,但某些只包含ID3v1标签的MP3文件可能是显示乱码,可以尝试用“文件信息”里的内码转换功能来找到正确的内码。千千静听还提供了繁体和简体之间的标签和歌词转换。
问:安装新版本的时候,需要先删除以前的版本吗?
不用,直接覆盖安装就行了,千千静听可以兼容以前的参数设置,但某些功能可能因为升级而发生变化,绝大多数设置将继续有效。
问:为什么我的电脑上没有淡入淡出窗口的效果?
淡入淡出窗口以及半透明窗口效果都需要Windows2000或的操作系统才能支持。
问:我的窗口不小心拖动屏幕外面了,怎么办?
在Windows的系统栏(屏幕右下角的系统时间那里)右键点击主菜单,选“查看窗口”
下面的“重新排列”,这个对普通模式和迷你模式都有效。
问:我想把千千支持的文件格式默认用千千来打开,怎么样最方便?
千千选项的最后一页“系统关联”,可以在你想要关联的某个格式,或某一类格式上打
上勾,并且为这种或这一类格式指定一个文件类型图标,考虑到不同用户有不同的喜好,千
千只提供图标自定义的功能,而不提供任何很多默认的图标。
问:为什么千千静听的皮肤这么少?
作者本人不擅长美工,又找不到专业人士帮助千千(因为千千免费)。其实千千静听的
皮肤格式是比较简单的,是基于XML格式的用ZIP压缩一下而已,有兴趣的网友可以自己把皮
肤文件改为.zip后缀后解开来看看,具体请看主页上皮肤这一页:
n.htm。
问:为什么千千静听不支持Winamp的皮肤呢?
由于播放器的功能不相同,皮肤的设计和实现也不相同,很多千千静听需要的皮肤的元
素Winamp的皮肤里都没有,例如千千静听需要歌词秀窗口,但Winamp本身就没有这个窗口的
皮肤。论坛上有不少网友从winamp改造过来的皮肤,有兴趣不妨去看一下。
二。播放
问:为什么在Win98下不支持播放CD?
Win98没有自带数字CD读取所需的驱动,可以到主页上去下载这个通用的驱动程序,地
址是:
问:为什么我正在播放CD的时候,就不能转压CD为其它格式了?
因为Windows下以数字方式访问CD是独占的,所以同时只能由一个任何来访问CD。如果
你想转压,请先停止播放。
问:千千有没有能自动在线查询到CD信息的功能?
4.3以后的版本,提供了freedb的在线查询CD信息的功能,但非正版的CD很可能找不到:
)。
问:为什么我用Windows Media Player制作的WMA文件无法播放?
Window Media Player在制作WMA文件时默认启用了"数字版权保护"机制,而要支持这种
文件,必须得到微软的官方支持,考虑到手续比较麻烦所以目前还未实现对它的支持。所以
在制作WMA文件的时候请尽量不要使用数字版权保护。
问:回放增益(自动音量)是怎么回事,应该如何使用?
"回放增益信息"是通过对音频文件的扫描分析检测到的一个最佳的增益值,
在以后的播放中如果使用这个增益值就可以把音频文件的音量调整到最佳的水平,从而减少
甚至避免不同音频文件之间的音量差异.
可以通过手动扫描或自动扫描来得到这个信息,手动扫描就是在播放列表上右键某些文
件,通过“扫描增益信息”来得到,或者选中千千选项的“播放”页中的“自动扫描”,这
样在播放的同时,就会自动扫描没有这个信息的文件(如果已存在就不会再扫描),但要注
意的是,如果播放被中断或用户拖动了播放进度,扫描就会停止,只有完整的播放一遍之后
才能得出这个信息。
问:为什么我启用了回放增益以后,有些歌的音量不正常?
增益信息是以文件标签的形式保存在文件中的,可能是增益信息别的软件破坏了,所以
导致音量不正常,这时,你需要手动重新扫描一下。
问:千千支持哪些音频输出方式?
千千支持Waveout(波形输出),DirectSound,Kernel
Streaming(内核音频流),ASIO这四种方式,但在不同的系统和声卡环境下,并不是每一种
都能支持的,特别是ASIO,更需要声卡本身的支持,一般只有比较高档的声卡才能支持。
问:这些音频输出方式各有什么特点?
Waveout是微软最早提出的音频流输出方式,所以它的兼容性也就好,几乎所有的声卡
都支持;
DirectSound是微软DirectX的一个组合部分,它的兼容性也很不错,并且在有多个程序
需要播放音频的时候能提供高可靠的保障,并且使用这种方式可以让千千静听更好的支持声
音的淡入淡出效果;
Kernel
Streaming是微软底层使用的音频流方式,具体更低的延时性,用于对延时性要求比较高的
场和,因为更底层,所以效率更高,而且受别的程序的影响也更小,如果你用它来播放时,
把系统音量里的波型“静音”,就可以实现只听到播放器的音乐,而不受其它程序的声音的
影响。但Kernel Streaming同样对声卡和驱动有一定的要求。
ASIO是Steinberg提出来的比较新的音频流输入输出接口,一般用在对实时性要求很高
的专业场合,对声卡的要求更高。
理论上来说,这四种方式对输出的音质没有任何影响,因为这些方式只是把声音的数字
信号传输到声卡的数模转换器(D/A),而不会对信息有任何的改变。
问:像AxASIO之类的软件能让声卡不支持ASIO的电脑也使用ASIO,有什么好处吗?
AxASIO或ASIO Kernel-Streaming Driver之类的软件,都是在Kernel
Streaming的基础上模拟出来的ASIO,所以效果反而没有直接用Kernel
Streaming好,而且设备不当的话还影响正常的播放。
问:千千使用的MP3解码器是哪一个?
千千使用的是最新版本的mpg123-0.59s-pre,它是目前已经的开放源代码中最好的MP3
解码器之一,无论是精度来是都是很出色的。千千早期版本使用的是MAD,但在个人PC
上,MAD的解码比mpg123要慢70%甚至更多,而绝对精确和mpg123相比还略有差距,所以
后来就改用mpg123了。
问:是不是把播放时的缓冲长度设得越高播放越流畅?
一般来说,只要设置1000-2000毫秒的长度就可以了,太长只会增加资源占用。
问:播放时的输出比特是越高越好吗?
不是,目前几乎所有的音频源都来自16比特的CD,而且一般的声卡只支持16比特的输出
,所以基本上选用16比特就可以满足绝大多数的要求了,千千的“原始比特”就是指音频本
身的比特数,因为碰到有些24比特的WMA,千千就会自动选择24比特输出。
要注意的是,很多支持ASIO的声卡,最佳的输出比特数是32或24,所以这时选择相对应
的比特数就能提供最佳的性能(因为不需要再做额外的转换)。
问:采样频率转换一般用在什么场合?
对于AC’97规范的声卡(主板自带的基本上都是这类声卡),硬件只支持48000Hz这一
种采样频率,而CD的音频是44100Hz的,从CD转换过来的MP3等大多部格式也是44100Hz的,
也就是说在这种类型的声卡上,在数字信号转成模拟信号之前,还要对采样频率做一次转换
,如果驱动程序提供的转换程序不是很好(据说为了提高性能,都采用比较一般的算法),
就可以尝试用播放器提供的软件转换功能。但用于这类声卡来说,本身的输出音质就不是很
理想,所以用不用更好的转换算法意义并不大,而且由于软件转换需要CPU做更多的事情,
性能肯定受到影响。
问:高频抖动又是什么意思?
一般的音频编解码器,都是用高比特来处理16比特的音源的,在最终播放输出的时候,
又得把高比特降低到16比特来输出(因为一般的声卡只支持16比特的输出),所以就会有量化
的副作用,就好比把一幅真彩的图片转成256色,如果转换的程序不好,就会有大块的很难
看的色块出现,于是就产生了一种抖动的技术,就是采用插值算法,在转换前用一些随机的
噪声来处理一下,以减少量化带来的副作用。
一般来说,如果音源和输出时的比特数相同,就不需要再用抖动了。并且抖动只对低于
16比特的输出比较好的效果。
三。文件标签
问:什么是文件标签,有什么用途?
文件标签就是指一个歌曲文件的标题(歌名)、艺术家(演唱者)等的信息,就好像是一个
人的姓名一样。有了文件标签,就能准确的知道这首歌的来源,就能通过这些信息准确的本
机或网上查找到相应的歌词文件。
问:如何填写或编辑文件标签?
通过千千的“文件信息”对话框,就能编辑标签信息。有两种方法可以显示这个对话框
:1。在播放某首歌的时候,在主窗口上右键的主菜单里选择“查看窗口”里的“文件信息
”,这时显示的就是当前正在播放的这首歌的文件信息;2。在播放列表里选中某首或某些
歌曲,在右键菜单中选择“文件信息”,就能显示选中文件的信
息了,如果你选的是多首歌,就能同时编辑多首歌的信息。
问:千千支持哪些类型的标签?
千千几乎支持所有已知的通用标签类型,比如对于MP3文件,就支持ID3v1/ID3v2、APE
;对于Ogg文件,就支持Ogg本身的Vorbis标签;而对于APE、MPC之类的新型文件格式,同样
支持APE标签,对于iTunes的MP4/M4A
格式,千千也同样支持它的标签类型;要注意的是,WMA的标签的写入需要安装微软的media
9或更新的版本,但
读取就不需要任何额外的支持了;而对于RM文件,千千目前只支持最基本的几个标签字段。
问:千千嵌入的歌词是怎么回事,和标签有关吗?
千千嵌入的歌词就是以标签的形式保存在歌曲文件里的,字段名是"Lyrics",对标签的
操作对嵌入的歌词
同样有效。
问:如何在播放列表的歌曲标题里显示我想要显示的标签字段?
可以在千千选项里的“播放列表”页里设置“有标签时的格式”,只要用“%(英文字段
名)”这样的字符串就能表示任何你想要显示的字段了,当然前提是你得知道这些字段的英
文名称,你可以通过上面讲到的“文件信息”对话框的“高级模式”来看到所有这个文件里
已存在的标签字段的名字和值。
问:某些文件显示的是乱码的标签,有没有办法改正?
可以尝试使用“文件信息”里的内码转换功能来找到正确的内码。
问:为什么千千静听在列表里查找文件比较慢?
为了节省资源占用并且提高文件添加到列表的,千千静听默认是当播放列表在显示
某个音频文件时才会读取信息,而像foobar2000这样的播放器则是在第一次添加时就读取了
所有文件的信息,所以查找时就不需要再读取了。事实上千千静听也提供了和foobar2000
一样的文件信息操作方式,请在选项里的“播放列表”页中将读取信息改为“添加”时,并且选
上“缓存文件信息到播放列表”。
四.歌词
问:怎么使用歌词秀,为什么我自己从网上下载的歌词就不能显示?
歌词文件有一定的格式,一般以LRC和TXT后缀,每句歌词前面有[00:00.00]这样的时间
标签,如果没有这些标签的歌词是无法显示的,可以用千千静听自带的歌词编辑器来为每句
歌词加入时间标签,保存后就可以正常显示了。建议把歌词文件以“歌手名 -
歌曲名.lrc”这样的方式命名,再把存放这些歌词的目录加到千千的本地搜索文件夹里,以
后就不用再一一关联了,当然你的歌曲文件应该也有相应的歌手名和歌曲名信息,这样才能
保证播放器找到正确的歌词文件。
问:为什么歌词下载会失败?
有以下几种可能的原因:
1.文件信息不正确,以至于在搜索时无法正确匹配;
2.歌曲太新,以至于这些歌词网站都还没有收集歌词;
3.如果你安装了防火墙,可能网络请求被过滤而无法连接到歌词服务器;
4.歌词服务器可能出现问题,或者正在维护。
问:为什么没有让用户自己输入或选择歌词网站的功能?
歌词下载网站的搜索和下载方式都不相同,如果要实现用播放器来自动处理需要编写相
应的搜索和下载程序,并不是简单的输入一个网址就行了。
问:为什么我下载了正确的歌词,但下次播放还是显示错误的?
千千加载歌词的顺序是内嵌歌词->关联歌词->本地搜索->在线搜索,很可以内嵌或关联
了错误的歌词,或在本机上有错误的歌词文件,这时你可以按上面的顺序来检查优先级高的
歌词,如果发现有错误,就删除或修改就行了。具体操作请看歌词秀的右键菜单或选项里的
和歌词相关的参数。
问:我想让下载后的歌词自动以歌曲相同的文件名保存,并且直接保存到歌曲所在的目录,
这样我找起来很方便,怎样才能做到?
在千千选项的“歌词搜索”页里,有相关的参数可以设置。
五.其它
问:我想在播放列表里直接删除硬盘上的文件,“物理删除”为什么是灰色的?
千千提供了物理删除的功能,但考虑到用户可能会误操作,所以默认是禁用的,你可以
在千千选项的“播放列表”页中找到启用这项功能的选项。
问:我想从播放列表里直接到文件拖动到其它地方,比如我的U盘或MP3机,可以吗?
可以,在播放列表是选中要操作的文件,注意用左键按住标题(否则就变成选选择文件
了,这和windows的资源管理器操作一样),拖动文件到你想要到地方,如果想复制,就按
再Ctrl键,操作和资源管理器完全一致。用这种方法,你甚至可以直接把文件拖到回收站上
而删除你不想要的文件。
问:我想把CD压缩成MP3、WMA或APE,用千千静听可以做到吗?
可以,通过添加文件或添加目录来把CD上的所有音轨文件拖到播放列表里面,因为数字
方式抓取音轨是独占访问的,所以如果正在播放CD上的文件或是音轨,请先停止播放,然后
在播放列表里选中要转压的文件(多选就可以进行批量转换),点右键菜单的“转换格式”
命令就可以转换了,如果在压缩格式列表里没有找到MP3或WMA,请重新安装千千静听。用同
样的方式可以转换任何千千静听可以播放的文件(例如APE等格式转换到MP3、WMA)。
问:为什么其它的播放器对RM的支持比千千静听好?
其它播放器用的是Real Player的播放器核心,其实就相当于在使用Real
Player在播放,这和直接用Real
Player来播放没多大区别,而且这个核心占用内存实在是比较厉害,所以作者不想采用这种
方式。其实Real公司对RMF文件的格式只公开了部分内容,有些细节还没有完全公开,特别
是和编码格式有关的部分,在现有的条件下,千千静听只能做到这样了,希望将来能得到更
多的技术支持。
问:如果我的电脑上没有安装Windows Media Player 9或更新的版本,还能播放WMA吗?
当然可以,只要在安装时选中支持WMA就行了,千千静听支持WMA只用到了微软的WMA解
码器组件,就是安装目录下的wmadmod.dll文件,只有400K左右:),而且还支持WMA文件信息
的读取。
问:我要把一台电脑上的千千静听拷到另一台电脑上使用,所有的设置都还有用吗?
千千静听的设置都保存在安装后的目录下的TTPlayer.xml文件下,只要把这个文件和程
序一起复制别的电脑上就可以了,根本就不需要重新安装,当然有些目录可能会因为不同的
电脑而不一样,需要注意一下(比如歌词下载的保存目录会因为电脑的不同而无效)。
问:我对INI文件比较熟悉,为什么不用INI文件来保存这些设置?
INI是比较“过时”的配置文件,读取和分析都比较慢,扩展性也比较差,而XML是最好
的用于保存各种信息的格式,而且现在对它的支持也越来越广泛,所以用XML是更好的选择
。
问:为什么我在千千静听里使用DFX看不到DFX的窗口?
如果你的电脑上安装了Winamp,并且DFX也是安装在Winamp上,那只要把Winamp的Plugi
ns目录设置为千千的Winamp音效目录应该就不会有任何问题了(默认情况下千千会检测到Wi
namp的插件目录并且自动设置),如果你没有安装Winamp,而把DFX安装到千千的目录上,
你就应该手动把DFX安装后的目录下的Plugins目录设置为千千的Winamp音效插件目录。
问:为什么不支持视频?
作者设计千千静听的原则就是用来播放音频,至于要看到视频图像,有更多更好的选择
,相信大家心中已经都有自己最喜爱的视频播放器了。
问:千千静听支持哪些网络协议的点播?
目前千千静听支持HTTP和MMS方式的在线点播,其中MMS协议需要Media Player 7或更高
的版本支持。暂时不支持网上比较流行的RTSP协议。
问:千千静听是用什么语言写的,为什么支持这么多的格式还这么小巧?
千千静听是用VC6编写的,如果你还知道WTL,那么作者可以告诉你,界面是用WTL来编
写的,相对于MFC的庸肿,WTL更适合编写快速、精简并且占用资源少的程序。当然很多音频
编码库是用C语言来写的,这样更加高效而且小巧。
问:随着用的人越来越多,作者是否会考虑收费或者注册?
作者不会因为任何理由违背承诺来向用户收费!
问:为什么不在网站上做些宣传,好让更多的人知道?
我一直改进千千的理由不是为了钱,所以用的人多了对我本人来说也不见得就是好事,
一个人做软件毕竟很辛苦,用的人太多引来的问题和麻烦也就更多。
问:我经常在某些论坛上看到推荐千千静听的贴子,是不是作者请的“枪手”在推荐?
这是最可笑的问题,但确实有不少网友来问!
我的回答是“绝对不是”,一方面上面也说过了,我本人对宣传不感兴趣,另一方面,
我也请不起所谓的“枪手”。问问你自己或你身边的朋友,你们是如何知道千千静听的,是
在媒体上看到的广告?是在论坛上看到大肆的推荐?还是朋友直接推荐给你的?
作者并不反对网友到不同的论坛上推荐千千静听,如果你认为千千是一个你喜欢的并且
值得推荐的软件,那么有什么理由不让你去推荐给更多的人用呢?!
问:为什么取名叫“千千”,好像不太响亮哦?
作者很喜欢陈慧娴的歌,相信大家都知道为什么会用“千千”这个词了吧。其实当时之
所以会自己写一个播放器也是因为觉得Winamp很多地方不太好用,总觉得要是有一个自己的
播放器来听自己喜欢的歌那该多好啊,所以就有了今天的千千静听,希望大家会喜欢。
以上就是道尔智控小编解答贡献者:(青年才俊)回答的关于“千千静听文件名”的问题了,不知是否已经解决你的问题?如果没有,下一篇内容可能是你想要的答案,下面继续讲析下文用户【樱桃裙】解答的“rstp机制有哪些”的一些相关疑点做出分析与解答,如果能找到你的答案,可以关注本站。
rstp机制有哪些
热心用户提供:【樱桃裙】 ,解答(rtsp取帧人脸识别)的问题,欢迎阅读!
最佳答案RTSP(Real Time Streaming Protocol),RFC2326,实时流传输协议,是TCP/IP协议体系中的一个应用层协议,由哥伦比亚大学、网景和RealNetworks公司提交的IETF RFC标准。该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或UDP完成数据传输。HTTP与RTSP相比,HTTP请求由客户机发出,服务器作出响应;使用RTSP时,客户机和服务器都可以发出请求,即RTSP可以是双向的。RTSP是用来控制声音或影像的多媒体串流协议,并允许同时多个串流需求控制,传输时所用的网络通讯协定并不在其定义的范围内,服务器端可以自行选择使用TCP或UDP来传送串流内容,它的语法和运作跟HTTP 1.1类似,但并不特别强调时间同步,所以比较能容忍网络延迟。而前面提到的允许同时多个串流需求控制(Multicast),除了可以降低服务器端的网络用量,更进而支持多方视讯会议(Video Conference)。因为与HTTP1.1的运作方式相似,所以代理服务器〈Proxy〉的快取功能〈Cache〉也同样适用于RTSP,并因RTSP具有重新导向功能,可视实际负载情况来转换提供服务的服务器,以避免过大的负载集中于同一服务器而造成延迟。
希望能帮助您还请及时
以上就是道尔智控小编分享贡献者:(樱桃裙)贡献的关于“rstp机制有哪些”的问题了,不知是否已经解决你的问题?如果没有,下一篇内容可能是你想要的答案,现在接着继续评论下文用户【风清淡雅∝】解答的“求Pareto蚁群算法的源代码 Java的”的一些相关疑点做出分析与解答,如果能找到你的答案,可以关注本站。
求Pareto蚁群算法的源代码 Java的
本文贡献者:【风清淡雅∝】 ,解答(rtsp取帧人脸识别)的问题,欢迎阅读!
import java.io.File;
import static java.lang.Math.pow;
import static java.lang.Math.sqrt;
import static java.lang.Math.random;
import java.util.HashMap;
import java.io.FileReader;
import java.io.BufferedReader;
/**
*
* @author dvdface
*/
public class ACOforTSP {
//城市的距离表
private double[][] distance;
//距离的倒数表
private double[][] heuristic;
//启发信息表
private double[][] pheromone;
//权重
private int alpha, beta;
//迭代的次数
private int iterationTimes;
//蚂蚁的数量
private int numbersOfAnt;
//蒸发率
private double rate;
ACOforTSP (String file, int iterationTimes, int numbersOfAnt, int alpha, int beta, double rate) {
//加载文件
this.initializeData(file);
//初始化参数
this.iterationTimes = iterationTimes;
//设置蚂蚁数量
this.numbersOfAnt = numbersOfAnt;
//设置权重
this.alpha = alpha;
this.beta = beta;
//设置蒸发率
this.rate = rate;
}
private void initializeData(String filename) {
//定义内部类
class City {
int no;
double x;
double y;
City(int no, double x, double y) {
this.no = no;
this.x = x;
this.y = y;
}
private double getDistance(City city) {
return sqrt(pow((x - city.x), 2) + pow((y - city.y), 2));
}
}
try {
//定义HashMap保存读取的坐标信息
HashMap<Integer, City> map = new HashMap<Integer, City>();
//读取文件
BufferedReader reader = new BufferedReader(new FileReader(new File(filename)));
for (String str = reader.readLine(); str != null; str = reader.readLine()) {
//将读到的信息保存入HashMap
if (str.matches("([0-9]+)(\\s*)([0-9]+)(.)([0-9]*)(\\s*)([0-9]+)(.)([0-9]*)")) {
String[] data = str.split("(\\s+)");
City city = new City(Integer.parseInt(data[0]),
Double.parseDouble(data[1]),
Double.parseDouble(data[2]));
map.put(city.no, city);
}
}
//分配距离矩阵存储空间
distance = new double[map.size() + 1][map.size() + 1];
//分配距离倒数矩阵存储空间
heuristic = new double[map.size() + 1][map.size() + 1];
//分配信息素矩阵存储空间
pheromone = new double[map.size() + 1][map.size() + 1];
for (int i = 1; i < map.size() + 1; i++) {
for (int j = 1; j < map.size() + 1; j++) {
//计算城市间的距离,并存入距离矩阵
distance[i][j] = map.get(i).getDistance(map.get(j));
//计算距离倒数,并存入距离倒数矩阵
heuristic[i][j] = 1 / distance[i][j];
//初始化信息素矩阵
pheromone[i][j] = 1;
}
}
} catch (Exception exception) {
System.out.println("初始化数据失败!");
}
}
class Ant {
//已访问城市列表
private boolean[] visited;
//访问顺序表
private int[] tour;
//已访问城市的个数
private int n;
//总的距离
private double total;
Ant() {
//给访问顺序表分配空间
tour = new int[distance.length+1];
//已存入城市数量为n,刚开始为0
n = 0;
//将起始城市1,放入访问结点顺序表第一项
tour[++n] = 1;
//给已访问城市结点分配空间
visited = new boolean[distance.length];
//第一个城市为出发城市,设置为已访问
visited[tour[n]] = true;
}
private int chooseCity() {
//用来random的随机数
double m = 0;
//获得当前所在的城市号放入j,如果和j相邻的城市没有被访问,那么加入m
for (int i = 1, j = tour[n]; i < pheromone.length; i++) {
if (!visited[i]) {
m += pow(pheromone[j][i], alpha) * pow(heuristic[j][i], beta);
}
}
//保存随机到的数
double p = m * random();
//寻找被随机到的城市
double k = 0;
//保存找到的城市
int q = 0;
for (int i = 1, j = tour[n]; k < p; i++) {
if (!visited[i]) {
k += pow(pheromone[j][i], alpha) * pow(heuristic[j][i], beta);
q = i;
}
}
return q;
}
private void constructSolution () {
while (n != (distance.length-1) ) {
//选取下一个城市
int p = chooseCity();
//计算总的距离
total += distance[tour[n]][p];
//将选取到的城市放入已访问列表
tour[++n] = p;
//将选取到的城市标记为已访问
visited[p] = true;
}
//回到起点
total += distance[tour[1]][tour[n]];
//将起点加入访问顺序表的最后
tour[++n] = tour[1];
}
private void releasePheromone() {
//释放信息素的大小
double t = 1/total;
//释放信息素
for (int i=1;i<tour.length-1;i++) {
pheromone[tour[i]][tour[i+1]] += t;
pheromone[tour[i+1]][tour[i]] += t;
}
}
}
public void go() {
//保存最好的路径和路径长度
double bestTotal = Double.MAX_VALUE;
int[] bestTour = new int[distance.length+1];
//新建蚂蚁数组,用来引用所创建的蚂蚁
Ant[] ant = new Ant[numbersOfAnt];
//进行iterationTimes次迭代
while (iterationTimes != 0) {
//初始化新的一批蚂蚁(这里用构造新的蚂蚁代替重置蚂蚁状态)
for (int i=0; i<numbersOfAnt; i++) {
ant[i] = new Ant();
}
//进行一次迭代(即让所有的蚂蚁构建一条路径)
for (int i=0; i<numbersOfAnt; i++) {
ant[i].constructSolution();
//如果蚂蚁构建的路径长度比上次最好的还好,那么保存这个长度和它所走的路径
if (ant[i].total<bestTotal) {
bestTotal = ant[i].total;
System.arraycopy(ant[i].tour, 1, bestTour, 1, bestTour.length-1);
}
}
//蒸发信息素
evaporatePheromone();
//释放信息素
for (int i=0; i<numbersOfAnt; i++) {
ant[i].releasePheromone();
}
//报告本次迭代的信息
System.out.format("本次为倒数第%d次迭代,当前最优路径长度为%10.2f\n",iterationTimes,bestTotal);
//迭代总数减去1,进行下次迭代
iterationTimes--;
}
//输出最好的路径长度
System.out.format("得到的最优的路径长度为:%10.2f\n",bestTotal);
//输出最好的路径
System.out.println("最优路径如下:");
for (int i=1; i<bestTour.length; i++) {
System.out.print("→"+bestTour[i]);
}
}
private void evaporatePheromone() {
for (int i = 1; i < pheromone.length; i++)
for (int j = 1; j < pheromone.length; j++) {
pheromone[i][j] *= 1-rate;
}
}
}
上文就是道尔智控小编解疑贡献者:(风清淡雅∝)解答的关于“求Pareto蚁群算法的源代码 Java的”的问题了,不知是否已经解决你的问题?如果没有,下一篇内容可能是你想要的答案,接下来继续祥解下文用户【糖果味少女】分析的“ssrc音效怎么样”的一些相关疑点做出分析与解答,如果能找到你的答案,可以关注本站。
ssrc音效怎么样
热心用户提供:【糖果味少女】 ,解答(rtsp取帧人脸识别)的问题,欢迎阅读!
最佳答案流媒体技术基础-流媒体传输协议
作者/来源:未知
实时传输协议RTP与RTCP
RTP(Real-timeTransportProtocol)是用于Internet上针对多媒体数据流的一种传输协议。RTP被定义为在一对一或一对多的传输情况下工作,其目的是提供时间信息和实现流同步。RTP通常使用UDP来传送数据,但RTP也可以在TCP或ATM等其他协议之上工作。当应用程序开始一个RTP会话时将使用两个端口:一个给RTP,一个给RTCP。RTP本身并不能为按顺序传送数据包提供可靠的传送机制,也不提供流量控制或拥塞控制,它依靠RTCP提供这些服务。通常RTP算法并不作为一个独立的网络层来实现,而是作为应用程序代码的一部分。实时传输控制协议RTCP。RTCP(Real-timeTransportControlProtocol)和RTP一起提供流量控制和拥塞控制服务。在RTP会话期间,各参与者周期性地传送RTCP包。RTCP包中含有已发送的数据包的数量、丢失的数据包的数量等统计资料,因此,服务器可以利用这些信息动态地改变传输速率,甚至改变有效载荷类型。RTP和RTCP配合使用,它们能以有效的反馈和最小的开销使传输效率最佳化,因而特别适合传送网上的实时数据。
6.2.1 RTP数据传输协议
RTP提供端对端网络传输功能,适合通过组播和点播传送实时数据,如视频、音频和仿真数据。RTP没有涉及资源预订和质量保证等实时服务,RTCP扩充数据传输以允许监控数据传送,提供最小的控制和识别功能。RTP与RTCP设计成独立传输和网络层。
2.1.1 RTP固定头
RTP 头格式如下:
-----------------------------------------------------------------------------------------------
|V=2|P|X| CC |M| PT | 系列号 |
-----------------------------------------------------------------------------------------------
| 时标 |
-----------------------------------------------------------------------------------------------
| 同步源标识(SSRC) |
-----------------------------------------------------------------------------------------------
| 作用标识 (CSRC) |
| |
-----------------------------------------------------------------------------------------------
开始12个八进制出现在每个RTP包中,而CSRC标识列表仅出现在混合器插入时。
2.1.2 复用 RTP 连接
为使协议有效运行,复用点数目应减至最小。RTP中,复用由定义RTP连接的目的传输地址(网络地址与端口号)提供。例如,对音频和视频单独编码的远程会议,每个媒介被携带在单独RTP连接中,具有各自的目的传输地址。目标不在将音频和视频放在单一RTP连接中,而根据SSRC段载荷类型进行多路分解。使用同一SSRC ,而具有不同载荷类型的交叉包将带来几个问题:
如一种载荷类型在连接期间切换,没有办法识别新值将替换那一个旧值。
SSRC定义成用于标识单个计时和系列号空间。如媒体时钟速率不同,而要求不同系列号空间以说明那种载荷类型有丢包,交叉复用载荷类型将需要不同计时空间。
RTCP发送和接收报告可能仅描述每个SSRC的计时和系列号空间,而不携带载荷类型段。
RTP混合器不能将不兼容媒体流合并成一个流。
在一个RTP连接中携带多个媒介阻止几件事:使用不同网络路径或网络资源分配;接受媒介子集。
对每种媒介使用不同SSRC,但以相同RTP连接发送可避免前三个问题,但不能避免后两个问题。
2.1.3 对RTP头特定设置的修改
可以认为,现用RTP数据包头对RTP支持的所有应用类共同需要的功能集是完整的。然而,为维持ALF设计原则,头可通过改变或增加设置来裁剪,并仍允许设置无关监控和记录工具起作用。标记位与载荷类型段携带特定设置信息,但由于很多应用需要它们,否则要容纳它们,就要增加另外32位字,故允许分配在固定头中。包含这些段的八进制可通过设置重新定义以适应不同要求,如采用更多或更少标记位。如有标记位,既然设置无关监控器能观察包丢失模式和标记位间关系,我们就可以定位八进制中最重要的位。
其它特殊载荷格式(视频编码)所要求的信息应该携带在包的载荷部分。可出现在头,总是在载荷部分开始处,或在数据模式的保留值中指出。如特殊应用类需要独立载荷格式的附加功能,应用运行的设置应该定义附加固定段跟随在现存固定头SSRC之后。这些应用将能迅速而直接访问附加段,同时,与监控器和记录器无关设置仍能通过仅解释开始12个八进制处理RTP包。如证实附加功能是所有设置共同需要的,新版本RTP应该对固定头作出明确改变
6.2.2 RTP控制协议-- RTCP
RTCP协议将控制包周期发送给所有连接者,应用与数据包相同的分布机制。低层协议提供数据与控制包的复用,如使用单独的UDP端口号。RTCP执行下列四大功能:
主要是提供数据发布的质量反馈。是作为RTP传输协议的一部分,与其他传输协议的流和阻塞控制有关。反馈对自适应编码控制直接起作用,但IP组播经验表明,从发送者收到反馈对诊断发送错误是致关重要的。给所有参加者发送接收反馈报告允许问题观察者估计那些问题是局部的,还是全局的。诸如IP组播等发布机制使网络服务提供商类团体可能接收反馈信息,充当第三方监控者来诊断网络问题。反馈功能由RTCP发送者和接收者报告执行。
RTCP带有称作规范名字(CNAME)的RTP源持久传输层标识。如发现冲突,或程序重新启动,既然SSRC标识可改变,接收者需要CNAME跟踪参加者。接收者也需要CNAME 与相关RTP连接中给定的几个数据流联系
前两种功能要求所有参加者发送RTCP包,因此,为了RTP扩展到大规模数量,速率必须受到控制。让每个参加者给其它参加者发送控制包,就大独立观察参加者数量。该数量用语计算包发送的速率。
第四个可选功能是传送最小连接控制信息,如参加者辨识。最可能用在\"松散控制\"连接,那里参加者自由进入或离开,没有成员控制或参数协调,RTCP充当通往所有参加者的方便通道,但不必支持应用的所有控制通讯要求。高级连接控制协议超出本书范围。
在IP组播场合应用RTP时,前3个功能是必须的,推荐用于所有情形。RTP应用设计人员必须避免使用仅在单播模式下工作的机制,那将导致无法扩展规模。
6.2.2.1 RTCP 包格式
下面定义几个携带不同控制信息的RTCP包类型:
SR:
发送报告,当前活动发送者发送、接收统计。
RR:
接收报告,非活动发送者接收统计。
SDES:
源描述项,包括CNAME。
BYE:
表示结束。
APP:
应用特定函数。
类似于RTP数据包,每个RTCP包以固定部分开始,紧接着的是可变长结构元素,但以一个32位边界结束。包含安排要求和固定部分中长度段,使RTCP包可堆叠。不需要插入任何分隔符将多哥RTCP包连接起来形成一个RTCP组合包,以低层协议用单一包发送出去。由于需要低层协议提供提供整体长度来决定组合包的结尾,在组合包中没有单个RTCP包显式计数。
组合包中每个RTCP包可独立处理,不需要根据包组合顺序。但未了执行协议功能,强加如下约束:
接收统计(在SR或RR中)应该经常发送,只要带宽允许,因此每个周期发送的组合RTCP 包应包含报告包。
新接收者需要接收CNAME,并尽快识别源,开始联系媒介进行同步,因此每个包应该包含SDES CNAME。
出现在组合包前面的是包类型数量,其增长应该受到限制,以提高常数位数量,提高成功确认RTCP包对错误地址RTP数据包或其他无关包的概率。
因此,所有RTCP包至少必须以两个包组合形式发送,推荐格式如下:
加密前缀(Encryption prefix):
仅当组合包被加密,才加上一个32位随机数用于每个组合包发送。
SR或RR:
组合包中第一个RTCP包必须总为一个报告包,方便头的确认。即使没有数据发送,也没有接收到数据,也要发送一个空RR,那怕组合包中RTCP包为BYE。
附加RR:
如报告统计源数目超过31,在初始报告包后应该有附加RR 包。
SDES:
包含CNAME 项的SDES包必须包含在每个组合RTCP包中。如应用要求,其他源描述项可选,但受到带宽限制。
BYE或APP:
其它RTCP包类型可以任意顺序排列,除了BYE应作为最后一个包发送,包类型出现可不止一次。
建议转换器或混合器从多个源组合单个RTCP包。如组合包整体长度超过网络路径最大传输单元,可分成多个较短组合包用低层协议以单个包形式发送。注意,每个组合包必须以SR或RR包开始。附加RTCP包类型可在Internet Assigned Numbers Authority (IANA)处注册。
6.2.2.2 RTCP传输间隔
RTP设计成允许应用自动扩展,连接数可从几个到上千个。例如,音频会议中,数据流量是内在限制的,因为同一时刻只有一两个人说话;对组播,给定连接数据率仍是常数,独立于连接数,但控制流量不是内在限制的。如每个参加者以固定速率发送接收报告,控制流量将随参加者数量线性增长,因此,速率必须按比例下降。
一旦确认地址有效,如后来标记成未活动,地址的状态应仍保留,地址应继续计入共享RTCP带宽地址的总数中,时间要保证能扫描典型网络分区,建议为30分钟。注意,这仍大于RTCP报告间隔最大值的五倍。
这个规范定义了除必需的CNAME外的几个源描述项,如NAME(人名)和EMAIL(电子邮件地址)。它也为定义新特定应用RTCP包类型的途径。给附加信息分配控制带宽应引起注意,因为它将降低接收报告和CNAME发送的速率而损害协议的性能。建议分配给单个参加者用于携带附加信息的RTCP带宽不要超过20%。而且并没有有意让所有SDES项包含在每个应用中。
6.2.2.3 发送者与接收者报告
RTP接收者使用RTCP报告包提供接收质量反馈,报告包根据接收者是否是发送者而采用两种格式中的一种。除包类型代码外,发送者报告与接收者报告间唯一的差别是发送者报告包含一个20个字节发送者信息段。如某地址在发出最后或前一个报告间隔期间发送数据包,就发布SR;否则,就发出RR;SR和RR都可没有或包括多个接收报告块。发布报告不是为列在CSRC列表上的起作用的源,每个接收报告块提供从特殊源接收数据的统计。既然最大可有31个接收报告块嵌入在SR 或 RR包中,
丢失包累计数差别给出间隔期间丢掉的数量,而所收到扩展的最后一个系列号的差别给出间隔期间希望发送的包数量,两者之比等于经过间隔期间包丢失百分比。如两报告连续,比值应该等于丢失段部分;否则,就不等。每秒包丢失绿可通过NTP时标差除以丢失部分得到。
从发送者信息,第三方监控器可计算载荷平均数据速率与没收到数据间隔的平均包速率,两者比值给出平均载荷大小。如假设包丢失与包大小无关,那么特殊接收者收到的包数量给出此接收者收到的表观流量。
6.2.2.4 SDES: 源描述RTCP包
SDES 包为三层结构,由头与数据块组成,数据块可以没有,也可有多个,组成项描述块所表明的源。项描述如下:
版本(V)、填充(P)、长度:
如SR包中所描述。
包类型(PT):
8位,包含常数202,识别RTCP SDES包。
源计数(SC):
5位,包含在SDES包中的SSRC/CSRC块数量,零值有效,但没有意义。
源描述项内容如下:
CNAME: 规范终端标识SDES项
CNAME标识属性如下:
如发生冲突或重启程序,由于随机分配的SSRC标识可能发生变化,需要CNAME项提供从SSRC标识到仍为常量的源标识的绑定。
象SSRC标识,CNAME标识在RTP连接的所有参加者中应是唯一的。
为了提供一套相关RTP连接中某个参加者所采用的跨多媒体工具间的绑定,CNAME应固定为那个参加者。
为方便第三方监控,CNAME应适合程序或人员定位源。
NAME:用户名称SDES项
这是用于描述源的真正的名称,如\"John Doe, Bit Recycler, Megacorp\",可是用户想要的任意形式。对诸如会议应用,这种名称也许是参加者列表显示最适宜的形式,它将是除CNAME外发送最频繁的项目。设置可建立这样的优先级别。NAME值至少在连接期间仍希望保持为常数。它不该成为连接的所有参加者中唯一依赖。
EMAIL:电子邮件地址SDES项
邮件地址格式由RFC822规定,如\"John.Doe@megacorp.com\"。连接期间,电子邮件仍希望保持为常数。
PHONE:电话号码SDES项
电话号码应带有加号,代替国际接入代码,如\"+1 908 555 1212\"即为美国电话号码。
LOC:用户地理位置SDES项
根据应用,此项具有不同程度的细节。对会议应用,字符串如\"Murray Hill, New Jersey\"就足够了。然而,对活动标记系统,字符串如\"Room 2A244, AT&T BL MH\"也许就适用。细节留给实施或用户,但格式和内容可用设置指示。在连接期间,除移动主机外,LOC值期望仍保留为常数。
TOOL:应用或工具名称SDES项
是一个字符串,表示产生流的应用的名称与版本,如\"videotool 1.2\"。这部分信息对调试很有用,类似于邮件或邮件系统版本SMTP头。TOOL值在连接期间仍保持常数。
NOTE: 通知/状态SDES项
该项的推荐语法如下所述,但这些或其它语法可在设置中显式定义。NOTE 项旨在描述源当前状态的过渡信息,如\"on the phone, can´t talk\",或在讲座期间用于传送谈话的题目。它应该只用于携带例外信息,而不应包含在全部参加者中,因为这将降低接收报告和CNAME发送的,因此损害协议的性能。特殊情况下,它不应作为用户设置文件的项目,也不是自动产生。
当其为活动时,由于NOTE项对显示很重要,其它非CNAME项(如NAME)传输速率将会降低,结果使NOTE项占用RTCP部分带宽。若过渡信息不活跃,NOTE项继续以同样的重复发送几次,但以一个串长为零的字符串通知接收者。然而,如对小倍数的重复或约20-30 RTCP间隔也没有接收到,接收者也应该考虑NOTE项是不活跃的。
PRIV: 专用扩展SDES项
该项用于定义实验或应用特定的SDES扩展,它包括由长字符串对组成的前缀,后跟填充该项其他部分和携带所需信息的字符串值。前缀长度段为8位。前缀字符串是定义PRIV项人员选择的名称,唯一对应应用接收到的其它PRIV项。应用实现者可选择使用应用名称,如有必要,外加附加子类型标识。另外,推荐其它人根据其代表的实体选择名称,然后,在实体内部协调名称的使用。
注意,前缀消耗了总长为255个八进制项的一些空间,因此,前缀应尽可能的短。这个设备和受到约束的RTCP带宽不应过载,其目的不在于满足所有应用的全部控制通讯要求。SDES PRIV前缀没在IANA处注册。如证实某些形式的PRIV项具有通用性, IANA应给它分配一个正式的SDES项类型,这样就不再需要前缀。这简化了应用,并提高了传输的效率。
6.2.2.5 BYE:断开RTCP包
如混合器接收到一个BYE包,混合器转发BYE包,而不改变SSRC/CSRC 标识。如混合器关闭,它也应该发出一个BYE包,列出它所处理的所有源,而不只是自己的SSRC标识。作为可选项,BYE包可包括一个8位八进制计数,后跟很多八进制文本,表示离开原因,如:\"camera malfunction\"或\"RTP loop detected\"。字符串具有同样的编码,如在SDES 中所描述的。如字符串填充包至下32位边界,字符串就不以空结尾;否则,BYE包以空八进制填充。
6.2.2.6 APP:定义应用的RTCP包
APP包用于开发新应用和新特征的实验,不要求注册包类型值。带有不可识别名称的APP包应被忽略掉。测试后,如确定应用广泛,推荐重新定义每个APP包,而不用向IANA注册子类型和名称段。
实时流协议RTSP
实时流协议RTSP(RealTimeStreamingProtocol)是由RealNetworks和Netscape共同提出的,该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或RTP完成数据传输。HTTP与RTSP相比,HTTP传送HTML,而RTP传送的是多媒体数据。HTTP请求由客户机发出,服务器作出响应;使用RTSP时,客户机和服务器都可以发出请求,即RTSP可以是双向的。
6.3 RTSP协议
实时流协议(RTSP)是应用级协议,控制实时数据的发送。RTSP提供了一个可扩展框架,使实时数据,如音频与视频,的受控、点播成为可能。数据源包括现场数据与存储在剪辑中数据。该协议目的在于控制多个数据发送连接,为选择发送通道,如UDP、组播UDP与TCP,提供途径,并为选择基于RTP上发送机制提供方法。
6.3.1 简介
6.3.1.1 目的
实时流协议(RTSP)建立并控制一个或几个时间同步的连续流媒体。尽管连续媒体流与控制流交叉是可能的,通常它本身并不发送连续流。换言之,RTSP充当多媒体服务器的网络远程控制。RTSP连接没有绑定到传输层连接,如TCP。在RTSP连接期间,RTSP用户可打开或关闭多个对服务器的可靠传输连接以发出RTSP 请求。此外,可使用无连接传输协议,如UDP。RTSP流控制的流可能用到RTP,但RTSP操作并不依赖用于携带连续媒体的传输机制。实时流协议在语法和操作上与HTTP/1.1类似,因此HTTP的扩展机制大都可加入RTSP。协议支持的操作如下:
从媒体服务器上检索媒体:
用户可通过HTTP或其它方法提交一个演示描述。如演示是组播,演示式就包含用于连续媒体的的组播地址和端口。如演示仅通过单播发送给用户,用户为了安全应提供目的地址。
媒体服务器邀请进入会议:
媒体服务器可被邀请参加正进行的会议,或回放媒体,或记录其中一部分,或全部。这种模式在分布式教育应用上很有用,会议中几方可轮流按远程控制按钮。
将媒体加到现成讲座中:
如服务器告诉用户可获得附加媒体内容,对现场讲座显得尤其有用。如HTTP/1.1中类似,RTSP请求可由代理、通道与缓存处理。
6.3.1.2 协议特点
RTSP 特性如下:
可扩展性:
新方法和参数很容易加入RTSP。
易解析:
RTSP可由标准 HTTP或MIME解吸器解析。
安全:
RTSP使用网页安全机制。
独立于传输:
RTSP可使用不可靠数据报协议(UDP)、可靠数据报协议(RDP),如要实现应用级可靠,可使用可靠流协议。
多服务器支持:
每个流可放在不同服务器上,用户端自动同不同服务器建立几个并发控制连接,媒体同步在传输层执行。
记录设备控制:
协议可控制记录和回放设备。
流控与会议开始分离:
仅要求会议初始化协议提供,或可用来创建唯一会议标识号。特殊情况下, SIP或H.323
可用来邀请服务器入会。
适合专业应用:
通过SMPTE 时标,RTSP支持帧级精度,允许远程数字编辑
演示描述中立:
协议没强加特殊演示或元文件,可传送所用格式类型;然而,演示描述至少必须包含一个RTSP URI。
代理与防火墙友好:
协议可由应用和传输层防火墙处理。防火墙需要理解SETUP方法,为UDP媒体流打开一个\"缺口\"。
HTTP友好:
此处,RTSP明智的采用HTTP观念,使现在结构都可重用。结构包括Internet 内容选择平台(PICS)。由于在大多数情况下控制连续媒体需要服务器状态, RTSP不仅仅向HTTP 添加方法。
适当的服务器控制:
如用户启动一个流,他必须也可以停止一个流。
传输协调;
实际处理连续媒体流前,用户 可协调传输方法。
性能协调:
如基本特征无效,必须有一些清理机制让用户决定那种方法没生效。这允许用户提出适合的用户界面。
6.3.1.3扩展RTSP
由于不是所有媒体服务器有着相同的功能,媒体服务器有必要支持不同请求集。RTSP 可以如下三种方式扩展,这里以改变大小排序:
以新参数扩展。如用户需要拒绝通知,而方法扩展不支持,相应标记就加入要求的段中。
加入新方法。如信息接收者不理解请求,返回501错误代码(还未实现),发送者不应再次尝试这种方法。用户可使用OPTIONS方法查询服务器支持的方法。服务器使用公共响应头列出支持的方法。
定义新版本协议,允许改变所有部分。(除了协议版本号位置)
6.3.1.4操作模式
每个演示和媒体流可用RTSP URL识别。演示组成的整个演示与媒体属性由演示描述文件定义。使用HTTP或其它途径用户可获得这个文件,它没有必要保存在媒体服务器上。
为了说明,假设演示描述描述了多个演示,其中每个演示维持了一个公共时间轴。为简化说明,且不失一般性,假定演示描述的确包含这样一个演示。演示可包含多个媒体流。除媒体参数外,网络目标地址和端口也需要决定。下面区分几种操作模式:
单播:
以用户选择的端口号将媒体发送到RTSP请求源。
组播,服务器选择地址:
媒体服务器选择组播地址和端口,这是现场直播或准点播常用的方式。
组播,用户选择地址:
如服务器加入正在进行的组播会议,组播地址、端口和密匙由会议描述给出。
6.3.1.5 RTSP状态
RTSP控制通过单独协议发送的流,与控制通道无关。例如,RTSP控制可通过TCP连接,而数据流通过UDP。因此,即使媒体服务器没有收到请求,数据也会继续发送。在连接生命期,单个媒体流可通过不同TCP连接顺序发出请求来控制。所以,服务器需要维持能联系流与RTSP请求的连接状态。RTSP中很多方法与状态无关,但下列方法在定义服务器流资源的分配与应用上起着重要的作用:
SETUP:
让服务器给流分配资源,启动RTSP连接。
PLAY与RECORD:
启动SETUP 分配流的数据传输。
PAUSE:
临时停止流,而不释放服务器资源。
TEARDOWN:
释放流的资源,RTSP连接停止。
标识状态的RTSP方法使用连接头段识别RTSP连接,为响应SETUP请求,服务器连
接产生连接标识。
6.3.1.6 与其他协议关系
RTSP在功能上与HTTP有重叠,与HTTP相互作用体现在与流内容的初始接触是通过网页的。目前的协议规范目的在于允许在网页服务器与实现RTSP媒体服务器之间存在不同传递点。例如,演示描述可通过HTTP和RTSP检索,这降低了浏览器的往返传递,也允许独立RTSP 服务器与用户不全依靠HTTP。
但是,RTSP与HTTP 的本质差别在于数据发送以不同协议进行。HTTP是不对称协议,用户发出请求,服务器作出响应。RTSP中,媒体用户和服务器都可发出请求,且其请求都是无状态的;在请求确认后很长时间内,仍可设置参数,控制媒体流。重用HTTP功能至少在两个方面有好处,即安全和代理。要求非常接近,在缓存、代理和授权上采用HTTP功能是有价值的。
当大多数实时媒体使用RTP作为传输协议时,RTSP没有绑定到RTP。RTSP假设存在演示描述格式可表示包含几个媒体流的演示的静态与临时属性。
6.3.2 协议参数
6.3.3 RTSP 信息
RTSP是基于文本的协议,采用ISO 10646 字符集,使用UTF-8编码方案。行以CRLF中断,但接收者本身可将CR和LF解释成行终止符。基于文本的协议使以自描述方式增加可选参数更容易。由于参数的数量和命令的频率出现较低,处理效率没引起注意。如仔细研究,文本协议很容易以脚本语言(如:Tcl、Visual Basic与Perl)实现研究原型。
10646字符集避免敏感字符集切换,但对应用来说不可见。RTCP也采用这种编码方案。带有重要意义位的ISO 8859-1字符表示如100001x 10xxxxxx.。RTSP信息可通过任何低层传输协议携带。
请求包括方法、方法作用于其上的对象和进一步描述方法的参数。方法也可设计为在服务器端只需要少量或不需要状态维护。当信息体包含在信息中,信息体长度有如下因素决定:
不管实体头段是否出现在信息中,不包括信息体的的响应信息总以头段后第一和空行结束。
如出现内容长度头段,其值以字节计,表示信息体长度。如未出现头段,其值为零。
服务器关闭连接。
注意:RTSP目前并不支持HTTP/1.1\"块\"传输编码,需要有内容长度头。假如返回适度演示描述长度,即使动态产生,使块传输编码没有必要,服务器也应该能决定其长度。如有实体,即使必须有内容长度,且长度没显式给出,规则可确保行为合理。
从用户到服务器端的请求信息在第一行内包括源采用的方法、源标识和所用协议版本。RTSP定义了附加状态代码,而没有定义任何HTTP代码。
6.3.4 实体
如不受请求方法或响应状态编码限制,请求和响应信息可传输实体,实体由实体头文件和试题体组成,有些响应仅包括实体头。在此,根据谁发送实体、谁接收实体,发送者和接收者可分别指用户和服务器。
实体头定义实体体可选元信息,如没有实体体,指请求标识的资源。扩展头机制允许定义附加实体头段,而不用改变协议,但这些段不能假定接收者能识别。不可识别头段应被接收者忽略,而让代理转发。
6.3.5 连接
RTSP请求可以几种不同方式传送:
1、持久传输连接,用于多个请求/响应传输。
2、每个请求/响应传输一个连接。
3、无连接模式。
传输连接类型由RTSP URI来定义。对 \"rtsp\" 方案,需要持续连接;而\"rtspu\"方案,调用RTSP 请求发送,而不用建立连接。
不象HTTP,RTSP允许媒体服务器给媒体用户发送请求。然而,这仅在持久连接时才支持,否则媒体服务器没有可靠途径到达用户,这也是请求通过防火墙从媒体服务器传到用户的唯一途径。
6.3.6 方法定义
方法记号表示资源上执行的方法,它区分大小写。新方法可在将来定义,但不能以$开头。
某些防火墙设计与其
参考资料:
在这个网站里有下载方式
你可以查看一下
本文关于[rtsp取帧人脸识别]的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。