如何将提供的视频内嵌字幕
安装FFmpeg
- 官网链接
- 下载对应版本并解压
- 将解压路径添加至环境变了Path中
- 输入ffmpeg -version进行验证
处理脚本
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
REM 使用方法:batch_script.bat "文件目录路径"
SET "inputDir=%~1"
REM 如果没有提供目录路径,则默认为当前目录
IF "%inputDir%"=="" SET "inputDir=."
FOR /R "%inputDir%" %%f IN (*.mkv, *.mp4) DO (
REM 可以对字幕后缀进行修改,一般字幕文件名都是相同的,双语字幕也是一样,可以直接覆盖
SET "videoFile=%%~dpnF"
SET "subtitle=!videoFile!_en.srt"
SET "outputFileMKV=!videoFile!.mkv"
SET "outputFileMP4=!videoFile!.mp4"
REM 检查输出文件是否已存在
IF "%%~xf"==".mkv" (
SET "outputFile=!outputFileMKV!"
) ELSE IF "%%~xf"==".mp4" (
SET "outputFile=!outputFileMP4!"
)
IF NOT EXIST "!outputFile!" (
REM 初始化参数
SET "subtitleArgs="
SET "inputIndex=0"
SET "mapArgs=-map 0"
REM 检查英文字幕文件是否存在
IF EXIST "!subtitle!" (
SET /A inputIndex+=1
SET "subtitleArgs=!subtitleArgs! -i "!subtitle!""
SET "mapArgs=!mapArgs! -map !inputIndex!"
)
IF NOT "!subtitleArgs!"=="" (
echo 正在为 "%%f" 嵌入字幕
REM 运行 FFmpeg 命令
ffmpeg -i "%%f" !subtitleArgs! !mapArgs! -c copy -c:s copy "!outputFile!"
) ELSE (
echo 没有找到字幕文件: "%%f"
)
) ELSE (
echo 输出文件已存在: "!outputFile!"
)
)
echo 文件处理完成。
pause