修改后的代码如下:

import os import glob from natsort import natsorted

dir_path = r'E:\home\up' output_dir = r'E:\home\up\1'

当前文件夹下的所有mp4路径

L = [] for root, dirs, files in os.walk(dir_path): files = natsorted(files) for file in files: if os.path.splitext(file)[1] == '.mp4': file_path = os.path.join(root, file) L.append(file_path)

生成ffmpeg命令

commands = [] for l in L: if os.path.basename(l).startswith('h_'): new_file_name = os.path.basename(l)[2:] else: new_file_name = os.path.basename(l)[1:] ts_file = os.path.join(os.path.dirname(l), new_file_name + '.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.basename(l)[2:] if os.path.basename(l).startswith("h_") else os.path.basename(l)[1:])) + ".ts" for l in L])}" ' '-acodec copy -vcodec copy -bsf:a aac_adtstoasc ' f'"{os.path.join(output_dir, (os.path.basename(L[0])[2:] if os.path.basename(L[0]).startswith("h_") else os.path.basename(L[0])) + ".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)

截取第一个字母之后的字符串

for mp4_file in glob.glob(os.path.join(output_dir, '*.mp4')): file_name = os.path.basename(mp4_file) new_file_name = file_name[file_name.find(file_name.lstrip('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')[0]):] os.rename(mp4_file, os.path.join(output_dir, new_file_name)

修改输出文件的命名规则从第一个文件名的第一个英文字母开始截取如果文件名是以h_开头的则从第二个英文字母开始截取取消输出文件的删除英文字母之前的数字功能import osimport globfrom natsort import natsorteddir_path = rEhomeupoutput_dir = rEhomeup1# 当前文件夹下的所有mp4路径L = for root dirs f

原文地址: https://www.cveoy.top/t/topic/dcwV 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录