直接上代码
from moviepy.editor import VideoFileClip
import os
from moviepy.video.compositing.concatenate import concatenate_videoclips
# 使用前修改名称,1.MP4 2.MP3 3.MP4.....1.ts 2.ts 3.ts....
# 文件夹路径
folder_path = 'E:/Videos/新建文件夹/'
# 获取文件夹中的文件列表
file_list = os.listdir(folder_path)
# 统计文件数量
l1 = len(file_list)
print('文件数', l1)
x = 0
y = 1
# 所有文件路径
input_files = []
u = 1000000000 # 同时合并100个,占用内存超过20G,越多ts占用内存非常多 u=?? 自行修改
for e in range(l1):
if x + u <= l1: # 留出部分,防止下面添加不存在的文件路径 x
for i in range(u): # 设置夸张数字启用2个ts同时合并
input_files.append(f'E:\Videos\新建文件夹\{x}.ts') # 定义输入的TS视频文件路径列表 .ts按文件名修改
x += y
print(input_files)
else: # 剩下的这里一个一个合并进去
input_files.append(f'E:\Videos\新建文件夹\{x}.ts') # 定义输入的TS视频文件路径列表 .ts按文件名修改
x += y
print(input_files)
if len(input_files) > 1:
# 创建VideoFileClip对象来读取每个TS视频文件
clips = [VideoFileClip(file) for file in input_files]
# 将所有视频片段连接起来
final_clip = concatenate_videoclips([clip for clip in clips])
# 设置输出文件名及格式(如果需要)
output_filename = '少女斗恶龙.ts'
# 导出为MP4格式
final_clip.write_videofile(output_filename, codec='libx264')
list.clear(input_files) # 清空列表,下面添加一个路径元素,清理掉已经合并过的元素
input_files.append(f'E:\pyide\{output_filename}') # 添加已合并的MP4文件,和剩下的合并,防止重复合并拉低速度
if x == l1:
break
print('合并结束')