You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派4通过GStreamer推流视频,客户端点击播放后持续加载无画面

解决建议

核心问题:Playlist中的TS文件链接缺失端口

你的GStreamer命令中playlist-root参数只指定了IP,没有加上HTTP服务的8080端口,导致生成的playlist.m3u8里的TS文件地址是http://123.456.78.910/segment_xxxx.ts,而实际HTTP服务在8080端口,浏览器无法找到这些文件,因此一直加载无画面。

修复步骤

  1. 修改GStreamer推流命令,给playlist-root加上端口:
gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw, width=640, height=480, framerate=30/1 ! videoconvert ! videoscale ! clockoverlay time-format="%D %H:%M:%S" ! x264enc tune=zerolatency speed-preset=ultrafast ! mpegtsmux ! hlssink playlist-root=http://123.456.78.910:8080 location=/home/pi/cam/segment_%05d.ts target-duration=5 max-files=5

额外添加speed-preset=ultrafast参数,进一步降低编码延迟,适配实时推流场景。

  1. 重启推流和HTTP服务:
    • 终止原有的gst-launch和Python HTTP服务进程
    • 重新执行修改后的推流命令,确认进入PLAYING状态
    • 重新在/home/pi/cam目录启动HTTP服务

额外排查验证步骤

  • 直接测试TS文件访问:在电脑浏览器中访问http://123.456.78.910:8080/segment_00001.ts,如果能下载或播放,说明文件共享正常;如果返回404,检查:
    • 推流命令是否生成了非0字节的TS文件(查看/home/pi/cam目录下的文件大小)
    • HTTP服务是否确实在/home/pi/cam目录启动
  • 验证编码环节:在树莓派本地生成测试视频,确认摄像头和编码功能正常:
gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw, width=640, height=480, framerate=30/1 ! videoconvert ! x264enc tune=zerolatency ! mp4mux ! filesink location=test.mp4

用本地播放器打开test.mp4,确认有正常画面。

  • 查看HTTP服务日志:点击播放后,观察Python HTTP服务的终端输出,如果没有TS文件的GET请求,说明playlist地址错误;如果有404响应,检查路径匹配问题。

内容的提问来源于stack exchange,提问作者Benyameen Nissley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 00:15:34