Python FFmpeg 视频剪辑工具:自定义时间、批量处理、按时间排序
这是一个使用 Python 和 FFmpeg 实现的视频剪辑工具,可以自定义输入输出开始结束时间,可以选择视频或目录当存在多个视频时以降序列出可选择要剪辑的视频列表,剪辑完的视频输出在原目录并为名为原文件名_0。
import os
import subprocess
# 定义输入输出文件路径
input_path = ''
output_path = ''
# 获取视频列表
def get_video_list(path):
video_list = []
for file_name in os.listdir(path):
if file_name.endswith('.mp4'):
video_list.append(file_name)
return video_list
# 按照最后修改时间排序
def sort_video_list(video_list):
video_list.sort(key=lambda x: os.path.getmtime(os.path.join(input_path, x)), reverse=True)
return video_list
# 剪辑视频
def clip_video(video_path, start_time, end_time):
output_file_name = os.path.splitext(video_path)[0] + '_0.mp4'
cmd = 'ffmpeg -i {} -ss {} -to {} -c copy {}'.format(video_path, start_time, end_time, os.path.join(output_path, output_file_name))
subprocess.call(cmd, shell=True)
# 主程序
if __name__ == '__main__':
# 获取视频列表并排序
video_list = get_video_list(input_path)
video_list = sort_video_list(video_list)
# 显示视频列表
for i, video_name in enumerate(video_list):
print('{}: {}'.format(i+1, video_name))
# 选择要剪辑的视频
selected_video_index = int(input('请选择要剪辑的视频序号:'))
# 输入开始结束时间
start_time = input('请输入开始时间(格式:00:00:00):')
end_time = input('请输入结束时间(格式:00:00:00):')
# 剪辑视频
selected_video_path = os.path.join(input_path, video_list[selected_video_index-1])
clip_video(selected_video_path, start_time, end_time)
功能特点:
- 自定义视频剪辑时间(开始时间和结束时间)
- 支持批量处理多个视频,并按最后修改时间排序
- 将剪辑后的视频输出到原目录,文件名以 '_0' 结尾
使用说明:
- 将代码保存为 Python 文件(例如:
video_clipper.py) - 修改代码中的
input_path和output_path变量,分别设置输入视频路径和输出视频路径 - 运行 Python 文件:
python video_clipper.py - 按照提示选择要剪辑的视频,并输入开始和结束时间
代码说明:
- 使用
os.listdir()获取目录中的所有文件 - 使用
os.path.getmtime()获取文件最后修改时间,并根据时间排序 - 使用
subprocess.call()执行 FFmpeg 命令进行视频剪辑 - 使用
-ss和-to参数设置视频的开始和结束时间 - 使用
-c copy参数进行无损视频复制
注意:
- 需要在系统中安装 FFmpeg
- 视频格式需要是 MP4
- 开始和结束时间格式为
HH:MM:SS - 代码仅供参考,您可以根据自己的需求进行修改和完善。
原文地址: https://www.cveoy.top/t/topic/nzDP 著作权归作者所有。请勿转载和采集!