【问题标题】:How to get the frame from the vlc media player如何从 vlc 媒体播放器获取帧
【发布时间】:2018-07-19 11:55:29
【问题描述】:

我目前正在使用用于 python (python-vlc) 的 vlc 库从带有 sdp 文件的 sdp 流中获取视频流。我目前正在使用此代码:

import vlc
import time 

instance = vlc.Instance()
player = instance.media_player_new()
media = instance.media_new("./bebop.sdp")
player.set_media(media)

player.play()
time.sleep(10)

这很适合显示视频。但我不想只显示它,我想使用视频中的每一帧对其进行一些图像处理,然后显示修改后的帧。

我已经阅读了论坛上几乎所有的文档和各种帖子,但我找不到这样做的方法。

我使用 vlc 来获取视频流,因为 open cv 由于一些 ffmpeg 错误而无法打开它。

【问题讨论】:

    标签: python opencv vlc


    【解决方案1】:
    # -*- coding: utf-8 -*-
    
    import vlc
    import time 
    
    def mspf(mp):
        """Milliseconds per frame"""
        return int(1000 // (mp.get_fps() or 25))
    
    
    if __name__ == "__main__":
        instance = vlc.Instance()
        player = instance.media_player_new()
        media = instance.media_new("1.m4v")
        player.set_media(media)
    
        player.play()
    
        """Play 800th frames"""
        new_time = 800 * mspf(player)
        player.set_time(new_time)
    
        time.sleep(10)
    

    【讨论】:

    • 这段代码只是在特定时间播放视频不是吗?我不知道它如何帮助我使用特定的框架。
    【解决方案2】:

    从视频中获取每秒帧数或默认为 25 作为合理猜测,然后逐步播放暂停的视频,使用每秒帧数作为每次向前跳转。

    import vlc
    import time
    
    instance = vlc.Instance('--no-xlib --quiet')
    player = instance.media_player_new()
    media = instance.media_new("./bebop.sdp"")
    player.set_media(media)
    player.play()
    mfps = int(1000 / (player.get_fps() or 25))
    player.set_time(30000) # start at 30 seconds
    player.pause()
    t = player.get_time()
    for iter in range(30):
        t += mfps
        player.set_time(t)
        if player.get_state() == 3:
            player.pause()
        time.sleep(0.5)
    

    在这里,我从 30 秒开始,然后只前进 30 次。
    您可能希望继续前进,直到 player.get_state() == 6 表示视频已完成。 [状态 3 = 播放]

    【讨论】:

      【解决方案3】:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多