【问题标题】:Fire events at specific timestamps during video playback在视频播放期间以特定时间戳触发事件
【发布时间】:2018-01-13 22:13:21
【问题描述】:

我正在使用运行 Raspbian 的 Raspberry Pi 3。我需要通过 HDMI 播放视频文件,并且我需要在视频播放期间以特定时间码触发事件。这些事件是对 GPIO 的简单写操作。我的问题是:我应该使用什么方法来做到这一点?

我的第一个方法是使用 OpenCv (python) 和 VideoCapture(),但是树莓派太慢了,而且我的 FPS 非常低(我需要至少 25 FPS @ 1080p)。

所以现在我正在寻找其他解决方案:Gstreamer、FFMPEG、omxplayer,我阅读了文档,但不知道该使用哪种工具来完成这项工作。

【问题讨论】:

    标签: video ffmpeg gstreamer raspberry-pi3 omxplayer


    【解决方案1】:

    感谢 python-omxplayer-wrapper (https://github.com/willprice/python-omxplayer-wrapper)

    ,我终于用 omxplayer 轻松解决了这个问题

    *编辑:这是基本示例代码的样子:

    from omxplayer import OMXPlayer
    from time import sleep
    
    /* Setup the player as shown in omxplayer-wrapper examples : */
    source = '../video/gray10sec.mp4'
    player = OMXPlayer(source, args=['--loop', '--no-osd', '--blank'])
    player.pause()
    sleep(5)
    player.play()
    
    /* Make a query to position() inside infinite loop : */
    while (1):
        position = player.position() * 1000
        /* Event timecodes values are stored in "events" */
        for event in events.values():
            if position - 20 <= event['tc'] and position + 20 >= event['tc']:
                /* Put your code here */
    
    player.quit()
    

    【讨论】:

    • 它;很高兴您解决了它,但除了提供链接之外,请提供您问题的实际解决方案。 Stack Overflow 也像一个解决方案库一样工作,您的贡献将帮助其他人在未来遇到同样的问题。
    【解决方案2】:

    您需要为此编写一些代码。您可以编写一个 gpiowriter 元素。该元素将具有 io-pin 的 gobject 属性和值的可控制属性。然后,您可以附加一个列出时间戳:值对的 GstControlSource。 gpiowriter 可以没有 pad,只运行一个线程并根据流水线时钟从控制器同步属性,或者它可以是像标识这样的直通元素。后者将同步框架上的属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 2022-12-14
      • 1970-01-01
      • 1970-01-01
      • 2013-01-15
      相关资源
      最近更新 更多