You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过FFmpeg批量提取MKV文件中所有英文字幕流

解决MKV多英文字幕流提取问题(生成带索引的SRT文件)

原命令因SRT容器仅支持单字幕流,无法批量提取多条英文字幕。以下是实现按流索引单独提取每个英文字幕的Windows批处理方案:

完整批处理脚本

@echo off
setlocal enabledelayedexpansion

for %%i in (*.mkv) do (
    echo Processing "%%i"...
    ffprobe -loglevel error -select_streams s -show_entries stream=index:stream_tags=language -of csv=p=0 "%%i" > "%%~ni_subs_temp.txt"
    
    for /f "tokens=1,2 delims=," %%a in (%%~ni_subs_temp.txt) do (
        if /i "%%b"=="eng" (
            echo Extracting subtitle stream %%a (English) from "%%i"...
            ffmpeg -loglevel error -i "%%i" -map 0:s:%%a -c copy "%%~ni.%%a.eng.srt"
        )
    )
    
    del "%%~ni_subs_temp.txt"
)

echo Done!
endlocal

脚本说明

  • 外层循环:遍历当前目录下所有.mkv文件。
  • ffprobe获取字幕信息:生成临时文件存储每个字幕流的索引,语言格式数据,避免多文件信息冲突。
  • 内层循环处理字幕流:
    • 分割每行数据得到流索引(%%a)和语言标签(%%b)。
    • 不区分大小写匹配英文语言标签(支持eng/ENG/Eng等)。
    • 用ffmpeg单独提取对应索引的字幕流,输出文件名格式为[原文件名].[流索引].eng.srt,比如MovieName.2.eng.srt。
  • 清理临时文件:处理完单个MKV后删除对应的临时文件,避免磁盘冗余。

注意事项

  • 确保ffmpeg.exe和ffprobe.exe在系统环境变量PATH中,或与批处理脚本放在同一目录下。
  • 支持提取所有类型的英文字幕(强制、完整、SDH等),只要流语言标签标记为英文。

内容的提问来源于stack exchange,提问作者TrustFound

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 20:45:42