根据音频时长生成黑色背景视频,并叠加字幕!

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,中居右

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值