分类: 系统运维
2007-05-15 17:51:10
Prefix 1 f0 f0 f0 f0 - 标志 (见标志段)
Prefix 2 0b 00 04 00
Then 1c 00 03 00
结构题定义如下。
功能:发送初始链接信息,包含播放器的版本号、客户端GUID(随机产生)和要连接的服务器地址。这个命令是在协议初始化之初发送的。它发送本地信息给服务器。Unicode数据字符串由以下信息组成:
“NSPlayer/7.0.0.1956; {128比特16进制文本客户端GUID }; Host: The.Host.Net” + 0x00 + 全零隐藏数据域 (可选项)。
注意:
客户端GUID是随机生成的,具体内容见'locally generated GUIDs'.
'Host' 域为可选字段。只在Media Player 7.0及后续版本中使用。播放器名称必须以 “NSPlayer”开始,如果服务器收到其他名称,将会自动发送名为'Upgrade Your Player'缺省的电影。这是一个15秒的教你如何升级的电影。在NSPlayer之后可以接任意的东西。例如像
/7.0.0.1956的版本号。MediaPlayer7.0及后续版本才支持'MMS Proxy Server'选项。'Host'域指明实际流媒体服务器的域名或者IP地址,这同是否使用代理并不相关。代理服务器使用这个主机地址连接到流媒体服务器。这就是在7.0以前版本里面没有'host'域的原因。
Prefix 1 00 00 00 00 - 错误码
Prefix 2 f0 f0 f0 f0 - 标志 (详见标志段)
结构体定义如下:
服务器返回诸如服务器软件版本等信息。
0b 00 04 00 ?? |
1c 00 03 00 ?? |
00 00 00 00 00 00 f0 3f 双精值为1内容不详 |
01 00 00 00 ?? |
01 00 00 00 ?? |
00 80 00 00 ?? |
00 00 a0 00 ?? 时有为 80 96 98 00 = 10000000 |
Ww ww ww ww 服务器版本字符串长度 |
Xx xx xx xx 工具版本字符串长度 |
Yy yy yy yy 播放器下载链接长度 |
Zz zz zz zz 加密方式字符串长度 |
Unicode字符串长度在结构体中给出。当域不需要时length=0。长度的统计是以两个byte为单位。有趣的是服务器版本低于3.0时,不接受0x32命令。媒体播放器也不会发送这个命令给服务器。准确的说,这个特征在那个版本里还没有实现。
Prefix 1 f1 f0 f0 f0 - 标志 (见标志段)
Prefix 2 ff ff ff ff
Then 00 00 00 00
Then 00 00 a0 00 - 未知
Then 02 00 00 00 – 映射包头ID类型(Header PacketIDType )
发送传输协议、客户端地址和客户端套接字端口号到服务器。Unicode字符串格式如下:
“ \\123.456.789.012\TCP\1234” + null + 可选Unicode数据,如“0”。
可选数据:当传输协议使用UDP时可以显示10Bytes的未知数据。
Where: 123.456.789.012 是客户端IP地址,
TCP (或UDP)标志欲是用的传输协议。
1234 是客户端TCP或UDP套接口端口号。
Prefix 1 00 00 00 00 - 错误码
Prefix 2 f1 f0 f0 f0 - 标志
Then nn nn nn nn - 4 bytes 数据长度
长度计数单位是4字节,也包括了Length域,所以4Bytes就是1。
Then Unicode字符串数据
这是协议选择命令0x02的响应数据。文本“Funnel Of The”或'Funnel of the gods'是常见的数据。这说明协议的选择已经生效。
Prefix 1 00 00 00 00 - 错误码
Prefix 2 00 00 00 00
由服务器返回,指明协议选择的错误。同时也表示从服务器发向客户端的关闭套接字连接的请求。在这个命令之后连接中断。
Prefix 1 01 00 00 00 -命令级别
Prefix 2 ff ff ff ff
Then 8 zeros (未知)或许是双精值
Then Unicode数据,下文解析。
这条命令请求位于服务器上的文件路径和文件名。这不包含IP或DNS信息,只有媒体的路径和文件名。Unicode数据字符串格式如下:
“this/is/the/file/path/on/server/with/filename.ext” + null + 未知可选数据如“2C3”
注意: 文件名后,例如 …/filename.asf 可以跟随数字签名管理数据。传到服务器的字符串形如:…/filename.asf?parameter1, parameter2 。
就像其他人和.ASP或.JSP Active输入的字符串参数一样,parameter1可以为0,parameter2可以是32bytes的16进制字符串数据。如果媒体文件需要DRM数据,而你并未提供有效的授权字符串,那么访问将被拒绝。在这种情况下,服务器会向客户端发送命令03报告断开连接。并附带 'licence required'错误码.
Prefix 1 00 00 00 00 - 错误码
Prefix 2 04 00 00 00 - 响应Media PacketIDType值
Then 下述结构体
现在发送媒体数据,包括媒体的播放时间。
01 00 00 00 |
未知 但是可以改为0或1 |
00 00 00 00 |
可能是偏移时间,例如00 00 00 40 为2秒 |
00 00 00 00 |
?? |
00 00 00 00 |
?? |
00 00 00 00 |
?? |
Xx xx xx xx |
单精浮点值,显示文件时间减去缓冲区时间,仅在seek模式有效,其他情况下总为1。 |
Prefix 1 00 00 00 00 - 错误码
Prefix 2 01 00 00 00
Then 结构体如下
功能:答复文件名和路径请求。包括文件数据的包数,包长度和文件播放时间。06命令的数据类似于ASF文件的头信息。一旦媒体在服务器上定位,媒体流的细节和包便被返回。下面是prefix后的结构体信息:
01 00 00 00 结果标志 |
00 00 00 00 |
00 00 00 00 |
00 00 xx yy 广播标志 |
Tt tt tt tt tt tt tt tt 双精度文件时间点 |
Ll ll ll ll 回放文件的长度(秒为单位),实时则为0 |
00 00 00 00 |
00 00 00 00 |
00 00 00 00 |
00 00 00 00 |
Pp pp pp pp 媒体包长度,单位byte |
Nn nn nn nn 媒体总包数,实时为0x00或0xffffffff |
00 00 00 00 |
Ss ss ss ss 最高流比率值 |
Hh hh hh hh 头大小,单位bytes |
Zeros 数据结构末尾的40个bytes零数据 |
Prefix 1 01 00 00 00 - 命令级别
Prefix 2 ff ff 01 00 - 或76 04 00 00 #
Then 结构题描述如下
功能:从包xx 开始文件播放。这条命令也用以恢复下载或请求丢包。在Seek模式下用来发送播放点。
8 bytes 双精格式,Seek秒数。 |
4 bytes FF |
4 bytes 包序列号 ff ff ff ff 从开始播放 注意:v9版本中不可用,任何值都是从头开始播放 |
3 bytes 最大的流时间限制 |
1 byte 允许流限制标志 |
4 bytes Media PacketIDtype |
4 bytes 可选数据# 如 ff ff ff 7f |
4 bytes 可选数据# 如 00 00 00 00 |
4 bytes 可选数据# 如 ff ff ff 7f |
4 bytes 可选数据# 如 00 00 00 00 |
Prefix 1 01 00 00 00 - 命令级别
Prefix 2 ff ff 01 00
停止播放,媒体播放器发送这条命令,流停止,保持套接字连接。
Prefix 1 00 00 00 00 - 错误码
Prefix 2 04 00 00 00 - 响应PacketIDType
Data 00 00 00 00 00 00 00 00 - 双精值
此命令在快进/后退中使用。
Prefix 1 01 00 00 00 - 命令级别
Prefix 2 01 00 00 00
协议中止。常用在关闭套接字连接时。
Prefix 1 00 00 00 00 - 错误码
Prefix 2 02 00 00 00 - 显示头的PacketIDType
Then 00 00 00 00 - ??
Then 00 00 00 00 或 1c 00 03 00 用法未知。
在播放器请求时发送头或UDP包。