我的一个朋友让我写了一个简单的代码,每次检测到动作时播放视频。使用的硬件是Raspberry Pi B +和Logitech C170网络摄像头。
这是完整代码:http://pastebin.com/Z6nS9MXf。总的来说,它按预期工作几乎。
所以问题是timeout_command部分:
def timeout_command(command, timeout):
cmd = command.split(" ")
start = datetime.datetime.now()
process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
while process.poll() is None:
time.sleep(0.1)
now = datetime.datetime.now()
if (now - start).seconds > timeout:
os.kill(process.pid, signal.SIGKILL)
os.waitpid(-1, os.WNOHANG)
return None
return process.stdout.read()
它会在超时期限内做某事,在达到期限后,该过程就会停止。
我在代码中写了这个:
timeout_command("omxplayer /home/pi/video/trololo.mp4", 10)
这应该让omxplayer播放视频只有10秒钟,然后关闭。然而,omxplayer播放视频直到最后。
如何解决这个问题?