自动获取视频属性
前两天要统计一些数据,其中就需要统计每个视频的时长,无意间发现有一个教程044 Python小项目-视频时长获取器(PyQt5),其中核心代码如下:
Python
import cv2
def get_file_times(filename):
"""获取视频时长"""
file_time = 0
cap = cv2.VideoCapture(filename)
if cap.isOpened():
rate = cap.get(5)
frame_num = cap.get(7)
duration = frame_num/rate
cap.release()
return duration
else:
return file_time
def timeConvert(size):
"""时间单位换算"""
M, H = 60, 60**2
if size < M:
return str(size)+'秒'
if size < H:
return '%s分钟%s秒' % (int(size/M), int(size % M))
else:
hour = int(size/H)
mine = int(size % H/M)
second = int(size % H % M)
time_str = "%s小时%s分钟%s秒" % (hour, mine, second)
return time_str
如果需要深入获取视频属性,比如分辨率等,能不能通过opencv获取到呢?
以下是一段通过opencv获取到的视频属性
Python
import cv2
cap = cv2.VideoCapture(video_name) # 这里需要填写视频的路径
# 帧率
fps = int(round(cap.get(cv2.CAP_PROP_FPS)))
# 分辨率-宽度
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
# 分辨率-高度
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
# 总帧数
frame_counter = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
cap.release()
cv2.destroyAllWindows()
# 时长,单位s
duration = frame_counter / fps
0101更新
最近阅读别人的源码的时候,无意间发现pymediainfo也能获取视频的属性,而且相对于opencv,包也相对比较小,后续可以进一步研究看看