lkmio 流媒体核心
以工程化方式打通“设备接入、协议转换、低延迟分发、事件回调”。面向 GB/T 28181 与 JT/T 1078 等行业标准,同时提供 Web 端友好的播放形态。
定位与价值
lkmio 是一套 Go 语言实现的高性能流媒体服务器,重点解决行业视频场景中“协议多、终端多、网络复杂、集成要求高”的交付问题:
- 将 GB/T 28181、JT/T 1078 等设备侧标准能力,转换为更易消费的播放协议(HTTP-FLV、HLS、WebRTC、RTSP/RTMP)。
- 通过统一的 API 与 Hook 机制,将媒体生命周期能力暴露给业务系统,便于做鉴权、调度、计费、告警、资源回收等编排。
核心能力
| 能力项 | 说明 |
|---|---|
| 多协议接入 | 支持 RTMP、GB/T 28181、JT/T 1078 推流/接入(部分能力可按配置开启)。 |
| 多协议分发 | 支持 RTMP、HTTP-FLV、WebSocket-FLV、WebRTC、HLS、RTSP 等常见播放/拉流方式。 |
| 跨标准互通 | 支持 JT/T 1078 转 GB/T 28181 的工程化链路(面向车载视频向公共安全平台汇聚等场景)。 |
| 统一控制面 | 提供 REST API + WebHook 事件回调,用于业务系统编排媒体生命周期。 |
| 低延迟与高并发 | 基于 Go 并发模型与模块化协议栈实现,适合大规模设备接入与并发观看。 |
编解码与协议支持(以仓库说明为准)
下表来自项目 README 的能力矩阵描述,用于快速判断终端兼容性与集成边界。
| 编码/协议 | RTMP | FLV | HLS | WebRTC | RTSP |
|---|---|---|---|---|---|
| H.264 | √ | √ | √ | √ | √ |
| H.265 | √ | √ | √ | 计划支持 | √ |
| G.711A/U | √ | √ | - | √ | √ |
| AAC | √ | √ | √ | - | √ |
| OPUS | - | - | - | √ | - |
接口与事件回调(对接业务系统的关键入口)
lkmio 提供面向控制面的 REST API,并通过 Hook 机制将关键事件推送到业务侧,便于做鉴权、审计、资源回收与告警。
| 类型 | 示例 | 用途 |
|---|---|---|
| 设备/通道管理 | GET /api/v1/device/list |
查询设备接入与在线状态(用于设备运维、资源盘点)。 |
| 流管理 | GET /api/v1/source/list |
查看推流源与拉流端状态(用于监控与调度)。 |
| Hook:发布/播放 | on_publish / on_play(含 done 事件) |
推流/拉流鉴权、审计、计费、风控。 |
| Hook:超时与录制 | on_idle_timeout / on_receive_timeout / on_record |
无人观看关闭、断流告警、录制产物通知。 |
| Hook:启动 | on_started |
启动时上报,便于编排与健康检查。 |
更多接口细节请参考:API 文档。
默认端口与关键配置(来自 lkm/config.json)
| 模块 | 默认值 | 说明 |
|---|---|---|
| HTTP | 8080 | HTTP 接口与播放入口(如 FLV/HLS/WebRTC 文件后缀路由)。 |
| RTMP | 1935 | 传统直播推/拉流接入。 |
| RTSP | 554 / 20000 / 30000 | 端口可配置为单端口或多端口模式。 |
| WebRTC | 8000(UDP) | 低延迟 Web 播放入口。 |
| GB28181 RTP | 50000-60000 | 国标 RTP 收流端口范围。 |
| JT1078 | 1078(默认关闭) | 车载视频协议接入(可按需启用)。 |
快速上手(开发与部署)
项目同时支持源码编译与 Docker 构建,适合研发联调与生产交付。
# 源码编译(参考仓库 README)
go mod tidy
go mod vendor
go build
# Docker 构建(参考仓库脚本)
./build_docker_images.sh GOOS=linux GOARCH=amd64
运行前建议先确认 lkm/config.json 中的 public_ip、各协议端口与 hooks 回调地址。
典型应用场景
- 智慧城市/园区安防:国标设备汇聚后输出 WebRTC/FLV/HLS 供 Web 与移动端播放。
- 两客一危/车载监管:JT/T 1078 设备接入,转换为国标链路,向上级平台统一汇聚。
- 跨网中继与级联:通过统一的拉流/推流控制与 Hook 机制实现按需调度与资源回收。