视频的基础参数:分辨率,帧率、码率、比特率、采样率。
视频的帧率是可以是恒定的(cfr, Const Frame-Rate),也可以是变化的(vfr, Variable Frame-Rate)
import cv2
video_cap = cv2.VideoCapture('/home/Downloads/2.mp4')
frame_count = 0
while (True):
ret, frame = video_cap.read()
if ret is False:
break
frame_count = frame_count + 1
print(frame_count)
来自:使用 python-opencv 读取视频,计算视频总帧数及 FPS 的实现
下面的实现要求 opencv 3 以上的版本
import cv2
video = cv2.VideoCapture('/home/Downloads/2.mp4') # 23.97602537435857
fps = video.get(cv2.CAP_PROP_FPS)
print("Frames per second using video.get(cv2.CAP_PROP_FPS) : {0}".format(fps))
video.release()
低版本的实现可以参考 使用 python-opencv 读取视频,计算视频总帧数及 FPS 的实现
参考:Python基于OpenCV将视频逐帧保存为图片
视频路径:/home/Downloads/2.mp4
保存图片的路径:/home/Downloads/2/
# coding=utf-8
import cv2
interval = 1 # 保存时的帧数间隔
frame_count = 0 # 保存帧的索引
frame_index = 0 # 原视频的帧索引,与 interval*frame_count = frame_index
cap = cv2.VideoCapture('/home/Downloads/2.mp4')
if cap.isOpened():
success = True
else:
success = False
print("读取失败!")
while(success):
success, frame = cap.read()
if success is False:
print("---> 第%d帧读取失败:" % frame_index)
break
print("---> 正在读取第%d帧:" % frame_index, success)
if frame_index % interval == 0:
cv2.imwrite("/home/Downloads/2/%d.jpg" % frame_count, frame)
frame_count += 1
frame_index += 1
多个视频的转化参考:Python基于OpenCV将视频逐帧保存为图片
图片的路径:/home/Downloads/2/
新视频的路径:/home/Downloads/new_2.mp4
来自:python将多帧图片组合成视频
import cv2
import os
import random
img = cv2.imread('/home/Downloads/2/0.jpg') # 读取保存的任意一张图片
fps = 23.97602537435857 # 根据第二节介绍的方法获取视频的 fps
size = (img.shape[1],img.shape[0]) #获取视频中图片宽高度信息
print(size)
fourcc = cv2.VideoWriter_fourcc(*"XVID") # 视频编码格式
videoWrite = cv2.VideoWriter('/home/Downloads/new_2.avi',fourcc,fps,size)# 根据图片的大小,创建写入对象 (文件名,支持的编码器,帧率,视频大小(图片大小))
files = os.listdir('/home/Downloads/2/')
out_num = len(files)
for i in range(0, out_num):
fileName = "/home/Downloads/2/"+str(i)+'.jpg' #循环读取所有的图片,假设以数字顺序命名
img = cv2.imread(fileName)
videoWrite.write(img)# 将图片写入所创建的视频对象
videoWrite.release() # 释放了才能完成写入,连续写多个视频的时候这句话非常关键
下面列举写其他的视频编码格式,以及对应的保存格式,eg XVID
保存为 avi
PS:上述操作保存后的视频会比原视频大小大很多,可以配合视频转换工具进一步压缩!