遇到.dav
格式的視頻,無法用OpenCV
讀取,如何轉換成mp4
1. 首先將.dav
視頻修改后綴成.h264
# 批量修改視頻后綴
def video_rename(file_path,save_path):
for video_name in os.listdir(file_path):
new_name = video_name.split('.')[0] + '.h264'
os.rename(os.path.join(file_path,video_name),os.path.join(save_path,new_name))
print("視頻格式轉換完成,dav 轉 h264 !!")
2. 利用OpenCV
轉換成mp4
- 此時的
.h264
可以用播放器顯示,但OpenCV還是不能獲取幀率、總時長等信息,只能讀取視頻,所以將讀取的視頻幀保存到mp4
中
# 視頻轉換 mp4
def video2mp4(video_name,save_name,save_fps = 25,video_w = 1280,video_h=1024):
if video_name.split('.')[-1] == 'mp4':
return -1
cap = cv2.VideoCapture(video_name)
tmp_video_mp4 = cv2.VideoWriter(save_name, cv2.VideoWriter_fourcc('M','P','E','G'), save_fps, (video_w,video_h))
start_time = time.time()
while True:
success, origin_img = cap.read()
if not success or len(origin_img) < 2:
break
tmp_video_mp4.write(cv2.resize(origin_img,(video_w,video_h)))
end_time = time.time()
tmp_video_mp4.release()
print("video {} change done! spand time = {}".format(save_name,end_time - start_time))
利用pyqt搭建視頻轉換平台