[流媒体]实例解析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.9linux版本,也就是以前的mmsclient,将其依赖于Linux的某些函数库换成Windows版本的对应包,编译之后,可以下载mms://220.194.63.17/cebeijing8的数据,但是用WindowsMediaPlayer9播放的时候,却报告错误无法播放,因为此文件已损坏

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

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

 

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

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

第四对包:client to server 告知媒体文件名

 第四回合之1个包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 00Command数值。03 00Direction数值,这里的0x03指明客户端发往服务器。4字节。

 

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

“包体”解释:

l         01 00 00 00”,Command Level4字节。

l         ff ff ff ff”,MMS协议标志34字节。

l         00 00 00 00 00 00 00 00”,80

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”。

第四对包server to client 告知流属性(广播标志/比特率)

 四回合之2个包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 00Command数值。04 00Direction数值,这里的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”,代表流比特率最高速度,0x0001108e就是Bitrate: 69774 bps

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

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

 

       前面第6个包中的“00 00 00 02”,广播标志,是什么意思呢?

       对于“00 00”,指的是索引定位类型,有这么几个值:

n         0x00,没有索引可供定位。

n         0x80,有索引。

       对于“00 02”,广播类型,有这么几个值:

n         0x01,指预录制的广播;

n         0x02,指实况广播,Live的。

n         0x42,包含了脚本命令的presentation

 

6个包中的“01 00 00 00”,结果标志,是什么意思呢?

l         0x01,媒体文件路径和名字被接受,没有身份验证。

l         0x02BASIC验证媒体通过。

l         0x03NTLM验证通过。

我们本次下载不需要验证,所以是0x01



郑昀编写,随时更新。

 

目录
相关文章
|
7月前
|
存储 缓存 负载均衡
阿里云服务器实例选择指南:热门实例性能、适用场景解析对比参考
2025年,在阿里云的活动中,主售的云服务器实例规格除了轻量应用服务器之外,还有经济型e、通用算力型u1、计算型c8i、通用型g8i、计算型c7、计算型c8y、通用型g7、通用型g8y、内存型r7、内存型r8y等,以满足不同用户的需求。然而,面对众多实例规格,用户往往感到困惑,不知道如何选择。本文旨在全面解析阿里云服务器实例的各种类型,包括经济型、通用算力型、计算型、通用型和内存型等,以供参考和选择。
|
6月前
|
网络协议
为何UDP协议不可靠?DNS为何选择UDP?
总的来说,UDP和TCP各有优势,选择哪种协议取决于应用的具体需求。UDP可能不如TCP可靠,但其简单、快速的特性使其在某些场景下成为更好的选择。而DNS就是这样的一个例子,它利用了UDP的优势,以实现快速、高效的名字解析服务。
328 14
|
8月前
|
存储 缓存 网络协议
DNS协议详解
通过本文,您可以全面了解DNS协议的各个方面,从而更好地理解和应用这一重要的互联网基础服务。
1582 44
|
7月前
|
编解码 监控 网络协议
RTSP协议规范与SmartMediaKit播放器技术解析
RTSP协议是实时流媒体传输的重要规范,大牛直播SDK的rtsp播放器基于此构建,具备跨平台支持、超低延迟(100-300ms)、多实例播放、高效资源利用、音视频同步等优势。它广泛应用于安防监控、远程教学等领域,提供实时录像、快照等功能,优化网络传输与解码效率,并通过事件回调机制保障稳定性。作为高性能解决方案,它推动了实时流媒体技术的发展。
396 5
|
7月前
|
存储 机器学习/深度学习 人工智能
阿里云服务器第八代通用型g8i实例评测:性能与适用场景解析
阿里云服务器通用型g8i实例怎么样?g8i实例采用CIPU+飞天技术架构,并搭载最新的Intel 第五代至强可扩展处理器(代号EMR),不仅性能得到大幅提升,同时还拥有AMX加持的AI能力增强,以及全球范围内率先支持的TDX机密虚拟机能力。这些特性使得g8i实例在AI增强和全面安全防护两大方面表现出色,尤其适用于在线音视频及AI相关应用。本文将深入探讨g8i实例的产品特性、优势、适用场景及规格族,以帮助您更好地了解这款产品,以供参考和选择。
|
7月前
|
数据采集 存储 数据库连接
Requests与BeautifulSoup:高效解析网页并下载资源
Requests与BeautifulSoup:高效解析网页并下载资源
|
9月前
|
存储 运维 资源调度
阿里云服务器经济型e实例解析:性能、稳定性与兼顾成本
阿里云经济型e云服务器以其高性价比、稳定可靠的性能以及灵活多样的配置选项,成为了众多企业在搭建官网时的首选。那么,阿里云经济型e云服务器究竟怎么样?它是否能够满足企业官网的搭建需求?本文将从性能表现、稳定性与可靠性、成本考虑等多个方面对阿里云经济型e云服务器进行深入剖析,以供大家参考选择。
565 37
|
10月前
|
人工智能 搜索推荐 API
Cobalt:开源的流媒体下载工具,支持解析和下载全平台的视频、音频和图片,支持多种视频质量和格式,自动提取视频字幕
cobalt 是一款开源的流媒体下载工具,支持全平台视频、音频和图片下载,提供纯净、简洁无广告的体验
1531 9
Cobalt:开源的流媒体下载工具,支持解析和下载全平台的视频、音频和图片,支持多种视频质量和格式,自动提取视频字幕
|
9月前
|
存储 Java 计算机视觉
Java二维数组的使用技巧与实例解析
本文详细介绍了Java中二维数组的使用方法
275 15
|
11月前
|
存储 负载均衡 监控
数据库多实例的深入解析
【10月更文挑战第24天】数据库多实例是一种重要的数据库架构方式,它为数据库的高效运行和灵活管理提供了多种优势。在实际应用中,需要根据具体的业务需求和技术环境,合理选择和配置多实例,以充分发挥其优势,提高数据库系统的性能和可靠性。随着技术的不断发展和进步,数据库多实例技术也将不断完善和创新,为数据库管理带来更多的可能性和便利。
401 57

推荐镜像

更多
  • DNS