**这是我第一次在Stack Overflow上发帖,所以请原谅任何格式问题-我会尽力改善! **
我正在制作一个在多个屏幕上使用循环视频的艺术品,并且当触发被激活时(最终通过运动传感器),我需要视频跳到特定点。
我希望该程序使用Raspberry Pi上的OMXplayer使视频跳至视频中的特定点。最后,我希望通过连接到Pi的GPIO引脚中的PIR运动传感器发出的信号来完成此操作,但是现在我正在测试一个按键输入。我使用的是Will Price的OMXplayer-wrapper,到目前为止,该工具非常有效,但是我缺少一些逻辑,希望能提供帮助(https://github.com/willprice/python-omxplayer-wrapper/)
我写了一些使用seek()函数(见下文)的代码,该代码触发了Python中的键输入。这是可行的,我可以使视频向前搜索(而不向后搜索)。最坏的情况是,我将对视频进行编程以循环播放某个部分,然后根据需要跳转到前面,但这会使一切变得更加复杂。理想情况下,我需要跳到绝对位置。
从文档(https://python-omxplayer-wrapper.readthedocs.io/en/latest/omxplayer/)中,我找到了“搜索”功能:seek(relative_position)[source] 按相对位置秒数观看视频
参数:relative_position(float)-要搜索的位置(以秒为单位)。
这很好用,但它只向前寻找,并且只到达相对点。我想使用一个函数,该函数将:
video.seek(absolute_position)
我很确定这是可以做到的,并且看一下: positionEvent =无 在设置位置回调(玩家,absolute_position)上调用的事件
但是我在这里缺少一些东西。这似乎不起作用。我希望这只是我的抖动逻辑,而不是不可能的追求-任何帮助将不胜感激。
from omxplayer.player import OMXPlayer #runs from the popcornmix omxplayer wrapper at https://github.com/popcornmix/omxplayerhttps://github.com/popcornmix/omxplayer and https://python-omxplayer-wrapper.readthedocs.io/en/latest/)
from pathlib import Path
import time
import subprocess
VIDEO_PATH = Path("video.mp4") #any test video - this works, loads and plays
player = OMXPlayer(VIDEO_PATH)
positionEvent = 3
while True:
key = input()
currtime = player.position()
#below an attempt at looping back 3 seconds after the first thrre seconds. This is not working.
if(currtime > 3):
player.seek(-300)
print(currtime)
#below seek works fine when I enter the key, but it only seeks to a relative position
if key == 'h':
player.seek(300)
sleep(5)
这里没有错误消息。视频播放,并且向前寻求作品。我只是想看看我是否可以使视频定位到绝对位置。也许我缺少一些简单的东西-我希望如此。
有一些用于绝对搜索的键代码,但我不知道如何调用它们: omxplayer.keys.SEEK_ABSOLUTE =26¶
再次,我们将不胜感激。