#2385 修改字幕设置,源码要看哪个文件

240e:47e* Posted at: 2 hours ago 👁6

修改字幕设置,源码要看哪个文件 我希望中英文字幕分别设置,且中文字幕在视频顶部,英文字幕在视频底部

1 Replies

要修改字幕设置(如中英文字幕分别显示在顶部和底部),你需要修改源码中的 sp.py 文件,具体是处理字幕嵌入和渲染的部分。

核心修改位置:

  1. 字幕渲染逻辑:在 sp.py 中搜索 subtitle_type 相关的处理代码,特别是调用 ffmpeg 进行字幕烧录(硬字幕)或封装(软字幕)的部分。
  2. 字幕样式设置:你需要修改生成字幕文件(如 .ass 格式)时的样式定义,或者直接修改 ffmpeg 命令中的 drawtext 滤镜参数。

具体步骤建议:

  1. 定位关键函数:在 sp.py 中查找 runmerge_audio_video 或类似名称的函数,这些函数负责最终的视频合成。
  2. 修改字幕生成:找到生成临时字幕文件(通常是 .ass.srt)的代码。对于中英双语,可能需要生成两个独立的字幕文件(一个中文,一个英文)。
  3. 调整 ffmpeg 命令:修改视频合成时使用的 ffmpeg 命令。

    • 对于硬字幕(嵌入):使用 drawtext 滤镜。你需要为中文和英文字幕分别设置 y 坐标(例如,中文 y=50(顶部),英文 y=h-th-50(底部))。
    • 对于软字幕:在封装时,为两个字幕流设置不同的语言标签(如 chieng),播放器会根据设置显示。但位置通常由播放器控制,要强制指定位置仍需修改字幕文件内的样式。

示例代码思路(硬字幕):

# 假设已有中文和英文字幕文件: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)手动调整字幕位置,然后使用工具箱中的“音视频合并”功能重新合成。

请查看更多参考文档:

Post Your Reply
Open source and free maintenance is not easy. If this project is helpful to you, please consider making a small donation to help the project continue to maintain and update.

Donate: https://ko-fi.com/jianchang512

Trending Questions