竖屏版本
![](https://cdn.howhappy.cn/wp-content/uploads/2024/05/Ping_Mu_Jie_Tu_-2024-05-31-084032.png)
import os import subprocess def add_text_to_mp4(directory): # 获取目录下所有的MP4文件 mp4_files = [file for file in os.listdir(directory) if file.endswith(".mp4")] # 设置输出目录 output_directory = os.path.join(directory, "Final") os.makedirs(output_directory, exist_ok=True) for mp4_file in mp4_files: # 获取MP4文件的完整路径 input_path = os.path.join(directory, mp4_file) # 获取MP4文件名,并按照要求处理 file_name = os.path.splitext(mp4_file)[0] # 如果文字超过10个字,则进行换行 if len(file_name) > 10: lines = [file_name[i:i+10] for i in range(0, len(file_name), 10)] formatted_name = '\n'.join(lines) else: formatted_name = file_name # 构建 FFmpeg 命令行 output_path = os.path.join(output_directory, f'{mp4_file}') cmd = [ "ffmpeg", "-i", input_path, "-vf", f"drawtext=text='{formatted_name}':fontsize=50:fontfile=YouSheBiaoTiHei-2.ttf:box=1:boxcolor=black@0.5:boxborderw=10:fontcolor=white:x=(w-text_w)/2:y=((h-text_h)/2)-500,drawtext=text='':enable='between(t,0,0)'", "-codec:v", "libx264", "-preset", "slow", "-crf", "18", "-c:a", "copy", "-y", output_path ] try: subprocess.run(cmd, check=True) except subprocess.CalledProcessError as e: print(f"Error processing {mp4_file}: {e}") if __name__ == "__main__": # 指定目录路径 directory_path = r"C:\Users\gd\Pictures\MP41" # 调用函数添加文本到MP4文件 add_text_to_mp4(directory_path)
1秒之后显示
import os import subprocess def add_text_to_mp4(directory): # 获取目录下所有的MP4文件 mp4_files = [file for file in os.listdir(directory) if file.endswith(".mp4")] # 设置输出目录 output_directory = os.path.join(directory, "Final_1920x1080") os.makedirs(output_directory, exist_ok=True) for mp4_file in mp4_files: # 获取MP4文件的完整路径 input_path = os.path.join(directory, mp4_file) # 获取MP4文件名,并按照要求处理 file_name = os.path.splitext(mp4_file)[0] # 如果文字超过10个字,则进行换行 if len(file_name) > 20: lines = [file_name[i:i+20] for i in range(0, len(file_name), 20)] formatted_name = '\n'.join(lines) else: formatted_name = file_name # 构建 FFmpeg 命令行 output_path = os.path.join(output_directory, f'{mp4_file}') cmd = [ "ffmpeg", "-i", input_path, "-vf", f"drawtext=text='{formatted_name}':fontsize=80:fontfile=YouSheBiaoTiHei-2.ttf:box=1:boxcolor=black@0.5:boxborderw=20:fontcolor=white:x=(w-text_w)/2:y=((h-text_h)/2):enable='gte(t\,1)',drawtext=text='':enable='between(t,0,0)'", "-c:v", "libx265", "-c:a", "libmp3lame", "-y", output_path ] try: subprocess.run(cmd, check=True) except subprocess.CalledProcessError as e: print(f"Error processing {mp4_file}: {e}") if __name__ == "__main__": # 指定目录路径 directory_path = r"D:\Work_Tools\chinaminjian\txtcnmp4" # 调用函数添加文本到MP4文件 add_text_to_mp4(directory_path)
打包源码
import os import subprocess def add_text_to_mp4(directory): # 获取目录下所有的MP4文件 mp4_files = [file for file in os.listdir(directory) if file.endswith(".mp4")] # 设置输出目录 output_directory = os.path.join(directory, "In-Title") os.makedirs(output_directory, exist_ok=True) for mp4_file in mp4_files: # 获取MP4文件的完整路径 input_path = os.path.join(directory, mp4_file) # 获取MP4文件名,并按照要求处理 file_name = os.path.splitext(mp4_file)[0] # 如果文字超过10个字,则进行换行 if len(file_name) > 12: lines = [file_name[i:i+12] for i in range(0, len(file_name), 12)] formatted_name = '\n'.join(lines) else: formatted_name = file_name # 构建 FFmpeg 命令行 output_path = os.path.join(output_directory, f'{mp4_file}') cmd = [ "ffmpeg", "-i", input_path, "-vf", f"drawtext=text='{formatted_name}':fontsize=70:fontfile=SourceHanSansSC-Heavy-2.otf:box=1:boxcolor=black@0.7:boxborderw=20:fontcolor=white:x=(w-text_w)/2:y=((h-text_h)/2)+200:enable='eq(t,0)'", "-c:v", "libx264", "-c:a", "copy", "-y", output_path ] try: subprocess.run(cmd, check=True) except subprocess.CalledProcessError as e: print(f"Error processing {mp4_file}: {e}") if __name__ == "__main__": # 指定目录路径 directory_path = "." # 调用函数添加文本到MP4文件 add_text_to_mp4(directory_path)