You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python从文件属性>详情页获取视频时长

os.stat() 仅能读取文件系统层面的基础属性(如文件大小、创建/修改时间等),无法解析视频文件内部封装的媒体元数据,因此无法获取到视频时长。以下是可用的实现方案:

方案1:使用pymediainfo(推荐,兼容性最强)

该方案基于MediaInfo实现,支持几乎所有主流视频格式,读取的时长参数和系统文件详情页显示的结果完全一致。

  • 安装依赖:
# 先安装Python库
pip install pymediainfo
# 若运行报错,需额外安装MediaInfo工具:
# Windows:官网下载MediaInfo安装包添加到系统环境变量
# Mac:brew install mediainfo
# Linux(Debian/Ubuntu):sudo apt install mediainfo
  • 示例代码:
from pymediainfo import MediaInfo

def get_video_duration(file_path: str) -> float:
    """
    获取视频时长,返回值单位为秒
    """
    media_info = MediaInfo.parse(file_path)
    for track in media_info.tracks:
        if track.track_type == "Video":
            return int(track.duration) / 1000

# 调用示例
print(get_video_duration("example.mp4"))

方案2:使用opencv-python(轻量方案)

适合已经在使用OpenCV做视频处理的场景,对常见的MP4、AVI、MOV等格式支持良好。

  • 安装依赖:
pip install opencv-python
  • 示例代码:
import cv2

def get_video_duration(file_path: str) -> float:
    cap = cv2.VideoCapture(file_path)
    if not cap.isOpened():
        raise IOError("无法打开指定视频文件")
    fps = cap.get(cv2.CAP_PROP_FPS)
    total_frames = cap.get(cv2.CAP_PROP_FRAME_COUNT)
    duration = total_frames / fps
    cap.release()
    return duration

print(get_video_duration("example.mp4"))

方案3:使用moviepy(适合视频剪辑场景)

如果后续需要对视频做裁剪、拼接等编辑操作,可以直接使用moviepy库获取时长。

  • 安装依赖:
pip install moviepy
  • 示例代码:
from moviepy.editor import VideoFileClip

def get_video_duration(file_path: str) -> float:
    with VideoFileClip(file_path) as clip:
        return clip.duration

print(get_video_duration("example.mp4"))

注:如果追求和系统文件详情页显示的时长完全匹配,优先选择pymediainfo方案。

内容的提问来源于stack exchange,提问作者Micah Haile

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 19:27:06