问题描述
此代码运行良好,但是它会在我不需要的位置继续替换以前的快照。 如何才能保持每秒拍摄快照而不替换前一张照片,又如何为这些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)
解决方法
很容易,每次获得框架时,都将其存储在这样的不同变量中
,正如一条评论所述,您需要为以后的每次保存更改文件名。我会在您的循环中创建一个计数,然后将值格式化为文件名字符串。例如:
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)