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

如何使用Gphoto2与FFmpeg捕获Panasonic DC-GH5相机视频,并搭建无FFServer的浏览器可访问视频流服务

我来帮你搞定这个Panasonic DC-GH5的浏览器视频流服务问题,咱们一步步来排查和解决:

第一步:确认GH5的视频流能被正确捕获

你当前直接用/dev/video0可能有问题——GH5是通过gphoto2的PTP/IP协议连接的,默认不会被识别为普通的V4L2视频设备。先做这几步验证:

  • 先测试gphoto2本身能不能拿到相机的视频流:
    gphoto2 --capture-movie --stdout
    
    如果终端开始输出乱码数据,说明相机连接正常,只是没转成V4L2设备。
  • 用v4l2loopback虚拟一个视频设备,把gphoto2的流导进去:
    1. 安装依赖:
      sudo apt install v4l2loopback-dkms v4l2loopback-utils
      
    2. 加载虚拟视频模块:
      sudo modprobe v4l2loopback video_nr=0 card_label="GH5_Camera"
      
    3. 把gphoto2的视频流推到虚拟设备:
      gphoto2 --capture-movie --stdout | ffmpeg -i - -f v4l2 /dev/video0
      
    这时候你可以用ffplay /dev/video0测试,如果能看到相机画面,说明捕获环节没问题了。
第二步:修正FFmpeg推流命令

你原来的命令有几个容易踩坑的点,我给你调整成更适合浏览器播放的版本:

ffmpeg -f v4l2 -s 1920x1080 -r 25 -i /dev/video0 -c:v libvpx-vp9 -b:v 2M -f webm -listen 1 http://0.0.0.0:8090/gh5-stream
  • 用0.0.0.0代替localhost:这样同一局域网内的设备都能访问,避免只能本地访问的限制
  • 加上/gh5-stream路径:防止浏览器缓存旧的流数据,也让路由更清晰
  • 调整分辨率和码率:GH5支持更高分辨率,你可以根据需求改成3840x2160(4K),码率对应调高到8M左右
  • 先去掉音频部分:等视频正常播放后,再添加音频(用arecord -l查看你的音频设备,替换原来的pulse为实际设备比如hw:0,0)
第三步:调整前端页面代码

浏览器对自动播放和视频格式有严格要求,修改你的index.php代码:

<video width="1920" height="1080" controls autoplay muted>
  <source src="http://你的Ubuntu机器IP:8090/gh5-stream" type="video/webm">
  你的浏览器不支持WebM视频格式,请更换浏览器重试。
</video>
  • 必须加muted:现代浏览器要求静音才能自动播放,否则视频会停在初始状态
  • 替换你的Ubuntu机器IP:比如你的Ubuntu机器局域网IP是192.168.1.100,就填这个,不要用localhost(浏览器的localhost指的是自己的机器,不是Ubuntu服务器)
  • 加controls:方便你手动播放/暂停,调试时更直观
最后几个排查小细节
  • 开放防火墙端口:Ubuntu20.04默认启用UFW,记得开放8090端口:
    sudo ufw allow 8090
    
  • 检查FFmpeg的VP9编码支持:如果推流失败,可能是缺编码库,安装这个:
    sudo apt install libavcodec-extra
    
  • 解决gphoto2卡顿:如果捕获视频时丢帧,试试增大缓存:
    gphoto2 --capture-movie --stdout --buffer-size=2048
    

内容的提问来源于stack exchange,提问作者Doglas A. Dembogurski Feix

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 11:57:50