????????有一个同事找我帮个忙,让我帮他读取以下一段视频,因为视频在他的电脑上无法播放。等他把视频发给我查看之后发现视频不是常用见的格式,是监控视频常用的dav格式,于是想到了使用转换视频格式的方式来实现目的需求。
????????Dav格式是一种特定的视频格式,通常用于存储监控摄像头录制的视频。要播放Dav格式的监控视频,你可以尝试以下方法:
????????请注意,Dav文件可能会使用特定的编解码器,因此在播放或转换Dav文件之前,你可能需要安装相应的解码器或编解码器。
import cv2
# 读取Dav格式视频
dav_file = 'test.dav'
cap = cv2.VideoCapture(dav_file)
# 获取视频的参数
fps = cap.get(cv2.CAP_PROP_FPS)
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
# 设置输出视频的编解码器和参数
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
output_file = 'output.mp4'
out = cv2.VideoWriter(output_file, fourcc, fps, (width, height))
# 逐帧读取视频并写入输出视频
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
out.write(frame)
# 释放资源
cap.release()
out.release()
运行过程如下:
?虽然运行过程提示丢失信息的警告,但是不影响结果,视频还是正常输出了。需要提醒的是,电脑上可能需要安装相应的视频解码软件才可以,还有就是,因为dav格式视频是压缩的,转换成mp4之后,视频存储量会变大,在我这个测试视频中,原来只有13M左右,转换成之后变成了48M,存储量扩大了将近4倍。
项目目录如下:
当然,也可以使用上面提到的视频转换工具实现,总之,解决了问题就好,殊途同归。