import os import subprocess

定义输入输出文件路径

input_path = '' output_path = ''

支持的视频格式

supported_formats = ['.mp4', '.mkv', '.wmv', '.avi', '.rmvb', '.rm', '.flv', '.mov', '.ts', '.m2ts', '.mpeg', '.asf', '.asx', '.vob' , '.m2t', '.3gp']

获取视频列表

def get_video_list(path): video_list = [] if os.path.isfile(path) and os.path.splitext(path)[1] in supported_formats: video_list.append(path) elif os.path.isdir(path): for file_name in os.listdir(path): if os.path.splitext(file_name)[1] in supported_formats: video_list.append(os.path.join(path, file_name)) return video_list

按照最后修改时间排序

def sort_video_list(video_list): video_list.sort(key=lambda x: os.path.getmtime(x), reverse=True) return video_list

剪辑视频

def clip_video(video_path, start_time='00:00:00.000', end_time=None): video_name = os.path.basename(video_path) output_path = os.path.join(os.path.dirname(video_path), 'clip_' + video_name) if not start_time: start_time = '00:00:00.000' if end_time is None: cmd = 'ffmpeg -ss '{}' -i '{}' -c copy '{}''.format(start_time, video_path, output_path) else: cmd = 'ffmpeg -ss '{}' -to '{}' -i '{}' -c copy '{}''.format(start_time, end_time, video_path, output_path) with open(os.devnull, 'w') as devnull: subprocess.Popen(cmd, shell=True, stdout=devnull, stderr=subprocess.PIPE)

if name == 'main': # 输入视频路径 input_path = input('请输入视频路径:')

# 判断输入路径是否为文件
if os.path.isfile(input_path) and os.path.splitext(input_path)[1] in supported_formats:
    # 输入开始和结束时间
    start_time = input('请输入开始时间(格式为hh:mm:ss.sss):')
    end_time = input('请输入结束时间(格式为hh:mm:ss.sss):')
    if not end_time:
        end_time = None

    # 剪辑视频
    clip_video(input_path, start_time, end_time)

# 判断输入路径是否为目录
elif os.path.isdir(input_path):
    # 获取视频列表并排序
    video_list = get_video_list(input_path)
    if not video_list:
        print('输入的路径不是一个视频文件或者包含视频文件的目录!')
    else:
        video_list = sort_video_list(video_list)

        # 显示视频列表
        for i, video_name in enumerate(video_list):
            print('{}: {}'.format(i+1, os.path.basename(video_name)))

        # 选择要剪辑的视频
        selected_video_index = int(input('请选择要剪辑的视频序号:'))

        # 开始和结束时间
        start_time = input('请输入开始时间(格式为hh:mm:ss.sss):')
        end_time = input('请输入结束时间(格式为hh:mm:ss.sss):')
        if not end_time:
            end_time = None

        # 剪辑视频
        selected_video_path = video_list[selected_video_index-1]
        if not start_time:
            clip_video(selected_video_path, None, end_time)
        else:
            clip_video(selected_video_path, start_time, end_time)

else:
    print('输入的路径不是一个视频文件或者包含视频文件的目录!')
Python3 视频剪辑工具:支持单个视频文件和目录输入

原文地址: https://www.cveoy.top/t/topic/nzFu 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录