使用opencv截断视频
opencv进行,截断多长,处理时间与moviepy差不多,可以操作图片,但是代码量较多,操作步骤多,不能够获取音频
import cv2
import time
start=time.time()
cap = cv2.VideoCapture("../images/video/1.mp4")
total = cap.get(cv2.CAP_PROP_FRAME_COUNT)
fps = cap.get(cv2.CAP_PROP_FPS)
h = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)
w = cap.get(cv2.CAP_PROP_FRAME_WIDTH)
print('视频总帧数:{} \t 视频帧速:{} \t 视频大小:{},{}'.format(total, fps, h, w))
size = (int(w), int(h)) # 原视频的大小
fourcc = cv2.VideoWriter_fourcc(*'XVID')
videoWriter = cv2.VideoWriter('video4.avi', fourcc, fps, size)
frameToStart = int(0 * fps) # 开始帧 = 开始时间*帧率
frametoStop = int(20 * fps) # 结束帧 = 结束时间*帧率
cap.set(cv2.CAP_PROP_POS_FRAMES, frameToStart) # 设置读取的位置,从第几帧开始读取视频
current_frame = frameToStart
while (1):
success, frame = cap.read()
if success:
current_frame += 1
if (current_frame >= 0 and current_frame <= frametoStop):
videoWriter.write(frame)
else:
break
else:
print('end')
break
end=time.time()
print(end-start)
moviepy截断视频
moviepy需要代码量少,同时操作简单,可以提取音频
from moviepy.editor import *
#
# oldPath="../images/video/1.mp4"
oldPath=r"C:\Users\Administrator\Downloads\FlashDownload/暗杀.mp4"
# outputfile='video42.avi'
video = VideoFileClip(oldPath)
# 剪辑视频,截取视频60秒
startTime=11*60+3
video = video.subclip(startTime, startTime+59)
video.write_videofile("clip.mp4")
# 获取其中音频
audio = video.audio
# 保存音频文件
audio.write_audiofile('audio.mp3')
参考网页
- https://blog.csdn.net/lly1122334/article/details/90283655
- https://blog.csdn.net/yyy430/article/details/88404816
- https://zhuanlan.zhihu.com/p/260374152