将不同视频的分辨率分类放入不同文件夹

import os
import shutil
import subprocess
import re
from moviepy.editor import VideoFileClip
import time

# 定义支持的视频文件扩展名
VIDEO_EXTENSIONS = ('.mp4', '.avi', '.mkv')

def log_info(message):
    """打印信息日志"""
    print(f"[INFO] {message}")

def log_warning(message):
    """打印警告日志"""
    print(f"[WARNING] {message}")

def log_error(message):
    """打印错误日志"""
    print(f"[ERROR] {message}")

def sort_video_by_resolution(video, source_folder, destination_folder):
    try:
        clip = VideoFileClip(video)
        resolution = f"{clip.w}x{clip.h}"
        log_info(f"成功获取视频 {video} 的分辨率: {resolution}")
        dest_subfolder = os.path.join(destination_folder, resolution)
        create_output_folder_if_not_exists(dest_subfolder)
        dest_file = os.path.join(dest_subfolder, os.path.basename(video))

        # 添加延迟
       # time.sleep(2)

        shutil.copy2(video, dest_file)  # 使用shutil.copy2代替shutil.move
        log_info(f"已将视频 {video} 复制到 {dest_subfolder}")
    except Exception as e:
        log_error(f"处理 {video} 时发生错误: {e}")

def create_output_folder_if_not_exists(folder_path):
    """如果输出文件夹不存在,则创建它"""
    if not os.path.exists(folder_path):
        os.makedirs(folder_path)
        log_info(f"已创建输出文件夹: {folder_path}")

def main():
    log_info("程序开始执行...")
    source_folder = "D:/2024.4.6"
    destination_folder = "sorted_videos"

    create_output_folder_if_not_exists(destination_folder)

    video_files = [os.path.join(source_folder, f) for f in os.listdir(source_folder) if any(f.endswith(ext) for ext in VIDEO_EXTENSIONS)]
    log_info(f"共找到 {len(video_files)} 个视频文件")

    for video in video_files:
        sort_video_by_resolution(video, source_folder, destination_folder)

    log_info("程序执行完毕。")

if __name__ == "__main__":
    main()

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值