import subprocess
def get_audio_duration(audio_file):
""" 获取音频文件的时长(秒) """
result = subprocess.run(
["ffprobe", "-i", audio_file, "-show_entries", "format=duration", "-v", "quiet", "-of", "csv=p=0"],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
text=True
)
return float(result.stdout.strip())
def generate_video(audio_file, subtitle_file, output_video, resolution="1280x720", font_size=20):
""" 生成黑色背景 + 完全居中白色字幕的视频 """
duration = get_audio_duration(audio_file) # 获取音频时长
command = [
"ffmpeg",
"-f", "lavfi",# 创建一个纯色视频流
"-i", f"color=c=black:s={resolution}:d={duration}", # 生成黑色背景
"-i", audio_file, # 添加音频
"-vf", f"subtitles={subtitle_file}:force_style='FontSize={font_size},PrimaryColour=&HFFFFFF,OutlineColour=&HFF0000,Outline=1,Alignment=11,MarginV=0,MarginL=0'", # 调整字幕居中
"-c:v", "libx264",
"-c:a", "aac",
"-strict", "experimental",
"-y", output_video # 输出视频文件
]
subprocess.run(command, check=True)
print(f"视频已生成:{output_video}")
# 使用示例
audio_path = "t.mp3" # 你的音频文件
subtitle_path = "t3.srt" # 你的字幕文件
output_path = "t.mp4" # 生成的视频
generate_video(audio_path, subtitle_path, output_path)
Alignment=1,下居左
Alignment=2,下居中
Alignment=3,下居右
Alignment=4,上居左
Alignment=5,上居左
Alignment=6,上居中
Alignment=7,上居右
Alignment=8,中居左
Alignment=9,中居左
Alignment=10,中居中
Alignment=11,中居右