OMXplayer-обертка и Python - переход к определенной точке в видео - PullRequest
0 голосов
/ 24 мая 2019

** Я впервые пишу о переполнении стека, поэтому прошу прощения за любые проблемы с форматированием - я постараюсь улучшить по ходу дела!**

Я создаю иллюстрацию, которая использует зацикленные видео на нескольких экранах, и мне нужно, чтобы видео переходило к определенной точке при активации триггера (в конце через датчик движения).

Я бы хотел, чтобы программа заставляла видео переходить к определенной точке видео с помощью OMXplayer на Raspberry Pi.В конце концов, я надеюсь сделать это с помощью сигнала, поступающего от датчика движения PIR, подключенного к выводам GPIO в Pi, но сейчас я тестирую с помощью ключевого ввода.Я использую OMXplayer-обертку от Will Price, которая до сих пор была довольно эффективной, но я упускаю некоторую логику и буду признательна за любую помощь (https://github.com/willprice/python-omxplayer-wrapper/)

У меня есть некоторый написанный код, использующий поиск () функция (см. ниже) сработала с ключевой записи в Python. Это работает, и я могу заставить видео искать вперед (не назад). В худшем случае я запрограммирую видео на цикл раздела, а затем, если потребуется, перескочу вперед.Да, но это сделает все немного сложнее. В идеале мне нужно перейти на абсолютную позицию.

Из документации (https://python -omxplayer-wrapper.readthedocs.io / en /latest / omxplayer / ) Я нашел функцию для «поиска»: seek (lative_position) [источник] Поиск видео по относительной позиции секунд

Параметры: относительная_позиция (float) - позиция в секундах для поиска.

Это прекрасно работает, но ищет только вперед и только к относительной точке. Я хотел бы использовать функцию, которая будет:

video.seek (absolute_position)

Я почти уверен, что это можно сделать, и посмотрел на: positionEvent = None Событие, вызванное установкой обратного вызова позиции (player, 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¶

Опять же, любая помощь будет очень цениться.

...