Python 如何从vlc媒体播放器获取帧
我目前正在使用用于python的vlc库(PythonVLC)从sdp流中获取视频流,该sdp流使用sdp文件进行描述。我现在使用的代码是:Python 如何从vlc媒体播放器获取帧,python,opencv,vlc,Python,Opencv,Vlc,我目前正在使用用于python的vlc库(PythonVLC)从sdp流中获取视频流,该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
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来获取视频流,因为OpenCV由于ffmpeg错误而无法打开它 从视频中获取每秒帧数或将默认值设置为25作为合理猜测,然后逐步浏览暂停的视频,每次向前跳转时使用每秒帧数
# -*- 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)
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=播放]从视频中获取每秒帧数,或将其默认为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
指示视频已完成。[state 3=playing]您需要使用一组libvlc调用,不确定python包装器中的调用是什么,但它们应该在mediaplayer对象上公开
您需要设置并使用这些回调。C#使用这些API的示例:您需要使用一组libvlc调用,不确定python包装器中的调用是什么,但它们应该在mediaplayer对象上公开
您需要设置并使用这些回调。C#使用这些API的示例:这段代码只是在特定时间播放视频,不是吗?我不知道它如何帮助我使用特定的帧。这个代码只是在特定的时间播放视频没有?我不知道它如何帮助我使用特定的框架。