要修改字幕设置(如中英文字幕分别显示在顶部和底部),你需要修改源码中的 sp.py 文件,具体是处理字幕嵌入和渲染的部分。
核心修改位置:
- 字幕渲染逻辑:在
sp.py 中搜索 subtitle_type 相关的处理代码,特别是调用 ffmpeg 进行字幕烧录(硬字幕)或封装(软字幕)的部分。 - 字幕样式设置:你需要修改生成字幕文件(如
.ass 格式)时的样式定义,或者直接修改 ffmpeg 命令中的 drawtext 滤镜参数。
具体步骤建议:
- 定位关键函数:在
sp.py 中查找 run、merge_audio_video 或类似名称的函数,这些函数负责最终的视频合成。 - 修改字幕生成:找到生成临时字幕文件(通常是
.ass 或 .srt)的代码。对于中英双语,可能需要生成两个独立的字幕文件(一个中文,一个英文)。 调整 ffmpeg 命令:修改视频合成时使用的 ffmpeg 命令。
- 对于硬字幕(嵌入):使用
drawtext 滤镜。你需要为中文和英文字幕分别设置 y 坐标(例如,中文 y=50(顶部),英文 y=h-th-50(底部))。 - 对于软字幕:在封装时,为两个字幕流设置不同的语言标签(如
chi 和 eng),播放器会根据设置显示。但位置通常由播放器控制,要强制指定位置仍需修改字幕文件内的样式。
示例代码思路(硬字幕):
# 假设已有中文和英文字幕文件:zh_sub.ass, en_sub.ass
ffmpeg_cmd = [
'ffmpeg',
'-i', video_input,
'-vf', f"drawtext=filename='zh_sub.ass':x=(w-tw)/2:y=50:fontsize=24:fontcolor=white, drawtext=filename='en_sub.ass':x=(w-tw)/2:y=h-th-50:fontsize=24:fontcolor=white",
'-c:a', 'copy',
output_video
]
重要提示:
- 这是一个需要深入源码的定制化修改,需要对
ffmpeg 命令和字幕格式有较好理解。 - 修改前请备份原文件。
- 如果你不熟悉代码,也可以在生成字幕后,使用第三方工具(如
Aegisub)手动调整字幕位置,然后使用工具箱中的“音视频合并”功能重新合成。
请查看更多参考文档: