當前位置:
首頁 >
MMS协议
發布時間:2023/12/10
38
豆豆
MMS格式解析
簡介:
MMS是微軟的私有流媒體協議。 它的最初目的是通過網絡傳輸多媒體廣播、視頻、音軌、現場直播和一系列的實時或實況材料。 MMS建立在UDP或TCP傳輸/網絡層上,是屬于應用層的。使用TCP的MMS上URL是MMS://或者MMST://,如果是UDP的MMS使用MMSU://。 在低帶寬的情況下推薦使用UDP連接。在有防火墻的情況下使用HTTP。在下載MMS的時候TCP是不二的選擇。服務器上的媒體文件是以ASF或WMA形式存在。直播通過流媒體服務器組裝成數據包。 如果是TV/視頻的話,一個包可能會由多個流組成,但是語音廣播就只有一個流。MMS協議包有兩種:命令包和數據包。
MMS命令包頭
以下是小端格式。左邊=LSB,右邊=MSB。0f 00 00 00 就相當于0f。
| 可能是版本號 | 4B | 01 00 00 [00]:從client發出的格式是固定的。[00]域從服務器發出的時候是可以發生變化的 |
| 命令ID值,或許是版本或者序列號 | 4B | 固定CE FA 0B B0 |
| 命令數據包長度 | 4B | 計算到全部數據末尾,從協議類型域之后開始計算 |
| 協議類型 | 4B | 固定值為MMS :4D 4D 53 20 |
| 直到包尾的長度 | 4B | 包含自身數據域 |
| 序列號 | 4B | 命令是由客戶端發向服務器的,序列號的計數從0開始。命令的響應擁有同樣的序列號。也就是說序列號就是ECHO。客戶端總是發起命令 |
| 雙精度時間戳 | 8B | 用于網絡時序 |
| 到包尾的長度 | 4B | 包括自身 |
| Comm | 2B | 命令值:含義參考MMS命令列表 |
| Dir | 2B | 方向域,0x03 = 向服務器,0x02 = 向客戶端。 |
01 至Server
Prefix 1 f0 f0 f0 f0 - 標志(見標志段)Prefix 2 0b 00 04 00Then 1c 00 03 00 功能:發送初始鏈接信息,包含播放器的版本號、客戶端GUID(隨機產生)和要連接的服務器地址。 注意:客戶端GUID是隨機生成的,具體內容見'locally generated GUIDs'.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 加密方式字符串長度02 至Server
Prefix 1 f1 f0 f0 f0 - 標志(見標志段)Prefix 2 ff ff ff ffThen 00 00 00 00Then 00 00 a0 00 - 未知Then 02 00 00 00 – 映射包頭ID類型(Header PacketIDType ) 發送傳輸協議、客戶端地址和客戶端套接字端口號到服務器。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字符串數據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 ffThen 8 zeros (未知)或許是雙精值Then Unicode數據 這條命令請求位于服務器上的文件路徑和文件名。這不包含IP或DNS信息,只有媒體的路徑和文件名。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 00Then 結構體如下功能:答復文件名和路徑請求。包括文件數據的包數,包長度和文件播放時間。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 0009 至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 - 響應PacketIDTypeData 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 - 顯示頭的PacketIDTypeThen 00 00 00 00 - ??Then 00 00 00 00 或1c 00 03 00 用法未知。在播放器請求時發送頭或UDP包。
總結
- 上一篇: [sicily]【1001】 会议安排(
- 下一篇: 电竞选手UZI简自豪官宣结婚 女方晒照透