import cv2
import numpy as np
# 视频路径
video1_path = '/home/zhangh/project1/workproject/API/output_video_5.mp4'
video2_path = '/home/zhangh/project1/workproject/API/output_video_6.mp4'
output_path = '/home/zhangh/project1/workproject/API/output_video.mp4'
# 创建视频读取对象
cap1 = cv2.VideoCapture(video1_path)
cap2 = cv2.VideoCapture(video2_path)
# 获取视频属性
fps1 = cap1.get(cv2.CAP_PROP_FPS)
fps2 = cap2.get(cv2.CAP_PROP_FPS)
width1 = int(cap1.get(cv2.CAP_PROP_FRAME_WIDTH))
height1 = int(cap1.get(cv2.CAP_PROP_FRAME_HEIGHT))
width2 = int(cap2.get(cv2.CAP_PROP_FRAME_WIDTH))
height2 = int(cap2.get(cv2.CAP_PROP_FRAME_HEIGHT))
# 确保两个视频帧率相同
if fps1 != fps2:
raise ValueError("两个视频的帧率必须相同")
# 创建视频写入器
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter(output_path, fourcc, fps1, (width1 + width2, height1))
# 读取视频帧
frame1 = cap1.read()[1]
frame2 = cap2.read()[1]
while True:
# 按时间顺序写入帧
if cap1.isOpened() and cap2.isOpened():
# 写入第一个视频的帧
if frame1 is not None:
out.write(cv2.resize(frame1, (width1, height1)))
frame1 = cap1.read()[1]
# 写入第二个视频的帧
if frame2 is not None:
out.write(cv2.resize(frame2, (width2, height2)))
frame2 = cap2.read()[1]
# 检查两个视频是否都结束
if frame1 is None and frame2 is None:
break
# 释放资源
cap1.release()
cap2.release()
out.release()
print("视频合并完成")
OpenCV——把两个视频按时间先后合成一个视频
最新推荐文章于 2024-07-22 16:54:45 发布