如何让LG LS3450电视正确播放MKV文件并正常显示ASS字幕
解决方案
问题原因
你之前转码后字幕异常的核心原因是LG LS3450内置的ASS字幕渲染器功能受限,无法读取MKV内嵌的自定义字体,也不支持复杂的ASS排版、定位规则,所以软字幕无法正常显示,硬烧字幕到视频流是最稳妥的解决方案。
你使用的FFmpeg已经编译了libass滤镜,完全支持完整保留ASS字幕的所有特效、字体、定位效果进行硬烧。
操作步骤
1. 基础烧录命令(适配LG电视规格)
直接运行以下命令即可完成音频转码+字幕硬烧,同时保证视频兼容性:
ffmpeg -analyzeduration 100M -probesize 100M -i CodeGeass01.mkv \ -filter_complex "[0:v]scale=in_range=tv:out_range=tv,format=yuv420p,ass=filename=CodeGeass01.mkv:stream_index=2[v]" \ -map "[v]" -c:v libx264 -crf 22 -preset medium -profile:v high -level 4.1 \ -map 0:a:0 -c:a libfdk_aac -profile:a aac_he_v2 -b:a 128k \ -map 0:t? \ CodeGeass01_lg_compatible.mkv
2. 参数说明
- 开头的
-analyzeduration 100M -probesize 100M:解决你原FFmpeg输出中识别不到附件流参数的问题,让FFmpeg完整读取MKV内嵌的所有字体文件 - 滤镜部分:
scale=in_range=tv:out_range=tv:避免亮度范围不匹配导致电视播放时画面发白、色差异常format=yuv420p:将原10位Hi10P视频转为兼容性更强的8位YUV4:2:0格式,完全适配LG电视解码能力ass=filename=CodeGeass01.mkv:stream_index=2:直接读取原MKV中索引为2的ASS字幕流,自动加载同文件内嵌的字体,100%保留原字幕的排版、定位、特效、自定义字体效果
- 视频编码部分:
libx264编码、CRF22平衡画质与体积,profile:v high -level 4.1完全符合LG LS3450的H.264支持规格 - 音频编码部分:沿用你之前使用的HE-AACv2编码,128k码率足够满足立体声音质需求
-map 0:t?:可选参数,保留原视频的章节信息,方便播放时跳转
3. 可选优化(避免字体缺失)
如果烧录后仍然出现字体不对的情况,可以先提取MKV内嵌的所有字体到本地目录,再指定字体目录烧录:
- 安装mkvtoolnix工具包,运行以下命令提取所有内嵌字体:
mkvextract attachments CodeGeass01.mkv 3 4 5 6 7 8 9 10
- 新建
fonts文件夹,把提取出来的所有ttf字体放进去,修改烧录命令中的ass滤镜参数即可:
ass=filename=CodeGeass01.mkv:stream_index=2:fontsdir=./fonts
补充说明
如果需要加快转码速度,可以将-preset medium改为-preset faster或-preset veryfast,仅会小幅提升输出文件体积,画质损失几乎可忽略。
内容的提问来源于stack exchange,提问作者Norbert Nagy
相关产品推荐
相关产品推荐

