如何通过Python调用FFmpeg合并视频、音频与字幕流?
FFmpeg-python 同时实现视频叠加字幕与替换音频方案
你不需要分开处理字幕和音频,直接在一个流程里完成即可。核心思路是先给背景视频添加字幕滤镜,再将处理后的视频流与音频流一起输出,无需使用concat(concat适用于媒体片段拼接,不是合并音视频流)。
完整代码示例:
import ffmpeg # 替换为你的实际文件路径 background_video = "background.mp4" audio = "input.mp3" subtitle_file = "subs.srt" output_video = "final_output.mp4" # 读取背景视频并添加居中字幕滤镜 video_with_subtitles = ffmpeg.input(background_video).filter( "subtitles", subtitle_file, force_style="Alignment=2" # Alignment=2 强制字幕居中 ) # 读取目标音频流 audio_input_stream = ffmpeg.input(audio) # 合并带字幕的视频与音频并执行输出 ( ffmpeg .output(video_with_subtitles, audio_input_stream, output_video) .run(overwrite_output=True) # 添加overwrite_output=True可覆盖已存在的输出文件 )
关键细节说明:
- 用
filter("subtitles")处理视频流,比直接在output中传递vf参数更清晰,也更方便后续和音频流合并 force_style参数可以自定义字幕样式,比如添加FontSize=24,PrimaryColour=&HFFFFFF可调整字号和颜色- 若字幕文件存在编码问题,可在
subtitles滤镜中补充编码参数:subtitles=subtitle_file:encoding=utf-8
内容的提问来源于stack exchange,提问作者user14609171
相关产品推荐
相关产品推荐

