B 站弹幕解析

By terrorist at 2022-06-16 • 0人收藏 • 604人看过
class header{
	int packetLen;
	word headerLen;
	word version;
	int opCode;
	int magicNumber;
}
unpack = function(pData){ 
	var ret = ..raw.convert(pData, header())
	
	var packetLen = ..raw.swap(ret.packetLen, "int")
	var headerLen = ..raw.swap(ret.headerLen, "word")
	var version = ..raw.swap(ret.version, "word")
	var opCode = ..raw.swap(ret.opCode, "int")
	var magicNumber = ..raw.swap(ret.magicNumber, "int")
	
	var payloadLen = packetLen - headerLen;
	
	if(opCode == 5){
		// brotli解压
		if(version == 3){
			var ptr = ..aaz.libbrotli.decompress3( topointer(pData,16), payloadLen)
			if(ptr){
				unpack(ptr)
				..raw.realloc(0, ptr)
			}
		}
		elseif(version == 0){
			// 弹幕内容
			var str = ..raw.tostring(pData,17,packetLen) 
			..io.print(str)
			var tab = ..web.json.parse(str)
			if(tab.cmd == "DANMU_MSG"){
				
			}
		}
	}
}
 aaz.libbrotli.decompress3 函数

https://github.com/btx638/aaz-aardio/blob/master/aaz/libbrotli/_.aardio


参考:

https://github.com/lovelyyoshino/Bilibili-Live-API/blob/master/API.WebSocket.md

https://github.com/AndrewXiongGe/AndrewXiongGe.github.io/blob/4ae09b21bc7dec7f6c17383fd7cc4d73386273e7/bliveproxy.js

登录后方可回帖

登 录
信息栏
 私人小站

本站域名

ChengXu.XYZ

投诉联系:  popdes@126.com



快速上位机开发学习,本站主要记录了学习过程中遇到的问题和解决办法及上位机代码分享

这里主要专注于学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.
如果侵权,联系 Popdes@126.com

友情链接
Aardio官方
Aardio资源网


才仁机械


网站地图SiteMap

Loading...