使用FFmpeg添加UTF-8泰卢固语字幕至MP4文件显示异常求助
解决FFmpeg添加泰卢固语UTF-8字幕无法显示的问题
泰卢固语这类非拉丁脚本字幕无法正常显示,大多是字体不支持或者FFmpeg对字幕编码的识别配置问题,我给你几个针对性的解决方案,按顺序尝试:
1. 强制指定支持泰卢固语的字体(最关键)
绝大多数系统默认字体没有泰卢固语的字形,这是字幕无法显示的核心原因。你需要在滤镜里明确指定一款支持泰卢固语的字体,比如跨平台通用的Noto Sans Telugu,或者你系统自带的泰卢固语字体(比如Windows的Shruti、macOS的Gujarati MT等)。
修改你的命令,在force_style里追加FontName参数:
ffmpeg -i input.mp4 -vf "subtitles='input.srt:force_style=Fontsize=24,FontName=Noto Sans Telugu'" output.mp4
注意:把Noto Sans Telugu换成你系统里实际安装的字体名称,不确定的话可以在系统字体列表里找泰卢固语相关字体。
2. 明确指定字幕文件的UTF-8编码
新版FFmpeg默认支持UTF-8,但部分旧版本可能需要手动声明编码。可以在subtitles滤镜里用charenc参数指定:
ffmpeg -i input.mp4 -vf "subtitles='input.srt:charenc=utf-8:force_style=Fontsize=24,FontName=Noto Sans Telugu'" output.mp4
你之前使用的-sub_charenc参数已经被新版FFmpeg弃用,无需再添加。
3. 验证SRT文件的编码正确性
先确认你的input.srt确实是UTF-8编码:
- 用Notepad++打开文件,查看右下角的编码标识,如果是ANSI或其他编码,直接转成**UTF-8(无BOM)**保存。
- 检查字幕内容里的泰卢固语字符是否有乱码,避免文件本身损坏。
4. 转成ASS格式再处理(备选方案)
ASS字幕格式对复杂脚本的支持比SRT更友好,如果以上方法仍无效,可以先把SRT转成ASS,再用ASS滤镜添加:
# 第一步:将SRT转成ASS格式 ffmpeg -i input.srt -c:s ass input.ass # 第二步:用ASS滤镜添加字幕 ffmpeg -i input.mp4 -vf "ass='input.ass:force_style=Fontsize=24,FontName=Noto Sans Telugu'" output.mp4
按这个顺序尝试下来,基本能解决泰卢固语字幕无法显示的问题,重点是一定要指定支持泰卢固语的字体哦!
内容的提问来源于stack exchange,提问作者kamalakar b
相关产品推荐
相关产品推荐

