欢迎来到天天文库
浏览记录
ID:47030910
大小:202.52 KB
页数:23页
时间:2019-07-01
《[流媒体]实例解析MMS流媒体协议》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、[流媒体]实例解析MMS流媒体协议,下载LiveMediaVideo[1][修正版,增加了带宽测试包]通过mms://220.194.63.17/cebeijing8,我们可以看到交通部门设置在北京西直门上的摄像头的实时录像,从而了解西直门的交通状况。但是,要是想下载这个流媒体到本地的话,我试验了asfr+、ASFRecorder以及StreamBoxvcr,均无法下载。又找了一个mimms-0.0.9的linux版本,也就是以前的mmsclient,将其依赖于Linux的某些函数库换成Windows版本的对应包,编译之后,可以下载mms:/
2、/220.194.63.17/cebeijing8的数据,但是用WindowsMediaPlayer9播放的时候,却报告错误“无法播放,因为此文件已损坏”。只有SDP2.0(StreamingDownloadProject)可以正常下载并播放它。为了改造mimms,我分析了SDP和流媒体服务器的来往包,看看我和他的实现到底存在哪些差异。如果你也开发流媒体下载应用,希望这个分析对你理解“MicrosoftWindowsMediaServices”协议有帮助。对了,编码格式是“LittleEndian”,也就是0f000000的实际值是0x0f。
3、下面是每一个数据包。我们对每一个“包头”和“包体”的每一个字节都做了尽可能详细的分析。 第一对包:clienttoserver告知Player版本号 第一回合之第一个包:toserver;Len=104:003001000000cefa0bb05800...a..........X.004000004d4d53200b000000000000000000..MMS..........00500000000000000900000001000300f0f0................0060f0f00b0004001c0003004e005
4、3005000..........N.S.P.00706c0061007900650072002f0037002e00l.a.y.e.r./.7...23008031002e0030002e0031003900350036001...0...1.9.5.6.00903b00200000000000000000000000;............“包头”解释:l “01000000”是客户端向服务器端发包的固定开头。以后你会看到每一个包都是如此开头的。4字节。l “cefa0bb0”,这也是固定不变的。通常被人称为
5、“BOOBFACE”。他可能是一个版本号或者序列号。以后你会看到客户端和服务器端发出的每一个包都是如此开头的。4字节。l “58000000”,表明在“协议类型(也就是接下来的4d4d5320)”后面的所有数据的长度。4字节。l “4d4d5320”,表明协议类型,就是“MMS”的ASCII码。4字节。l “0b000000”,Lengthuntilendofpacketin8byteboundarylengths,Includingowndatafield。4字节。l “
6、00000000”,Sequencenumber。4字节。l “0000000000000000”,8字节。Doubleprecisiontimestamp(seenotes)usedfornetworktiming。l “09000000”,Lengthuntilendofpacketin8byteboundarylengths.Includingowndatafield。4字节。l “01000300”,指的是“Comm2bytes
7、Dir2bytes”。0100是Command数值。0300是D
8、irection数值,这里的0x03指明客户端发往服务器。4字节。23按照我的理解,上面的可以算作包头,每个客户端发出的数据包差不多都有类似的头。在“Comm2bytes
9、Dir2bytes”之后,就是这个包的Body了。“包体”解释:l “f0f0f0f0”,MMS协议标志1。l “0b000400”,不知道。l “1c000300”,不知道。l “4e00530050006c0061007900650072002f0037002e0031002e0030002e00310039003
10、50036003b002000”,其实就是“NSPlayer/7.1.0.1956;”的ASCII码。这是向服务器说明客户端的播放器的版本名。值得注意
此文档下载收益归作者所有