Skip to content

测试素材与 FFmpeg 直播推流 ​

先用已知正常的文件跑通播放器,再换自己的片源。下面三段都是6 秒的自生成测试视频:画面只用 FFmpeg 色块或测试图案,声音是低音量的合成测试音;不含第三方画面或音乐。仓库保留了 scripts/generate_public_demo_media.sh,可重复制作。这些是功能测试片,不是正式全景摄影作品。

下载视频 / 音频适合测试
VR360 H.264 + AAC MP41024×512、2:1、ERP 方位图、H.264 + AAC首次 VR360 验收、鼠标/触屏方向、音频和 H.264 直播推流
VR360 HEVC + AAC MP41024×512、2:1、同一 ERP 方位图、HEVC + AACHEVC 点播及 VR360 回退;浏览器对 HEVC 的支持各异
普通 H.264 + AAC MP4640×360、16:9、动态平面测试图案、H.264 + AAC普通点播、Seek 和非 VR 直播

VR360 方位图写有 FRONT、LEFT、RIGHT、TOP、BOTTOM,画面中心是默认正前方。它是 ERP 验证图,不是真实 360° 摄像机拍摄的画面。音轨是音量较低的合成测试音;有意验收音频时再取消静音。这些 6 秒文件可循环推流,但不能代替长时间稳定性测试。

如果点击文件链接后浏览器直接播放,可右键选择链接另存为。后面的命令使用下载时的文件名;改了文件名就要同步改命令。

1. 先验证本地点播 ​

下载第一个文件,保存为 VR360 示例中的 media/vr360.mp4;把普通视频保存为点播示例中的 media/video.mp4。通过 HTTP 服务访问示例页面,不要双击 file:// 文件。

也可以直接将上面第一条下载链接填入播放器,视频由 GitHub CDN 提供,不消耗网站服务器的媒体流量。只有两段 ERP 视频需要 projection: 'erp360';普通 16:9 视频仍用 flat。

先用 FFprobe 核对下载文件,再排查播放器:

bash
ffprobe -v error -show_entries stream=codec_name,width,height,sample_aspect_ratio -of compact ./media/vr360.mp4

2. 用 FFmpeg 向 ZLMediaKit 推 VR360 直播 ​

先启动 ZLMediaKit。在存放下载文件的目录执行:

bash
# -re 按真实时间推送;-stream_loop -1 不断循环这段短片。
# -c copy 保持测试视频和音频原样,不重新编码。
ffmpeg -re -stream_loop -1 -i ./vr360-erp-h264-aac.mp4 \
  -map 0:v:0 -map 0:a:0 -c copy -f flv \
  rtmp://127.0.0.1/live/vr360

RTMP 地址中的 127.0.0.1 指运行 FFmpeg 的机器;如果媒体服务器在其他机器,要换成服务器地址。命令会持续推流,直到手动停止。

确认 ZLMediaKit 中 live/vr360 已有流,再从浏览器所在机器使用相应的拉流地址:

text
HTTP-FLV: http://127.0.0.1/live/vr360.live.flv
HLS:      http://127.0.0.1/live/vr360/hls.m3u8
WebRTC:   http://127.0.0.1/index/api/whep?app=live&stream=vr360

在VR360 示例中保留 projection: 'erp360',只把 MP4 地址换成选定的直播地址。WebRTC 建议先用 H.264 验证,因为编码必须被浏览器成功协商;WHEP 是拉流播放入口,不是 RTMP 推流入口。ZLMediaKit 从 RTMP 转 WebRTC 的 modify_stamp=1 设置见快速开始。HLS 还需要服务端开启切片,通常延迟更高。如果浏览器在另一台机器,不能用 127.0.0.1 指向媒体服务器;跨域 VR360 读取画面还需要服务器允许 CORS。

3. 推普通平面直播 ​

使用普通视频和另一个流名,再用直播播放示例打开;不要开启 VR,projection 不写或设置为 flat:

bash
ffmpeg -re -stream_loop -1 -i ./flat-h264-aac.mp4 \
  -map 0:v:0 -map 0:a:0 -c copy -f flv \
  rtmp://127.0.0.1/live/test
text
HTTP-FLV: http://127.0.0.1/live/test.live.flv
HLS:      http://127.0.0.1/live/test/hls.m3u8
WebRTC:   http://127.0.0.1/index/api/whep?app=live&stream=test

4. 可选的 HEVC 直播测试与边界 ​

如果要尝试 HEVC VR360 直播,也可以把自生成 HEVC 文件按同样方式推送:

bash
# FFmpeg 的 FLV 封装器和媒体服务器都必须支持 HEVC-in-FLV。
ffmpeg -re -stream_loop -1 -i ./vr360-erp-hevc-aac.mp4 \
  -map 0:v:0 -map 0:a:0 -c copy -f flv \
  rtmp://127.0.0.1/live/vr360hevc

这是可选的兼容性实验,不是已承诺的 WebRTC 播放链路。HEVC MP4 首先是点播测试片;它能播放,不代表媒体服务器支持 HEVC 经 RTMP/FLV 推流,也不代表浏览器能通过 WebRTC 协商 HEVC。每条链路都要分别验收。短片也不覆盖 8K 纹理限制、真实摄像机拼接、空间音频和网络抖动。公开测试集不包含 xinxiaomen 文件、歌曲或来源不明的第三方 VR 视频。