|
@@ -0,0 +1,40 @@
|
|
|
+const time = require('./time.js');
|
|
|
+function hexStrToBitStr(str){
|
|
|
+ // 移除0x 以及空格
|
|
|
+ str = str.replace(/0x/g,'').replace(/\s/g,'');
|
|
|
+ // 转换为二进制
|
|
|
+ return parseInt(str,16).toString(2);
|
|
|
+}
|
|
|
+
|
|
|
+function parseRtpHeader(hexStr){
|
|
|
+ let bitStr = hexStrToBitStr(hexStr);
|
|
|
+ let version = parseInt(bitStr.substr(0,2),2);
|
|
|
+ let padding = bitStr.substr(2,1);
|
|
|
+ let extension = bitStr.substr(3,1);
|
|
|
+ let csrcCount = bitStr.substr(4,4);
|
|
|
+ let marker = bitStr.substr(8,1);
|
|
|
+ let payloadType = parseInt(bitStr.substr(9,7),2);
|
|
|
+ let sequenceNumber = parseInt(bitStr.substr(16,16),2);
|
|
|
+ let timestamp = parseInt(bitStr.substr(32,32),2);
|
|
|
+ // 格式化时间戳
|
|
|
+ let _time = time.timestr(timestamp )
|
|
|
+ let ssrc = bitStr.substr(64,32);
|
|
|
+ let csrc = bitStr.substr(96,32);
|
|
|
+ return {
|
|
|
+ version,
|
|
|
+ padding,
|
|
|
+ extension,
|
|
|
+ csrcCount,
|
|
|
+ marker,
|
|
|
+ payloadType,
|
|
|
+ sequenceNumber,
|
|
|
+ timestamp,
|
|
|
+ ssrc,
|
|
|
+ csrc,
|
|
|
+ time: _time
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+module.exports = {
|
|
|
+ parseRtpHeader
|
|
|
+}
|