如何将多个VLC快照放入特定文件夹

问题描述

代码运行良好,但是它会在我不需要的位置继续替换以前的快照。 如何才能保持每秒拍摄快照而不替换前一张照片,又如何为这些png指定要保存的文件夹?

player=vlc.MediaPlayer('rtsp://admin:888999@thesport.fujiko.biz:554/unicast/c3/s0/live')
player.play()

while 1:
    time.sleep(1)
    player.video_take_snapshot(0,'.snapshot.tmp.png',0)

解决方法

很容易,每次获得框架时,都将其存储在这样的不同变量中

enter image description here

,

正如一条评论所述,您需要为以后的每次保存更改文件名。我会在您的循环中创建一个计数,然后将值格式化为文件名字符串。例如:

player=vlc.MediaPlayer('rtsp://admin:888999@thesport.fujiko.biz:554/unicast/c3/s0/live')
player.play()

i = 0

while 1:
    time.sleep(1)
    player.video_take_snapshot(0,'.snapshot_{}.tmp.png'.format(i),0)
    i += 1
,

如果仅指定目录名而不是文件名,vlc将根据日期和时间为您创建一个唯一的文件名。


文件:///home/rolf/vlcsnap-2020-08-14-10h43m06s020.png
文件:///home/rolf/vlcsnap-2020-08-14-10h43m08s936.png

#Video Snapshot
def OnSnapShot(self,evt):
    media_state = self.player.get_state()
    if media_state.value < 3 or media_state.value > 4:
        return
    if os.path.isfile(self.currentlyplaying):
        dir_name = os.path.dirname(self.currentlyplaying)
    else:
        dir_name = self.home_dir
    snapshot_size = self.player.video_get_size(0)
    x=self.player.video_take_snapshot(0,dir_name,snapshot_size[0],snapshot_size[1])
    if x == 0:
        Notify(self,"Snapshot","Image saved in "+dir_name)