Janus服务器《三》--Admin/Monitor API

1、Admin/Monitor API

  用于向janus服务器查询一些和会话及句柄有关的信息,在查找媒体流层面问题时显得非常有用。目前Admin API只能用于信息查询不能与janus进行更多的交互(如强制删除会话),更多的交互还是得使用RESTful、Websockets等transport模块的API。该API只提供同步机制,如果你需要的是异步通知机制的话请使用janus的event handler。默认的根请求路径为/admin
在这里插入图片描述

  该API接口默认是关闭的,你可以在相应的传输方式的配置文件中将其开启。例如在janus.transport.http.jcfg文件编辑admin部分。
在这里插入图片描述

  该API接口的消息格式和transport API的非常相似,因此这篇文档只简略的提到不同之处。当你是用websockets方式时需要将“janus-admin-protocol”作为子协议替换janus API中的"janus-protocol"。
在这里插入图片描述

2、Admin API请求

2.1、通用请求

  • info : 请求janus服务器的信息,和janus 的info API返回的结果一致,不需要秘钥即可请求;
  • ping :一个简单的ping/pong机制,客户端可用该接口来链路检查及预测协议的路由时间,也是不需要秘钥即可请求;

2.2、配置相关请求

  • get_status: 返回当前服务器能被Admin API动态修改的配置变量;
  • set_session_timeout: 改变全局的会话超时时间;
  • set_log_level: 改变日志等级;
  • set_log_timestamps:使能或禁止在日志中添加时间戳;
  • set_log_colors: 使能或禁止日志带颜色输出;
  • set_locking_debug: 使能或禁止锁(互斥锁等)的实时调试,在遇到死锁时很有用;
  • set_refcount_debug:使能或禁止引用计数的实时调试,在遇到janus内部结构体内存泄漏时使用;
  • set_libnice_debug:使能或禁止libnice库的调试;
  • set_min_nack_queue:改变NACK队列的最小值;
  • set_no_media_timer: 改变没有媒体流的计时器值;
  • set_slowlink_threshold: 改变线路质量阈值;
    在这里插入图片描述

2.3、Token相关的请求

这部分请求只有在使能了token存储的机制之后才有效

  • add_token: 增加一个有效tocken
  • allow_token: 给与一个与插件使用相关的token;
  • disallow_token:移除一个与插件使用有关的token;
  • list_tokens: 列出现存的所有token;
  • remove_token:删除一个token
    在这里插入图片描述

2.4、会话相关的请求

  • accept_new_sessions: 配置janus是否应该接受一个新的会话(当你任何时候想要清空一个janus实例使用这个非常方便—感觉很别扭)
  • list_sessions:列出现存的active状态的会话;
  • set_session_timeout: 改变会话超时时间;
  • destory_session: 销毁一个会话;
    在这里插入图片描述

2.5、句柄及webrtc相关的请求

  • list_handles: 列出现存的active状态的ICE句柄;
  • handle_info: 列出特定ICE句柄的所有信息。如果将plugin_only变量值设置为true则仅返回插件相关的信息,webrtc信息及状态均不会被包含在返回信息中。
  • start_pcap: 开始将发送的RTP/RTCP包抓包保存成pcap文件;
  • stop_pcap:停止抓包
  • start_text2pcap:和start_pcap请求一样,但是保存为text文件
  • stop_text2pcap:停止text2pcap抓包
  • message_plugin:发送同步消息给插件。几乎所有插件都实现该请求用于优化该插件的资源管理。
  • handup_webrtc: 挂断特定ICE句柄的PeerConnection;
  • detach_handle:分离特定的句柄,和janus API的detach消息的功能一致;
    在这里插入图片描述

2.6、事件句柄相关请求

  • query_eventhandler: 发送一个同步请求给一个事件句柄;
  • custom_event: 通过事件句柄发布一个自定义的外部事件。当第三方应用需要以简单的方式和janus内部产生的事件相关联时或者推送janus无法获得的信息时使用该接口。
    在这里插入图片描述

2.7、自定义log信息请求

  • custom_logline: 将第三方应用的log信息添加到janus的log输出或文件中。log等级可选。
    在这里插入图片描述

2.8、工具类请求

  • resolve_address: 用于判断janus是否可找到一个网址的DNS及对应的查询耗时。
  • test_stun: 用于判断janus可否能连接上STUN服务器,获得从STUN服务器的响应信息及响应耗时。
    在这里插入图片描述

3、Admin API语法规则

  Admin API和Janus API所遵循的规则是一样的,即请求正确的路径或在请求正确路径时携带正确的session_id和handle_id。
  《1》、全局请求 全局请求无需session_id和handle_id。包括2.1的通用请求,2.2的配置请求,2.3的Token请求,2.6的事件相关请求,2.8的工具类请求及accept_new_session、list_sessions请求。
例子:

POST /admin

{        
     "janus" : "list_sessions",        
     "transaction" : "<random alphanumeric string>",        
     "admin_secret" : "<password specified in janus.jcfg, if any>"
}

  《2》、仅需要session_id的请求
   如destory_session、list_handles。注意所以REST接口直接在POST的url中添加session_id就能实现这些请求,但是更通用的(适用于所有协议的)方法是在json消息中添加session_id字段。
例子:

POST /admin/12345678
{        
    "janus" : "list_handles",       
    "session_id" : 12345678,       
    "transaction" : "<random alphanumeric string>",       
    "admin_secret" : "<password specified in janus.jcfg, if any>"
} 

  《3》、需要session_id及handle_id的请求
  这些请求包括handle_info,所有和抓包有关的请求、message_plugin、hangup_webrtc和detach_handle。
例子:

POST /admin/12345678/98765432
{        
       "janus" : "handle_info",        
       "session_id" : 12345678,        
       "handle_id" : 98765432,
        "transaction" : "<random alphanumeric string>",
        "admin_secret" : "<password specified in janus.jcfg, if any>"
}

4、抓包未加密的WebRTC媒体流

  你可以开启或禁止抓包一个handle发送和接收的RTP及RTCP包。这个功能在调试时会显得非常有用。需要注意的是如果要进行录制最好使用janus_recorder工具而不是开启抓包(它能实现录制)。
例子:

开始抓包

POST /admin/12345678/98765432
{        
      "janus" : "start_pcap",         // Use start_text2pcap for a text file instead       
      "folder" : "<folder to save the dump to; optional, current folder if missing>",        
      "filename" : "<filename of the dump; optional, random filename if missing>",        
      "truncate" : "<number of bytes to truncate packet at; optional, truncate=0 (don't truncate) if missing>",        
      "transaction" : "<random alphanumeric string>",       
      "admin_secret" : "<password specified in janus.jcfg, if any>"
}


停止抓包

POST /admin/12345678/98765432
{        
   "janus" : "stop_pcap",          // Use stop_text2pcap if you started a text-based capture        
   "transaction" : "<random alphanumeric string>",        
   "admin_secret" : "<password specified in janus.jcfg, if any>"
}

5、参考

《1》Admin/Monitor API

### deepseek-ai Janus-Pro-7B 聊天框实现与使用 #### 实现细节 为了集成 `deepseek-ai/Janus-Pro-7B` 的聊天功能,开发者通常会采用基于 Web 或桌面应用程序的方式创建交互界面。具体来说,在前端部分可以利用 HTML 和 JavaScript 构建用户输入区域以及展示回复消息的空间;而后端则负责调用 Hugging Face API 来处理自然语言理解和生成的任务。 对于想要快速搭建原型的应用场景而言,可以直接访问在线 Demo 页面[^1],该页面已经内置了一个简单的聊天对话框供测试者试用不同类型的查询请求并查看返回的结果。 如果希望自定义开发,则需按照官方文档说明下载预训练模型文件,并通过 Python SDK 进行本地部署和服务封装: ```python from transformers import AutoModelForCausalLM, AutoTokenizer import torch tokenizer = AutoTokenizer.from_pretrained("deepseek-ai/Janus-Pro-7B") model = AutoModelForCausalLM.from_pretrained("deepseek-ai/Janus-Pro-7B") def generate_response(prompt): inputs = tokenizer(prompt, return_tensors="pt").input_ids.to('cuda') outputs = model.generate(inputs, max_length=50) response = tokenizer.decode(outputs[0], skip_special_tokens=True) return response ``` 这段代码展示了如何加载指定版本的语言模型及其配套分词器,并定义了一个函数用于接收用户的提问作为参数传入模型中得到相应的应答文本输出。 #### 使用指南 当准备就绪之后,可以通过 POST 请求向服务器发送 JSON 数据包来触发一次完整的交流过程。数据结构一般包含两个主要字段:“message”,即待解析的话语内容;另一个则是可选的身份标识符“user_id”。 此外,值得注意的是由于此项目处于持续迭代更新的状态下,建议定期查阅 GitHub 仓库中的最新动态以获取最权威的技术支持信息和改进措施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值