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

树莓派3按钮控制浏览器双摄像头全屏显示脚本暂停问题求助

问题分析与最小改动解决方案

你的核心问题出在os.system()的行为上:这个函数会阻塞当前脚本的执行,直到它调用的命令(也就是Chromium)完全退出。所以每次你用它启动全屏浏览器时,脚本就会卡在这一行,直到你关闭浏览器才会继续执行后面的循环逻辑。

最小改动的修复方法

只需要在Chromium的启动命令末尾加上&符号,让进程在后台运行,这样os.system()执行完启动命令后会立刻返回,脚本就能继续运行循环监听按钮了。

修改后的完整代码如下(标注了改动的行):

import RPi.GPIO as GPIO
from time import sleep
import os
url1 = 'http://10.0.0.31/mjpg/video.mjpg'
url2 = 'http://10.0.0.32/mjpg/video.mjpg'
GPIO.setmode(GPIO.BCM)
array = [4,17]
GPIO.setup(array, GPIO.IN, pull_up_down=GPIO.PUD_UP)
# 改动:末尾加&让浏览器后台运行
os.system('chromium-browser --app=http://10.0.0.31/mjpg/video.mjpg --kiosk &')
while True:
    if ( GPIO.input(17) == False ):
        print('Button 1 Pressed')
        os.system('date')
        os.system('pkill chromium-browser')
        print (GPIO.input(17))
        # 改动:末尾加&让浏览器后台运行
        os.system('chromium-browser --app=http://10.0.0.32/mjpg/video.mjpg --kiosk &')
        sleep(0.5)
    if ( GPIO.input(4) == False ):
        print('Button 2 Pressed')
        os.system('date')
        os.system('pkill chromium-browser')
        print (GPIO.input(4))
        # 改动:末尾加&让浏览器后台运行
        os.system('chromium-browser --app=http://10.0.0.31/mjpg/video.mjpg --kiosk &')
        sleep(0.5)
    else:
        os.system('clear')
        print ('Press a key')
        sleep(0.1)

额外说明

  • &是Linux shell的语法,用来让命令在后台启动,不会阻塞当前终端/脚本的执行。
  • 你原来的pkill chromium-browser依然可以正常杀掉后台运行的Chromium进程,不用担心进程残留的问题。
  • 你已经加了sleep(0.5)做按钮防抖,这个逻辑可以保留,避免误触发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:59:38