我运行这个:
import vlc
import time
player = vlc.MediaPlayer('rtsp://NNNNNNNNNNNNNN')
player.play()
period = 2 # Every 2 seconds I got new screenshot from camera
while True:
time.sleep(period)
player.video_take_snapshot(0, 'screenshot-tmp.png', 0, 0)
一旦我删除
player.play()
- 它就不再起作用了。没有截图。
什么问题?
我不需要打开VLC播放器,只需要截取屏幕并使用它们
通过从播放器对象调用播放,流开始。 video_take_snapshot 方法需要媒体播放器实例才能拍摄屏幕截图[1]。
使用 OpenCV 等其他第三方库,您可以使用播放器的 VideoCapture 等功能,而无需播放器启动:https://docs.opencv.org/3.4/d4/da8/group__imgcodecs.html
import vlc
import cv2
url = 'rtsp://NNNNNNNNNNNNNN'
instance = vlc.Instance()
media = instance.media_new(url)
player = vlc.MediaPlayer(media)
cap = cv2.VideoCapture(player)
period = 2
while True:
ret, frame = cap.read()
if ret:
cv2.imwrite('screenshot-tmp.png', frame)
print("Screenshot captured!")
else:
print("Error capturing frame")
time.sleep(period)
[1] https://www.olivieraubert.net/vlc/python-ctypes/doc/index.html