今天有个需求,需要获取视频时长:
- 方法一:使用moviepy库打开视频文件并获取视频剪辑对象,然后通过剪辑对象获得视频时长。
- 方法二:使用cv2库通过打开视频文件并获取帧率和总帧数两个属性,计算视频时长。
请注意:以下代码示例只适合读取本地视频文件,如果需要从网络视频流中获取时长,需要使用不同的方法。
让我郁闷的是cv2库,我安装总是报错,最终还是没有安装上
这里使用方法一,方法二中的cv2包我安装失败了。
python
from moviepy.editor import VideoFileClip
import time
def get_video_duration(filepath):
clip = VideoFileClip(filepath)
duration = clip.duration
clip.close()
return duration
duration = get_video_duration(r"E:\Downloads\佛爷哥五杀.mp4")
##上面这个函数所获得的视频时长为秒,但是我想要的是分钟,或者是具有可读性的时间格式。
def seconds_to_time(seconds):
# SecToConvert = 56000
MinutesGet, SecondsGet = divmod(seconds, 60)
HoursGet, MinutesGet = divmod(MinutesGet, 60)
# 省略小数点
HoursGet = int(HoursGet)
MinutesGet = int(MinutesGet)
SecondsGet = int(SecondsGet)
print("视频时长:", HoursGet, "小时", MinutesGet, "分", SecondsGet, "秒")
seconds_to_time(duration)
运行结果:
bash
视频时长: 0 小时 2 分 5 秒