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