ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Monibuca gRPC API完全参考:跨语言调用流媒体服务的终极指南

Monibuca gRPC API完全参考:跨语言调用流媒体服务的终极指南 Monibuca gRPC API完全参考跨语言调用流媒体服务的终极指南【免费下载链接】monibucaMonibuca简称 m7s是一款纯 Go 开发的开源流媒体服务器开发框架。项目地址: https://gitcode.com/langhuihui/monibucaMonibuca简称 m7s是一款纯 Go 开发的开源流媒体服务器开发框架其内置的gRPC API让你可以用任意编程语言Python、Java、Node.js、C# 等像调用本地函数一样远程管理流媒体服务拉流、推流、录像、查询在线流列表、控制任务……本文带你从零开始完整掌握 Monibuca 的 gRPC 接口体系。一、为什么用 gRPC 调用流媒体服务很多流媒体服务器只提供 HTTP 接口参数松散、没有类型约束。而 Monibuca 的 gRPC API 带来三大优势强类型契约接口定义在 pb/global.proto 等 proto 文件中请求/响应字段一目了然不会拼错参数名跨语言客户端同一套 proto 文件可生成 Python、Java、C 等各语言 SDK一份定义处处调用双协议复用Monibuca 的 gRPC 服务同时生成了 HTTP Gateway见 scripts/protoc.sh同一个接口既能用 gRPC 调用也能用普通 HTTP 调用二、服务端口与鉴权连接前的两件事2.1 监听端口在哪配置gRPC 服务复用全局 TCP 配置监听端口在配置文件global.tcp中指定定义见 pkg/config/tcp.goglobal: tcp: listenaddr: :8080 # gRPC / HTTP 服务监听地址 listentls: :8443 # 启用 TLS 时的监听地址默认情况下gRPC 与 HTTP 接口都走8080 端口客户端连接127.0.0.1:8080即可。2.2 开启登录后的 Token 机制如果服务端开启了管理员登录admin.enable_login所有 gRPC 调用都需要在请求头携带 JWT Tokenauthorization: Bearer 你的token通过 pb/auth.proto 中的Auth.Login接口用户名密码获取 TokenToken 有效期 24 小时服务端会在临近过期时通过响应头new-token自动下发新 Token鉴权拦截器实现见 server_grpc.go登录接口本身无需鉴权 未开启登录时任何调用都以 anonymous 身份直接放行开发环境可以省去这一步。三、核心 API 速查表全局服务 28 个方法核心接口全部定义在 pb/global.proto 的global.api服务中按功能可分为 6 大类分类常用方法作用 系统监控SysInfo、Summary查版本、CPU、内存、流数量 流管理StreamList、StreamInfo、StopPublish、PauseStream查在线流、停推、暂停 订阅控制GetSubscribers、StopSubscribe、ChangeSubscribe查看/踢掉观看者 拉流代理StartPull、GetPullProxyList、AddPullProxy远程拉流、设备管理⏺️ 录像管理GetRecordList、DeleteRecord、GetRecordCatalog查询/删除录像文件⚙️ 运维控制Shutdown、Restart、StopTask、TaskTree重启服务、管理任务每个方法都同时暴露了对应的 HTTP 路径例如StreamList对应GET /api/stream/list你可以用浏览器或 curl 直接验证。跨语言调用示例Pythonimport grpc from pb import global_pb2, global_pb2_grpc channel grpc.insecure_channel(127.0.0.1:8080) stub global_pb2_grpc.ApiStub(channel) res stub.StreamList(global_pb2.StreamListRequest(pageNum1, pageSize10)) print(res.data) # 当前在线流列表生成代码的方式很简单拿到 proto 文件后运行protoc即可仓库内置的生成脚本 scripts/protoc.sh 展示了完整的参数配置--go-grpc_out--grpc-gateway_out一次生成 gRPC 与 HTTP 两套代码。四、插件 API每个插件都有独立的服务Monibuca 采用插件化架构每个插件自带一套 gRPC 服务接口定义在各自的pb/目录中FLV 插件plugin/flv/pb/flv.proto ——StartRecord开始录像、List查询录像文件RTMP 插件plugin/rtmp/pb/rtmp.proto ——PushOut将流转发到其他 RTMP 地址GB28181 插件plugin/gb28181/pb/gb28181.proto —— 60 个方法覆盖设备管理、PTZ 云台控制、广播、录像下载⏰定时任务plugin/crontab/pb/crontab.proto —— 增删改查录像计划调试插件plugin/debug/pb/debug.proto —— 获取 CPU/堆内存分析图插件 gRPC 服务的注册机制很简洁插件在InstallPlugin时传入自己 proto 生成的ServiceDesc即可挂载到同一端口无需单独配置端口号。详细说明见 doc_CN/arch/grpc.md。五、响应规范与错误处理所有响应结构体遵循统一的三段式设计code // 状态码0 表示成功 message // 提示信息 data // 业务数据跨语言调用时只需判断code是否为 0再用data即可各语言处理逻辑完全一致。错误场景下服务端直接返回 gRPC 标准错误码如UNAUTHENTICATED、NOT_FOUND无需解析自定义格式框架统一处理机制见 doc/arch/grpc.md。六、最佳实践清单一次生成多语言复用将 proto 文件纳入版本管理各语言团队用同一份文件生成客户端合理设置超时查询类接口建议 3~5 秒超时控制类如StartPull建议 10 秒生产环境启用 TLS配置listenaddrtls并挂载证书避免 Token 明文传输善用分页参数StreamList、GetSubscribers等均支持pageNum/pageSize避免大列表拉取先查后控执行StopTask、DeleteRecord等破坏性操作前先用TaskTree、GetRecordList确认目标从查询在线流到一键录像从 Python 脚本到 Java 平台Monibuca 的 gRPC API 为跨语言集成流媒体能力提供了最直接的通道——打开 pb/global.proto你的多语言流媒体集成之旅就从此开始。【免费下载链接】monibucaMonibuca简称 m7s是一款纯 Go 开发的开源流媒体服务器开发框架。项目地址: https://gitcode.com/langhuihui/monibuca创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表