如何使用FFmpeg-Python在指定时间戳为MP4添加SRT字幕
修改FFmpeg-Python代码实现字幕延迟显示
要让SRT字幕从指定时间戳(如00:00:25)开始显示,有两种简单的修改方式:
方法1:直接在subtitles滤镜中添加start_time参数
FFmpeg的subtitles滤镜支持start_time选项,可直接指定字幕开始显示的时间点,格式支持HH:MM:SS或秒数(如25代表25秒)。修改后的代码如下:
import ffmpeg # 输入视频文件 video_clip = ffmpeg.input("background_video.mp4") # 应用字幕滤镜并设置延迟时间 video_with_sub = video_clip.filter( "subtitles", f"Subtitles/{post_id}/sub.srt", fontsdir="fonts/Roboto-Black.ttf", force_style="Alignment=10,FontName=Roboto-Regular,FontSize=12", start_time="00:00:25" # 指定字幕开始显示的时间戳 ) # 输出带字幕的视频 ffmpeg.output(video_with_sub, "output_video.mp4").run()
方法2:单独偏移字幕输入时间轴
如果start_time参数不生效(部分FFmpeg版本可能存在兼容问题),可以单独将字幕作为输入源,用itsoffset滤镜偏移其时间轴,再应用到视频上:
import ffmpeg # 输入视频 video_clip = ffmpeg.input("background_video.mp4") # 输入字幕并设置25秒的时间偏移 subtitle_clip = ffmpeg.input(f"Subtitles/{post_id}/sub.srt").filter("itsoffset", "00:00:25") # 将偏移后的字幕叠加到视频 video_with_sub = video_clip.filter( "subtitles", subtitle_clip, fontsdir="fonts/Roboto-Black.ttf", force_style="Alignment=10,FontName=Roboto-Regular,FontSize=12" ) # 输出结果 ffmpeg.output(video_with_sub, "output_video.mp4").run()
注意事项
- 确保你的FFmpeg版本支持对应滤镜参数,若出现报错可尝试升级FFmpeg。
- 原代码缺少输出步骤,必须添加
ffmpeg.output(...).run()才能生成最终带字幕的视频文件。
内容的提问来源于stack exchange,提问作者grilo13
相关产品推荐
相关产品推荐

