HTTP-FLV 协议
HTTP-FLV 是将 FLV 音视频数据通过 HTTP 长连接传输的协议。相比 HLS,HTTP-FLV 拥有更低的延迟;相比 RTMP,它使用标准 HTTP 端口,对防火墙和 CDN 更加友好。
| 属性 | 值 |
|---|---|
| 传输层 | HTTP(共享引擎 HTTP 端口) |
| 推流 | ❌ 不支持 |
| 拉流 | ✅ 支持 |
| 延迟 | 1-3 秒 |
| Feature Flag | flv |
Feature 启用
Section titled “Feature 启用”[features]flv = ["dep:plugin-flv"]flv: enable: true| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
enable | bool | true | 是否启用 FLV 插件 |
URL 格式
Section titled “URL 格式”HTTP-FLV 拉流
Section titled “HTTP-FLV 拉流”http://host:port/flv/{streamPath}.flv{streamPath}:流路径,例如live/test.flv后缀可选
示例:
http://localhost:8080/flv/live/test.flvhttp://localhost:8080/flv/live/testWebSocket-FLV 拉流
Section titled “WebSocket-FLV 拉流”FLV 插件同时支持 WebSocket 方式传输 FLV 数据,适用于浏览器端播放:
ws://host:port/flv/{streamPath}.flv使用 FFplay 拉流
Section titled “使用 FFplay 拉流”ffplay http://localhost:8080/flv/live/test.flv使用 FFmpeg 录制
Section titled “使用 FFmpeg 录制”# 拉取 HTTP-FLV 流并保存为文件ffmpeg -i http://localhost:8080/flv/live/test.flv -c copy output.flv
# 拉取并转封装为 MP4ffmpeg -i http://localhost:8080/flv/live/test.flv -c copy output.mp4在浏览器中可以使用 flv.js 或 mpegts.js 播放 HTTP-FLV 流:
<script src="https://cdn.jsdelivr.net/npm/mpegts.js/dist/mpegts.js"></script><video id="player" controls></video><script> if (mpegts.isSupported()) { const player = mpegts.createPlayer({ type: 'flv', url: 'http://localhost:8080/flv/live/test.flv', isLive: true, }); player.attachMediaElement(document.getElementById('player')); player.load(); player.play(); }</script>WebSocket-FLV 方式:
const player = mpegts.createPlayer({ type: 'flv', url: 'ws://localhost:8080/flv/live/test.flv', isLive: true,});FLV 录制
Section titled “FLV 录制”FLV 插件支持将流录制为 FLV 文件:
# 开始录制curl -X POST http://localhost:8080/flv/record/start/live/test
# 停止录制curl -X POST http://localhost:8080/flv/record/stop/live/test
# 查看录制列表curl http://localhost:8080/flv/record/list
# 查看录制状态curl http://localhost:8080/flv/record/status/live/test音频编码支持
Section titled “音频编码支持”HTTP-FLV 支持以下音频编码格式:
| 编码 | 说明 |
|---|---|
| AAC | 标准支持 |
| G.711A | 支持(安防监控常用) |
| G.711U | 支持(安防监控常用) |
# 1. 通过 RTMP 推流ffmpeg -re -i input.mp4 -c copy -f flv rtmp://localhost:1935/live/test
# 2. 通过 HTTP-FLV 拉流播放ffplay http://localhost:8080/flv/live/test.flv联系我们
微信公众号:不卡科技
腾讯频道:流媒体技术
QQ 频道:p0qq0crz08
QQ 群:751639168