基于FFMPEG的视频最短、最长、平均、总时长的统计脚本

本文介绍了一个使用FFMPEG工具箱在Python中编写的功能,用于获取MP4文件的时长,并对视频文件夹内的所有MP4文件进行总时长、最短时长、最长时长和平均时长的统计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于FFMPEG工具箱实现视频时长的统计任务,具体代码如下所示:

import subprocess
import os

#--------------------------------------------#
# 定义一个函数来获取MP4文件的时长,并保留两位小数
#--------------------------------------------#
def get_duration(file_path):
    try:
        result = subprocess.run(['ffprobe', '-v', 'error', '-show_entries', 'format=duration', '-of', 'default=noprint_wrappers=1:nokey=1', file_path],
                                stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)

        if result.returncode == 0:
            duration = float(result.stdout.strip())
            return round(duration, 2)
        else:
            return None

    except Exception as e:
        print(f"Error getting duration for {file_path}: {e}")
        return None

#-------------------------#
# 定义文件夹路径
#-------------------------#
folder_path = 'your_folder_path'
#---------------------------------#
# 获取文件夹下的所有MP4文件
#---------------------------------#
mp4_files   = [f for f in os.listdir(folder_path) if f.endswith('.mp4')]


if not mp4_files:
    print("No MP4 files found in the folder.")
else:
    #--------------------------#
    # 此处最短时长的赋值为正无穷大
    #--------------------------#
    total_duration = 0
    min_duration   = float('inf')
    max_duration   = 0
    #-----------------------------------------------#
    # 遍历所有MP4文件并通过上述定义的使用FFmpeg统计时长信息
    #-----------------------------------------------#
    for file_name in mp4_files:
        file_path = os.path.join(folder_path, file_name)

        duration  = get_duration(file_path)
        if duration is not None:
            total_duration  += duration

            if duration < min_duration and duration > 0:
                min_duration = duration

            if duration > max_duration:
                max_duration = duration

    #-------------------#
    # 计算平均时长
    #-------------------#
    num_files = len(mp4_files)
    if num_files > 0:
        average_duration = total_duration / num_files
    else:
        average_duration = 0
    #----------------------------#
    # 打印统计信息,并保留两位小数
    #----------------------------#
    print(folder_path)
    print(f"Number of MP4 Files: {num_files}")
    print(f"Total Duration: {total_duration:.2f} seconds")
    print(f"Shortest Duration: {min_duration:.2f} seconds")
    print(f"Longest Duration: {max_duration:.2f} seconds")
    print(f"Average Duration: {average_duration:.2f} seconds")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XuecWu3

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值