如何使用python+ffmpeg将几十个视频两两组合成新的视频文件?
先给出代码,大佬们看看,能否优化一下,或者改写成批处理的bat脚本文件也行# encoding=utf-8
import os
import itertools
def randomMerge(ffmpeg_path, videos_path, concat_list_path):
# 定义一个数组
L = []
# 访问 videos 文件夹 (假设视频都放在这里面)
for root, dirs, files in os.walk(videos_path):
# 按文件名排序
files.sort()
# 遍历所有文件
for file in files:
# 如果后缀名为 .mp4
if os.path.splitext(file) == '.mp4':
# 拼接成完整路径
filePath = os.path.join(root, file)
# 添加到数组
L.append(filePath)
# 计算排列组合(两两组合)
pp = list(itertools.permutations(list(L), 2))
total = len(pp)
for i in range(0, total):
# print(pp)
concat_file_path = concat_list_path + str(i) + ".txt"
# print(concat_file_path)
with open(concat_file_path, 'a', encoding='utf-8') as f:
video_one = "file " + "'" + pp + "'" + "\n"
video_two = "file " + "'" + pp + "'" + "\n"
f.write(video_one)
f.write(video_two)
result_file_path = videos_path + "\\random\\" + str(i) + ".mp4"
# print(result_file_path)
# 拼接好运行ffmpeg的命令行语句
cmd = ffmpeg_path + " -f concat -safe 0 -i " + concat_file_path + " -c copy " + result_file_path
# print(cmd)
# 调用cmd命令行执行ffmpeg拼接视频
os.popen(cmd)
def main():
#使用前,要先配置好ffmpeg的环境变量,并删除videos_path中txt文件夹下的所有文件
ffmpeg_path = "D:\\FFmpeg\\bin\\ffmpeg"
videos_path = "C:\\Users\\Yan\\Desktop\\videos"
concat_list_path = videos_path + "\\txt\\"
mp4_flie_path = videos_path + "\\mp4"
# 从多个视频中,每次选2个视频合并,两两组合
# randomMerge(ffmpeg_path, videos_path, concat_list_path)
if __name__ == '__main__':
main()
你这是要搞视频伪原创么{:301_975:} 是不是要批量加片头啊 收藏了,学习学习python shengforever 发表于 2021-10-28 08:50
你这是要搞视频伪原创么
是的啊,就是要批量搞伪原创视频。 xuexixiaobai 发表于 2021-10-28 09:32
是不是要批量加片头啊
不是的。 细水流长 发表于 2021-10-27 23:05
一次全部合并不好吗,为啥要两两组合?
两两组合,相当于在剪映、Pr这种工具里面做混剪。我做的就是类似于批量混剪。
页:
[1]