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

树莓派Flask+OpenCV推流报错:/dev/video0设备忙

树莓派摄像头流媒体推送故障排查:/dev/video0 设备忙报错

问题场景

计划用树莓派、Pi Camera、Flask和OpenCV实现网页视频流媒体推送,已编写Python代码和index.html页面。Flask服务正常启动,但访问设备IP看不到流媒体画面,终端报module v4l2src1 reported: Device '/dev/video0' is busy,确认无其他程序占用该设备。

报错详情

@raspberrypi:~/opencv $ sudo python app_start.py
[ WARN:0] global ../modules/videoio/src/cap_gstreamer.cpp (1824) handleMessage OpenCV | GStreamer warning: Embedded video playback halted; module v4l2src0 reported: Failed to allocate required memory.
[ WARN:0] global ../modules/videoio/src/cap_gstreamer.cpp (914) open OpenCV | GStreamer warning: unable to start pipeline
[ WARN:0] global ../modules/videoio/src/cap_gstreamer.cpp (501) isPipelinePlaying OpenCV | GStreamer warning: GStreamer: pipeline have not been created
 * Serving Flask app "app_start" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://0.0.0.0:8080/ (Press CTRL+C to quit)
192.168.123.9 - - [16/Jan/2024 10:29:43] "GET / HTTP/1.1" 200 -
[ WARN:1] global ../modules/videoio/src/cap_gstreamer.cpp (1824) handleMessage OpenCV | GStreamer warning: Embedded video playback halted; module v4l2src1 reported: Device '/dev/video0' is busy
[ WARN:1] global ../modules/videoio/src/cap_gstreamer.cpp (914) open OpenCV | GStreamer warning: unable to start pipeline
[ WARN:1] global ../modules/videoio/src/cap_gstreamer.cpp (501) isPipelinePlaying OpenCV | GStreamer warning: GStreamer: pipeline have not been created
[ WARN:1] global ../modules/videoio/src/cap_v4l.cpp (893) open VIDEOIO(V4L2:/dev/video0): can't open camera by index
192.168.123.9 - - [16/Jan/2024 10:29:43] "GET /video_feed HTTP/1.1" 200 -

解决步骤

1. 排查隐藏进程占用

  • 执行命令查看设备关联进程:
    lsof /dev/video0
    
  • 如果输出有进程,用sudo kill <进程PID>强制终止占用进程

2. 重置V4L2摄像头模块

  • 卸载并重新加载摄像头驱动:
    sudo rmmod bcm2835-v4l2
    sudo modprobe bcm2835-v4l2
    
  • 这会强制重置设备状态,释放异常占用

3. 强制指定OpenCV后端

报错多次关联GStreamer,修改代码里的摄像头初始化逻辑,强制使用V4L2后端:

# 替换原有的cv2.VideoCapture(0)
cap = cv2.VideoCapture(0, cv2.CAP_V4L2)

4. 修复设备权限

  • 检查当前用户是否在video组:
    groups $(whoami)
    
  • 如果没有,添加用户到组并重启:
    sudo usermod -aG video $(whoami)
    sudo reboot
    
  • 尽量避免用sudo运行Flask,高权限可能引发设备访问冲突

5. 验证硬件可用性

  • 重新插拔Pi Camera排线,确保蓝色面朝SD卡方向插紧
  • 用基础命令测试摄像头:
    raspistill -o test.jpg
    
  • 如果无法生成图片,排查硬件损坏或排线问题

内容的提问来源于stack exchange,提问作者Zerg Jung

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 02:35:12