Python 3 合并 MP4 文件:使用 subprocess 模块替代 bash 脚本
import os from natsort import natsorted import subprocess
存储当前文件夹下的所有mp4文件路径
L = [] for root, dirs, files in os.walk('/home/downloads'): files = natsorted(files) for file in files: # 只处理mp4文件 if os.path.splitext(file)[1] == '.mp4': file_path = os.path.join(root, file) L.append(file)
生成python脚本
with open('/home/downloads/mp4.py', 'w') as f: f.write('#!/usr/bin/env python\n\n') for l in L: f.write(f"subprocess.run(['ffmpeg', '-i', '{l}', '-vcodec', 'copy', '-acodec', 'copy', '-vbsf', 'h264_mp4toannexb', '{l.replace('.mp4', '.ts')}'], check=True) ")
f.write(f"\ninput_files = [{'|'.join([i.replace('.mp4', '.ts') for i in L])}]\n")
f.write(f"with open('input.txt', 'w') as f:\n")
f.write(f"\tf.write('\n'.join(input_files))\n")
f.write(f"\nsubprocess.run(['ffmpeg', '-f', 'concat', '-safe', '0', '-i', 'input.txt', '-acodec', 'copy', '-vcodec', 'copy', '-absf', 'aac_adtstoasc', 'output.mp4'], check=True)\n")
f.write(f"subprocess.run(['rm', '*.ts'])
")
原文地址: https://www.cveoy.top/t/topic/nzHu 著作权归作者所有。请勿转载和采集!