分享
 
 
 

[流媒体]实例解析MMS流媒体协议,下载LiveMediaVideo[3]

王朝system·作者佚名  2006-12-17
窄屏简体版  字體: |||超大  

[流媒体]实例解析MMS流媒体协议,下载LiveMediaVideo[3]

[流媒体]实例解析MMS流媒体协议,下载LiveMediaVideo[3] [流媒体]按照MMS协议和MS Media Server交互

下载实时交通录像的包分析[3]

编写者

日期

关键词

郑昀@ultrapower

2005-10-17

mms streaming protocol

ethereal 协议分析 流媒体

通过mms://220.194.63.17/cebeijing8,我们可以看到交通部门设置在北京西直门上的摄像头的实时录像,从而了解西直门的交通状况。

但是,要是想下载这个流媒体到本地的话,我试验了asfr+、ASF Recorder以及StreamBox vcr,均无法下载。又找了一个mimms-0.0.9的linux版本,也就是以前的mmsclient,将其依赖于Linux的某些函数库换成Windows版本的对应包,编译之后,可以下载mms://220.194.63.17/cebeijing8的数据,但是用WindowsMediaPlayer9播放的时候,却报告错误“无法播放,因为此文件已损坏”。

只有SDP2.0(Streaming Download Project)可以正常下载并播放它。

为了改造mimms,我分析了SDP和流媒体服务器的来往包,看看我和他的实现到底存在哪些差异。如果你也开发流媒体下载应用,希望这个分析对你理解 “Microsoft Windows Media Services”协议有帮助。

下面是从第3到第6个数据包。我们对每一个“包头”和“包体”的每一个字节都做了尽可能详细的分析。

对了,编码格式是“Little Endian”,也就是0f 00 00 00的实际值是0x0f。

第3个包:client to server

第3个包:to server;Len=112:

0030 01 00 00 00 ce fa 0b b0 60 00 ..............`.

0040 00 00 4d 4d 53 20 0c 00 00 00 02 00 00 00 00 00 ..MMS ..........

0050 00 00 00 00 00 00 0a 00 00 00 02 00 03 00 f1 f0 ................

0060 f0 f0 ff ff ff ff 00 00 00 00 00 00 a0 00 02 00 ................

0070 00 00 5c 00 5c 00 31 00 39 00 32 00 2e 00 31 00 ..\.\.1.9.2...1.

0080 36 00 38 00 2e 00 31 00 2e 00 38 00 35 00 5c 00 6.8...1...8.5.\.

0090 54 00 43 00 50 00 5c 00 32 00 35 00 31 00 36 00 T.C.P.\.2.5.1.6.

00a0 00 00 00 00 00 00

“包头”解释:

l “01 00 00 00 ce fa 0b b0”是服务器端向客户端发包的“BOOB FACE”固定开头。以后你会看到每一个包都是如此开头的。8字节。

l “60 00 00 00”,表明在“协议类型(也就是接下来的4d 4d 53 20)”后面的所有数据的长度。4字节。

l “4d 4d 53 20”,表明协议类型,就是“MMS<space>”的ASCII码。4字节。

l “0c 00 00 00”,Length until end of packet in 8 byte boundary lengths,Including own data field。4字节。

l “02 00 00 00”,Sequence number。4字节。

l “00 00 00 00 00 00 00 00”,8字节。Double precision time stamp (see notes) used for network timing。

l “0a 00 00 00”,Length until end of packet in 8 byte boundary lengths. Including own data field。4字节。

l “02 00 03 00”, 指的是“Comm 2 bytes | Dir 2 bytes”。02 00是Command数值。03 00是Direction数值,这里的0x03指明客户端发往服务器。4字节。

在“Comm 2 bytes | Dir 2 bytes”之后,就是这个包的Body了。

“包体”解释:

l “f1 f0 f0 f0”,MMS协议标志2。4字节。

l “ff ff ff ff 00 00 00 00”,不知道。8字节。

l “00 00 a0 00”,不知道。4字节。

l “02 00 00 00”,固定数值,反映了Header PacketIDType。4字节。

l “01 00 00 00 01 00 00 00 00 80 00 00”,固定数值,不知道含义。12字节。

l “5c 00 5c 00 31 00 39 00 32 00 2e 00 31 00 36 00 38 00 2e 00 31 00 2e 00 38 00 35 00 5c 00 54 00 43 00 50 00 5c 00 32 00 35 00 31 00 36 00”,其实就是“\\192.168.1.85\TCP\2516”的ASCII码。这是向服务器说明传输层协议类型TCP,客户端的IP地址192.168.1.85以及socket端口号2516。

第4个包:server to client

第4个包:to client;Len=96:

0030 01 00 00 00 ce fa 0b b0 50 00 ..@0..........P.

0040 00 00 4d 4d 53 20 0a 00 00 00 04 00 00 00 73 00 ..MMS ........s.

0050 70 00 3a 00 2f 00 08 00 00 00 02 00 04 00 00 00 p.:./...........

0060 00 00 f1 f0 f0 f0 08 00 00 00 46 00 75 00 6e 00 ..........F.u.n.

0070 6e 00 65 00 6c 00 20 00 4f 00 66 00 20 00 54 00 n.e.l. .O.f. .T.

0080 68 00 65 00 20 00 47 00 6f 00 64 00 73 00 00 00 h.e. .G.o.d.s...

0090 8a 94 b9 30 c2 c1 ...0..

“包头”解释:

l “01 00 00 00 ce fa 0b b0”是服务器端向客户端发包的“BOOB FACE”固定开头。以后你会看到每一个包都是如此开头的。8字节。

l 略

l “02 00 04 00”, 指的是“Comm 2 bytes | Dir 2 bytes”。02 00是Command数值。04 00是Direction数值,这里的0x04指明服务器发往客户端。4字节。

在“02 00 04 00”之后,就是这个包的Body了。

“包体”解释:

l “00 00 00 00”,错误号。

l “f1 f0 f0 f0”,MMS协议标志2。4字节。

l “08 00 00 00”,4字节。数据的长度,有可能是假的。

l “46 00 75 00 6e 00 6e 00 65 00 6c 00 20 00 4f 00 66 00 20 00 54 00 68 00 65 00 20 00 47 00 6f 00 64 00 73 00”,其实就是“Funnel Of The Gods”的ASCII码。有时候也会是“Funnel Of The”。不知道为什么偏偏是这个上帝的漏斗,我们不妨假设服务器是想告诉我们传输协议被接受了。

第5个包:client to server

第5个包:to server;Len=80:

0030 01 00 00 00 ce fa 0b b0 40 00 ..............@.

0040 00 00 4d 4d 53 20 08 00 00 00 03 00 00 00 00 00 ..MMS ..........

0050 00 00 00 00 00 00 06 00 00 00 05 00 03 00 01 00 ................

0060 00 00 ff ff ff ff 00 00 00 00 00 00 00 00 63 00 ..............c.

0070 65 00 62 00 65 00 69 00 6a 00 69 00 6e 00 67 00 e.b.e.i.j.i.n.g.

0080 31 00 31 00 00 00 1.1...

“包头”解释:

l “01 00 00 00 ce fa 0b b0”是服务器端向客户端发包的“BOOB FACE”固定开头。以后你会看到每一个包都是如此开头的。8字节。

l 略

l “05 00 03 00”, 指的是“Comm 2 bytes | Dir 2 bytes”。05 00是Command数值。03 00是Direction数值,这里的0x03指明客户端发往服务器。4字节。

在“05 00 03 00”之后,就是这个包的Body了。

“包体”解释:

l “01 00 00 00”,Command Level。4字节。

l “ff ff ff ff”,MMS协议标志3。4字节。

l “00 00 00 00 00 00 00 00”,8个0。

l “63 00 65 00 62 00 65 00 69 00 6a 00 69 00 6e 00 67 00 31 00 31 00”,是“cebeijing11”的ASCII码。我们在告诉服务器要读取的文件路径以及文件名。不包括IP地址或者DNS信息,仅仅是文件路径和名字,比如“this/is/the/file/path/on/server/with/filename.ext”。

第6个包:server to client

第6个包:to client;Len=152:

0030 01 00 00 00 ce fa 0b b0 88 00 .........M......

0040 00 00 4d 4d 53 20 11 00 00 00 05 00 00 00 00 00 ..MMS ..........

0050 00 00 00 00 00 00 0f 00 00 00 06 00 04 00 00 00 ................

0060 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 ................

0070 00 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 ................

0080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................

0090 00 00 20 03 00 00 00 00 00 00 00 00 00 00 8e 10 .. .............

00a0 01 00 16 09 00 00 00 00 00 00 00 00 00 00 00 00 ................

00b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................

00c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ..............

“包头”解释:

l “01 00 00 00 ce fa 0b b0”是服务器端向客户端发包的“BOOB FACE”固定开头。以后你会看到每一个包都是如此开头的。8字节。

l 略

l “06 00 04 00”, 指的是“Comm 2 bytes | Dir 2 bytes”。06 00是Command数值。04 00是Direction数值,这里的0x04指明服务器发往客户端。4字节。

在“06 00 04 00”之后,就是这个包的Body了。

“包体”解释:

l “00 00 00 00”,错误号。

l “01 00 00 00”,后面跟随的都是本次结构数据了。

l “01 00 00 00”,结果标志,4字节。

l “00 00 00 00 00 00 00 00”;

l “00 00 00 02”,广播标志。

l “00 00 00 00 00 00 00 00”,双精度的文件时间点。8字节。

l “00 00 00 00”,代表total pre-recorded media length in seconds, live = 0。因为我们这个是一个实况录像,所以是00 00 00 00。

l “00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00”,16字节。

l “20 03 00 00”,用在media的包字节长度。4字节。0x0320也就是800个字节。

l “00 00 00 00”,代表total number of packets in media, live = 0xffffffff or 0x00。因为我们这个是一个实况录像,所以是00 00 00 00。

l “00 00 00 00”;

l “8e 10 01 00”,代表流bit rate最高速度,0x0001108e就是69744字节/秒。

l “16 09 00 00”,代表整个header的大小。0x0916代表2326字节。

l 之后是40字节的“00”。

郑昀编写,随时更新。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有