cv2播放视频
import cv2
import win32gui
def play_video(path):
cap = cv2.VideoCapture(path)
fps = cap.get(cv2.CAP_PROP_FPS)
wait = int(1 / fps * 750)
cv2.namedWindow("frame", 0)
while True:
ret, frame = cap.read()
if not ret:
break
cv2.imshow('frame', frame)
if cv2.waitKey(wait) & 0xFF == ord('q') or not win32gui.FindWindow(None, 'frame'):
break
cap.release()
cv2.destroyAllWindows()
if __name__ == '__main__':
source_path = 'data/video/my.mp4'
play_video(source_path)
保存rtsp视频流数据
import cv2
def save_video(rtsp_url):
"""
视频的编码格式参考如下:
cv2.VideoWriter_fourcc('I','4','2','0'):YUV编码,4:2:0色度子采样。这种编码广泛兼容,但会产生大文件。文件扩展名应为.avi。
cv2.VideoWriter_fourcc('P','I','M','1'):MPEG-1编码。文件扩展名应为.avi。
cv2.VideoWriter_fourcc('X','V','I','D'):MPEG-4编码。如果要限制结果视频的大小,这是一个很好的选择。文件扩展名应为.avi。
cv2.VideoWriter_fourcc('m', 'p', '4', 'v'):较旧的MPEG-4编码。如果要限制结果视频的大小,这是一个很好的选择。文件扩展名应为.m4v。
cv2.VideoWriter_fourcc('X','2','6','4'):较新的MPEG-4编码。如果你想限制结果视频的大小,这可能是最好的选择。文件扩展名应为.mp4。
cv2.VideoWriter_fourcc('T','H','E','O'):这个选项是Ogg Vorbis。文件扩展名应为.ogv。
cv2.VideoWriter_fourcc('F','L','V','1'):此选项为Flash视频。文件扩展名应为.flv。
:param rtsp_url: 视频流地址
:return:
"""
cap = cv2.VideoCapture(rtsp_url)
fps = cap.get(cv2.CAP_PROP_FPS)
size = (750, 420)
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('rt_out.avi', fourcc, fps, size)
try:
while cap.isOpened():
ret, frame = cap.read()
if not ret:
continue
out.write(frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
except Exception as e:
print(e)
finally:
try:
cv2.destroyWindow("frame")
cap.release()
except Exception as e:
print(e)
if __name__ == '__main__':
save_video("rtsp://xxxxx/h264/ch1/main/av_stream")