一个纯 Rust 实现的轻量级推流器,将 DASH(MPD) 或 HLS(M3U8) 输入实时转封装为明文 HLS-TS 输出,不依赖 ffmpeg 等外部工具。

Stars

79

7 天增长

暂无数据

Fork 数

28

开放 Issue

0

开源协议

暂无数据

最近更新

2026-07-07

AI 仓库情报摘要
FR-AI / ANALYSIS

为什么值得关注

它无需外部依赖,支持多种加密方案(CENC AES-CTR、AES-128、cbcs)以及 HEVC、杜比视界、HDR10 等高级编码,同时通过将 TS 分片伪装为 JPEG 来优化 CDN 缓存。

适合谁使用

  • 需要将加密 DASH/HLS 转为无加密 HLS-TS 的流媒体工程师
  • 管理直播流 CDN 缓存策略的运维/DevOps 人员
  • 需要集成动态密钥获取机制的转封装开发者
  • 希望构建轻量级视频管道而不依赖大型多媒体工具的系统集成商

典型使用场景

  • 将 DRM 保护的 DASH 或 HLS 直播流转为无加密的 HLS-TS 以便分发
  • 生成对 CDN 友好的自适应 HLS 输出(分片伪装为 .jpeg)
  • 从 MPD/M3U8 中透传字幕并转为 WebVTT 集成到 HLS master playlist
  • 创建按需转封装任务,闲置自动暂停以节省资源

项目优势

  • 无外部运行时依赖(无需 ffmpeg、mp4decrypt),单个二进制即可部署
  • 全面加密支持:DASH CENC AES-CTR、HLS AES-128、HLS fMP4 SAMPLE-AES/cbcs
  • 保留高级视频特性:HEVC、杜比视界 RPU、HDR 元数据、AAC/AC-3/EC-3 音频
  • 内置 Web UI 和 REST API 管理任务,支持可配置的动态密钥接口及自动重试机制

使用前须知

  • 所有分片仅存储在内存中,服务重启后任务及缓存内容失效
  • 输出仅支持 HLS-TS(不支持 DASH 输出),浏览器对 HEVC/杜比视界支持有限
  • 动态密钥模式要求密钥端点稳定可靠,失败重试会阻塞转封装任务发布

README 快速开始

DV-HLS Gateway

DV-HLS Gateway 是一个纯净的手动推流器,用于把 DASH(MPD) 或 HLS(M3U8) 输入实时转封装为明文 HLS-TS 输出。

它不依赖 ffmpeg / mp4decrypt,运行时只做解密、MP4 解析、TS 封装和直播窗口发布;HEVC、Dolby Vision RPU、HDR 元数据、AAC / AC-3 / EC-3 音频都会尽量原样透传。

功能

  • 支持 MPD 和 M3U8 输入,统一输出 HLS-TS。
  • 支持 VOD 和 Live,Live 会贴近 live edge、滚动发布并做内存 GC。
  • 支持 HEVC、H.264、Dolby Vision Profile 5/8、HDR10、HLG、SDR。
  • 支持 AAC-LC、AC-3、EC-3,前端可显示语言、codec 和码率。
  • 支持 DASH CENC AES-CTR、HLS AES-128、HLS fMP4 SAMPLE-AES / cbcs。
  • 支持固定 key 和动态取 key。
  • 支持字幕推流,开启字幕时输出 master playlist + media playlist + subtitle playlist。
  • 支持持续转化和按需启停,按需任务默认 5 分钟无播放请求后暂停。
  • 分片只缓存在内存中,不写磁盘。
  • 输出 TS 分片伪装为 .jpeg 且响应 Content-Type: image/jpeg,便于 CDN 缓存。

目录

  • src/:主程序源码。
  • src/frontend/index.html:内置 Web UI。
  • examples/:辅助示例。
  • examples/key_api.php:动态取 key 接口 PHP 示例。
  • dv-hls-gateway.example.json:运行配置示例。
  • .github/workflows/ci.yml:CI,运行格式检查和测试。
  • .github/workflows/release.yml:多平台二进制构建。

构建

本地构建

cargo build --release

运行:

./target/release/dv-hls-gateway

默认读取二进制同目录的 dv-hls-gateway.json。如果文件不存在,程序首次启动会自动生成一个模板。

也可以显式指定配置文件和端口:

./target/release/dv-hls-gateway --config ./dv-hls-gateway.json --host 0.0.0.0 --port 37201

GitHub Actions 构建

仓库内置 Build Release Binaries workflow,可手动运行,也可推送 v* tag 自动构建并发布附件。

手动运行:

  1. 打开 GitHub Actions。
  2. 选择 Build Release Binaries
  3. 点击 Run workflow
  4. 填入 release_tag,例如 v0.1.0

手动运行会创建或更新对应 tag 的 Release。推送 tag 也会自动发布:

固定产物名:

产物运行平台Rust target
dv-hls-gateway-linux-amd64-muslLinux x86_64x86_64-unknown-linux-musl
dv-hls-gateway-linux-armv7-muslLinux ARMv7 hard-floatarmv7-unknown-linux-musleabihf
dv-hls-gateway-linux-arm64-muslLinux ARM64aarch64-unknown-linux-musl
dv-hls-gateway-windows-amd64-musl.exeWindows x86_64x86_64-pc-windows-msvc
dv-hls-gateway-macos-amd64-muslmacOS Intelx86_64-apple-darwin
dv-hls-gateway-macos-arm64-muslmacOS Apple Siliconaarch64-apple-darwin

说明:musl 是 Linux 目标使用的 libc;Windows/macOS 没有 musl ABI,项目仍按固定产物名输出,实际 target 以表格为准。

命令行打 tag 触发构建:

git tag v0.1.0
git push origin v0.1.0

下载后运行:

chmod +x ./dv-hls-gateway-linux-amd64-musl
./dv-hls-gateway-linux-amd64-musl --config ./dv-hls-gateway.json --host 0.0.0.0 --port 37201

Windows:

.\dv-hls-gateway-windows-amd64-musl.exe --confi

项目描述

Live stream gateway

相关仓库与替代方案

根据分类、Topic 和编程语言匹配的相似项目。

l0ng-ai
精选
l0ng-ai GitHub avatar

tty7

tty7 is a fast, GPU-accelerated terminal workbench with persistent sessions, built-in input tools, SSH support, and coding agent awareness.

开发者工具CLI 与终端
359
steelbrain
精选
steelbrain GitHub avatar

reims-vgpu

reims-vgpu is an experimental virtual GPU for macOS guests that uses QEMU to decode the guest's GPU command stream and execute it through Metal or Vulkan, leveraging the built-in AppleParavirtGPU driver without requiring custom kexts.

桌面应用
143
m-novotny
精选
m-novotny GitHub avatar

memguard-rs

A Rust library that provides secure memory handling primitives including zeroization on drop, memory locking, constant-time comparison, and compile-time guarded regions, with zero dependencies and no_std support.

嵌入式与物联网安全
131