欢迎来到天天文库
浏览记录
ID:49195242
大小:666.50 KB
页数:23页
时间:2020-03-01
《[流媒体]实例解析mms流媒体协议.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、[流媒体]实例解析MMS流媒体协议,下载LiveMediaVideo[l][修正版,增加了带宽测试包]通过nims://220.194.63.17/cebeiJing8,我们可以看到交通部门设置在北京西直门上的摄像头的实时录像,从而了解西直门的交通状况。但是,要是想下载这个流媒体到本地的话,我试验了asfr+、ASFRecorder以及StreamBoxver,均无法下载。又找了一个mimms-0.0.9的linux版本,也就是以前的mmsclient,将其依赖于Linux的某些函数库换成Windows版本的对应包,编译之后,可以下载mms://220.194.63.17/cebeijing
2、8的数据,但是用WindowsMediaPlayer9播放的时候,却报告错误“无法播放,因为此文件已损坏”。只冇SDP2.0(StreamingDownloadProject)可以正常下载并播放它。为了改造mimms,我分析了SDP和流媒体服务器的来往包,看看我和他的实现到底存在哪些差异。如果你也开发流媒体下载应用,希望这个分析对你理解“MicrosoftWindowsMediaServices”协议有帮助。对了,编码格式是“LittleEndian”,也就是Of000000的实际值是OxOf=下面是每一个数据包。我们对每一个“包头”和“包体”的每一个字节都做了尽可能详细的分析。第一对包:c
3、lienttoserver吿知Player版本号00903b00200000000000000000000000“包头”解释:•“01000000”是客户端向服务器端发包的固定开头。以后你会看到每一个包都是如此开头的。"字节。•“cefaObb0”,这也是固定不变的。通常被人称为“BOOBFACE”。他可能是一个版本号或者序列号。以后你会看到客户端和服务器端发出的每一个包都是如此开头的。4字节。•"58000000”,表明在“协议类型(也就是接下来的M4d5320)”后面的所有数据的长度。1字节。•“4d4d5320”,表明协议类型,就是“MMS”的ASCII码。4字节。•"O
4、b000000",Lengthunt订endofpacketin8byteboundarylengths,Includingowndatafieldo4字节。•“00000000”,Sequencenumber«4字节。•"000()()00()0()0()000()98字节。Doubleprecisiontimestamp(seenotes)usedfornetworktiming。•"09000000"9Lengthunt订endofpacketin8byteboundarylengths.Includingowndatafield。4字节。•“01000300”,扌旨的是“Comm2b
5、ytesDir2bytes”。0100是Command数值。0300是Direction数值,这里的0x03指明客户端发往服务器。4字节。按照我的理解,上面的可以算作包头,每个客户端发出的数据包差不多都有类似的头。在"Comm2bytesDir2bytes"之后,就是这个包的Body了。“包体”解释:“fOfOfOfO”MMS协议标志1o“Ob000100”,不知道。“lc()003()()”,不知道。“h()()530050006c0061007900650072002f0037002e00310000300()2c0031003900350036003b002000”,英实就是“NSPl
6、ayer/7.1.0.1956;”的ASCII码。这是向服务器说明客户端的播放器的版本名。值得注意的是,这个版本名字必须以“NSPInvert头,否则MMS服务器将不管你的请求是什么,强制返回给客户端一个15秒的电影文件“UpgradeYourPlayer",用来展示如何升级你的播放器。“NSPbyer”后面跟随的版本号无所谓是什么,比如mimms的是“9.0.0.2800”。•“00000000000000000000”,补零的部分。实际上,上面第一个包体应该是类似于这样的格式:NSPlayer/版本号;{128位的客户端GUID};Host:7、pace>服务器的IP地址举一个实际的例子:NSPlaver/9.0.0.2800;{f5cec3a0-3e2c-llda-b2a2-00055dla21bd};Host:220.194.63.17但是,抓SDP2.0得到的包有点不一样。第一对包:servertoclient告知服务器版本号以及加密协议“包头”解释:•"01000000cefaObb0”是服务器端向客户端发包的“BOOBFACE”固定开头。以
7、pace>服务器的IP地址举一个实际的例子:NSPlaver/9.0.0.2800;{f5cec3a0-3e2c-llda-b2a2-00055dla21bd};Host:220.194.63.17但是,抓SDP2.0得到的包有点不一样。第一对包:servertoclient告知服务器版本号以及加密协议“包头”解释:•"01000000cefaObb0”是服务器端向客户端发包的“BOOBFACE”固定开头。以
此文档下载收益归作者所有