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 机制实现按需调度与资源回收。