Python3 脚本:批量重命名 MP4 文件并使用 ffmpeg 合并成单个视频
import os import glob from natsort import natsorted
当前文件夹下的所有mp4路径
L = [] dir_path = '/home/downloads' for root, dirs, files in os.walk(dir_path): files = natsorted(files) for file in files: if os.path.splitext(file)[1] == '.mp4': new_file = file.split('_', 1)[1] file_path = os.path.join(root, file) new_file_path = os.path.join(root, new_file) os.rename(file_path, new_file_path) L.append(new_file_path)
生成ffmpeg命令
commands = [] for l in L: ts_file = os.path.join( os.path.dirname(l), os.path.splitext(os.path.basename(l))[0] + '.ts') commands.append( f"ffmpeg -i '{l}' -vcodec copy -acodec copy -bsf:v h264_mp4toannexb '{ts_file}'")
concat_command = ( f'ffmpeg -i 'concat:{'|'.join([os.path.join(os.path.dirname(l), os.path.splitext(os.path.basename(l))[0] + '.ts') for l in L])}'' '-acodec copy -vcodec copy -bsf:a aac_adtstoasc ' f"'{os.path.join(dir_path, os.path.splitext(os.path.basename(L[0]).replace('00', '-', 1))[0][:-1].upper() + '.mp4')}'")
执行ffmpeg命令
for command in commands: os.system(command)
os.system(concat_command)
删除ts文件
for ts_file in glob.glob(os.path.join(dir_path, '*.ts')): os.remove(ts_file)
原文地址: https://www.cveoy.top/t/topic/nCdt 著作权归作者所有。请勿转载和采集!