rtpParse.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. const time = require('../time.js');
  2. function hexStrToBitStr(str){
  3. // 移除0x 以及空格
  4. str = str.replace(/0x/g,'').replace(/\s/g,'');
  5. // 转换为二进制
  6. return parseInt(str,16).toString(2);
  7. }
  8. function parseRtpHeader(hexStr){
  9. // console.log(hexStr);
  10. let bitStr = hexStrToBitStr(hexStr);
  11. let version = parseInt(bitStr.substr(0,2),2);
  12. let padding = bitStr.substr(2,1);
  13. let extension = bitStr.substr(3,1);
  14. let csrcCount = bitStr.substr(4,4);
  15. let marker = bitStr.substr(8,1);
  16. let payloadType = parseInt(bitStr.substr(9,7),2);
  17. let sequenceNumber = parseInt(bitStr.substr(16,16),2);
  18. let timestamp = parseInt(bitStr.substr(32,32),2);
  19. // 格式化时间戳
  20. let _time = time.timestr(timestamp )
  21. let ssrc = bitStr.substr(64,32);
  22. let csrc = bitStr.substr(96,32);
  23. return {
  24. version,
  25. padding,
  26. extension,
  27. csrcCount,
  28. marker,
  29. payloadType,
  30. sequenceNumber,
  31. timestamp,
  32. ssrc,
  33. csrc,
  34. time: _time
  35. }
  36. }
  37. module.exports = {
  38. parseRtpHeader,
  39. }