我来教你最清晰、最稳妥、100%能选中你想要那条字幕的方法,Ubuntu + ffmpeg 分片 HLS 通用。
一、先查看你的 MKV 里有几条字幕(关键)
运行这条命令,只看字幕流:
ffmpeg -i "/mp4mkv/manmovie/侏罗纪世界3[中文字幕].Jurassic.World.Dominion.2022.1080p.MA.WEB-DL.DDP5.1.Atmos.H264-PandaQT.mkv" 2>&1 | grep Subtitle
你会看到类似这样的输出:
Stream #0:2: Subtitle: ass (default)Stream #0:3: Subtitle: subripStream #0:4: Subtitle: hdmv_pgs_subtitle
记住规则:
#0:2 → 0:s:0#0:3 → 0:s:1#0:4 → 0:s:2
后面的数字 0、1、2 就是你要选的字幕编号!
二、直接指定某一条字幕(复制即用)
你只需要改这一个参数:
-map 0:s:数字
例子 1:选第一条字幕
-map 0:s:0
例子 2:选第二条字幕
-map 0:s:1
例子 3:选第三条字幕
-map 0:s:2
三、你最终可用的完整命令(带指定字幕)
我给你写好通用模板,你只需要改 0:s:数字 即可:
ffmpeg -i "你的文件.mkv" \-map 0:v \-map 0:a \-map 0:s:1 \ <==== 这里改成你要的字幕序号 0/1/2-c:v copy \-profile:v 0 \-level 3.1 \-c:a aac -b:a 128k -ac 2 -ar 44100 \-c:s webvtt \ <==== HLS 必须转 webvtt-f hls \-hls_time 8 \-hls_list_size 0 \-hls_segment_filename "seg_%04d.ts" \"输出.m3u8"
四、你的真实文件可直接运行的命令(示例)
假设你要 第二条中文字幕(0:s:1):
ffmpeg -i "/mp4mkv/manmovie/侏罗纪世界3[中文字幕].Jurassic.World.Dominion.2022.1080p.MA.WEB-DL.DDP5.1.Atmos.H264-PandaQT.mkv" \-map 0:v \-map 0:a \-map 0:s:1 \-c:v copy \-profile:v 0 \-level 3.1 \-c:a aac -b:a 128k -ac 2 -ar 44100 \-c:s webvtt \-f hls \-hls_time 8 \-hls_list_size 0 \-hls_segment_filename "/mp4mkv/moviepath/emh1bHVvamlzaGlqaWUz/seg_%04d.ts" \"/mp4mkv/moviepath/emh1bHVvamlzaGlqaWUz/zhuluojishijie_three.m3u8"
五、最关键的一句总结
-map 0:s:0= 第一条字幕-map 0:s:1= 第二条字幕-map 0:s:2= 第三条字幕
HLS 分片只能带一条字幕,所以必须这样指定!
如果你把你运行 grep Subtitle 的输出发给我,我可以直接告诉你应该选 0/1/2 哪一个,保证是中文字幕!
