Python 代码优化:从 MP4 文件名中截取特定部分并进行命名转换

该代码使用 Python 对 MP4 文件名进行处理,截取特定的部分,并将截取部分进行转换,并最终将其转换为大写并加上后缀。

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:
    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}'')

# 获取文件名 + '.mp4'
new_file_name = os.path.splitext(os.path.basename(L[0]))[0] + '.mp4'
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(output_dir, new_file_name)}''
)

# 执行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.splitext(os.path.basename(mp4_file))[0]
    if file_name.startswith('h_'):
        file_name = file_name[1:].replace('00', '-')  # 从第二个英文字母开始,00替换为-
    else:
        file_name = file_name.replace('00', '-')  # 从第一个英文字母开始,00替换为-
    file_name = file_name.strip('0123456789.-_')  # 去除文件名中的数字、点、横杠和下划线
    new_file_name = file_name.upper() + '.mp4'  # 转换为大写并加上后缀
    os.rename(mp4_file, os.path.join(output_dir, new_file_name))

代码功能:

  1. 从指定目录 dir_path 中读取所有 MP4 文件路径并存储在列表 L 中。
  2. 使用 ffmpeg 命令将每个 MP4 文件转换为 TS 文件。
  3. 使用 ffmpeg 命令将所有 TS 文件合并成一个 MP4 文件,并将其保存到 output_dir 目录中。
  4. 删除所有 TS 文件。
  5. output_dir 目录下的所有 MP4 文件进行重命名,具体操作如下:
    • 获取文件名,去除后缀名。
    • 如果文件名以 'h_' 开头,则从第二个英文字母开始截取,否则从第一个英文字母开始截取。
    • 将截取的部分中所有 '00' 替换为 '-'。
    • 去除截取部分中的所有数字、点、横杠和下划线。
    • 将截取部分转换为大写并加上 '.mp4' 后缀,作为新的文件名。
    • 将旧文件名重命名为新的文件名。

优化要点:

  • 代码中使用 os.path.join 函数来连接路径,避免手动拼接字符串,提高代码可读性和可维护性。
  • 使用 natsorted 函数对文件列表进行自然排序,以保证文件按照正确的顺序进行合并。
  • 使用 f 字符串格式化来简化 ffmpeg 命令的拼接。
  • 将文件重命名功能独立成一个函数,以便于复用和维护。

注意:

  • 该代码需要安装 natsort 库。可以使用 pip install natsort 命令进行安装。
  • 确保 ffmpeg 命令已经安装并配置到系统环境变量中。
  • 修改代码中的 dir_pathoutput_dir 变量以指向实际的目录路径。
  • 文件名处理部分可以根据具体需求进行调整。
Python 代码优化:从 MP4 文件名中截取特定部分并进行命名转换

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

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