Python3 视频剪辑代码修正:将输出路径设置在与输入路径相同的目录下
Python3 视频剪辑代码修正:将输出路径设置在与输入路径相同的目录下
以下 Python3 代码用于剪辑视频,其中修改了输出路径,使其与输入路径相同,并包含文件名。
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 end_time is None:
cmd = 'ffmpeg -i '{}' -ss {} -c copy '{}''.format(video_path, start_time, output_path)
else:
cmd = 'ffmpeg -i '{}' -ss {} -to {} -c copy '{}''.format(video_path, start_time, end_time, 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('请选择要剪辑的视频序号:'))
# 剪辑视频
selected_video_path = video_list[selected_video_index-1]
clip_video(selected_video_path)
代码解释:
clip_video函数:- 获取视频文件名:
video_name = os.path.basename(video_path) - 构建输出路径:
output_path = os.path.join(os.path.dirname(video_path), 'clip_' + video_name),将输出路径设置在与输入路径相同的目录下,并将文件名设置为clip_加上原视频文件名。
- 获取视频文件名:
ffmpeg命令:- 使用
'{}'将路径用单引号包裹,防止命令行解析出现错误。
- 使用
使用说明:
- 将代码保存为
.py文件,例如clip_video.py。 - 在命令行中运行
python clip_video.py。 - 根据提示输入视频路径。
- 选择要剪辑的视频。
代码执行后,会在输入路径的相同目录下生成一个以 clip_ 开头的剪辑后的视频文件。
注意:
- 请确保你的系统已经安装了
ffmpeg。 - 代码中使用了
os.path.basename和os.path.dirname函数获取文件名和目录名,可以根据实际情况修改。 - 你可以修改
clip_video函数中的start_time和end_time参数来设置剪辑的开始和结束时间。 - 你可以根据需要修改代码中的其他部分。
希望以上内容对你有所帮助!
原文地址: https://www.cveoy.top/t/topic/nzDX 著作权归作者所有。请勿转载和采集!