Python3 视频剪辑代码修复:解决不输入开始时间报错问题
以下 Python3 代码用于剪辑视频,原代码在不输入开始时间的情况下运行会报错。此问题是由于在剪辑视频时,如果未输入开始时间,传入的 start_time 参数为空字符串,导致拼接 ffmpeg 命令时出现问题。为了解决这个问题,需要在代码中加入判断,当 start_time 为空字符串时,传入默认值 '00:00:00'。
修正后的代码如下:
import os
import subprocess
# 定义输入输出文件路径
input_path = ''
output_path = ''
# 获取视频列表
def get_video_list(path):
video_list = []
if os.path.isfile(path) and path.endswith('.mp4'):
video_list.append(path)
elif os.path.isdir(path):
for file_name in os.listdir(path):
if file_name.endswith('.mp4'):
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', 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'
if end_time is None:
cmd = 'ffmpeg -i ' + ''' + video_path + ''' + ' -ss ' + start_time + ' -c copy ' + ''' + output_path + '''
else:
cmd = 'ffmpeg -i ' + ''' + video_path + ''' + ' -ss ' + start_time + ' -to ' + end_time + ' -c copy ' + ''' + output_path + '''
subprocess.call(cmd, shell=True)
# 主程序
if __name__ == '__main__':
# 输入视频路径
input_path = input('请输入视频路径:')
# 获取视频列表并排序
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,可为空):')
end_time = input('请输入剪辑的结束时间(格式为hh:mm:ss,可为空):')
if not end_time:
end_time = None
# 剪辑视频
selected_video_path = video_list[selected_video_index-1]
clip_video(selected_video_path, start_time, end_time)
代码说明:
- 在
clip_video函数中,添加了对start_time的判断,如果start_time为空字符串,则将start_time赋值为 '00:00:00'。 - 在拼接 ffmpeg 命令时,使用单引号将文件名和时间参数括起来,避免特殊字符导致的错误。
- 其他代码逻辑保持不变。
使用方法:
- 将代码保存为 Python 文件,例如
clip_video.py。 - 运行代码,在提示符中输入视频路径。
- 选择要剪辑的视频序号。
- 输入开始时间(可选)和结束时间。
- 代码会自动剪辑视频并保存到视频目录下,文件名以 'clip_' 开头。
注意:
- 代码需要安装 ffmpeg 软件,并将其添加到系统环境变量中。
- 开始时间和结束时间的格式为 'hh:mm:ss'。
- 如果不输入结束时间,则会剪辑从开始时间到视频结尾的部分。
本代码修复了原代码的报错问题,并提供了完整的代码示例,方便用户学习和使用。希望本代码能够帮助您方便快捷地剪辑视频。
原文地址: https://www.cveoy.top/t/topic/nzD6 著作权归作者所有。请勿转载和采集!