如何使用FFmpeg批量将文件夹中的TS文件转换为同名MP4文件
如何使用FFmpeg批量将文件夹中的TS文件转换为同名MP4文件
嘿,这个需求太常见了,我给你分不同操作系统列几个实用的命令方案,你直接对应着用就行:
Windows 命令提示符(CMD)
打开CMD并切换到你的视频文件夹,输入这条命令:
for %f in (*.ts) do ffmpeg -i "%f" -c copy "%~nf.mp4"
- 解释一下:
%f代表每个TS文件,%~nf会提取不带扩展名的文件名,这样就能生成同名的MP4文件 -c copy是直接复制视频和音频流,不重新编码,速度超快!如果遇到TS文件编码不兼容的情况,可以换成转码命令:ffmpeg -i "%f" -c:v libx264 -c:a aac "%~nf.mp4"
Windows PowerShell
要是你习惯用PowerShell,这条命令更符合PowerShell的风格:
Get-ChildItem -Filter *.ts | ForEach-Object { ffmpeg -i $_.FullName -c copy "$($_.BaseName).mp4" }
Get-ChildItem会列出所有TS文件,通过管道传给ForEach-Object逐个处理,$_.BaseName就是不带后缀的文件名
Linux/macOS(Bash/Zsh)
在终端里切换到目标文件夹,输入这条命令:
for f in *.ts; do ffmpeg -i "$f" -c copy "${f%.ts}.mp4"; done
${f%.ts}是移除文件名末尾的.ts后缀,完美生成同名MP4- 同样,要是需要转码,把
-c copy换成-c:v libx264 -c:a aac就行
额外小技巧:递归处理子文件夹
如果你连子文件夹里的TS文件也要一起转:
- Linux/macOS:
find . -name "*.ts" -exec sh -c 'ffmpeg -i "$0" -c copy "${0%.ts}.mp4"' {} \; - Windows CMD:
for /r %f in (*.ts) do ffmpeg -i "%f" -c copy "%~nf.mp4" - Windows PowerShell:
Get-ChildItem -Recurse -Filter *.ts | ForEach-Object { ffmpeg -i $_.FullName -c copy "$($_.DirectoryName)\$($_.BaseName).mp4" }
注意哦:确保FFmpeg已经添加到系统环境变量里,不然你得把命令里的ffmpeg换成你安装路径下的完整可执行文件路径(比如C:\ffmpeg\bin\ffmpeg.exe)。
备注:内容来源于stack exchange,提问作者testgcd
相关产品推荐
相关产品推荐

