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

How to take multiple VLC snapshot into specific folder

此代码运行良好,但它一直在我不想要的位置替换以前的快照。 如何在不替换上一张的情况下保持每秒拍摄一次快照,以及如何指定这些 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, 0)

很简单,每次得到一帧,存入不同的变量,像这样

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

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, 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)