Windows环境下如何批量移除多个视频的音频流
Windows下批量用FFmpeg移除指定音频流的方法
方法一:批处理脚本(.bat)
这是Windows下最简便的批量处理方式,步骤如下:
- 在要处理的视频文件所在文件夹,新建一个文本文件,重命名为
batch_remove_audio.bat(注意修改扩展名从.txt为.bat) - 右键编辑该批处理文件,粘贴以下代码:
@echo off setlocal enabledelayedexpansion :: 若FFmpeg已添加到系统环境变量,可删除下一行 set "ffmpeg_path=C:\实际路径\ffmpeg.exe" :: 遍历当前目录下的MP4、MKV文件,可按需修改扩展名 for %%f in (*.mp4 *.mkv) do ( set "output=%%~nf_processed%%~xf" "%ffmpeg_path%" -i "%%f" -map 0 -map -0:a:2 -c copy "!output!" echo 处理完成:%%f -> !output! ) pause
- 替换代码里的
C:\实际路径\ffmpeg.exe为你本地FFmpeg的实际路径,若FFmpeg已在系统PATH中,直接删除这一行即可 - 保存后双击运行批处理,脚本会自动遍历指定格式的视频,生成带
_processed后缀的处理后文件
方法二:PowerShell脚本
适合熟悉PowerShell的用户,灵活性更强:
- 在视频文件夹新建文本文件,重命名为
batch_remove_audio.ps1 - 编辑文件并粘贴以下代码:
# 若FFmpeg已在系统PATH中,可将下一行替换为$ffmpegPath = "ffmpeg" $ffmpegPath = "C:\实际路径\ffmpeg.exe" # 获取当前目录下的MP4、MKV视频文件,可自定义扩展名 $videoFiles = Get-ChildItem -Path . -Include *.mp4,*.mkv -File foreach ($file in $videoFiles) { $outputPath = Join-Path $file.DirectoryName "$($file.BaseName)_processed$($file.Extension)" & $ffmpegPath -i $file.FullName -map 0 -map -0:a:2 -c copy $outputPath Write-Host "处理完成:$($file.Name) -> $($outputPath | Split-Path -Leaf)" }
- 替换FFmpeg路径后,右键选择“用PowerShell运行”即可开始批量处理
注意事项
- 处理前一定要备份原视频文件,避免操作失误导致文件损坏
- 若需要移除的音频流索引不是
0:a:2,请自行修改命令中的对应部分 - 确保FFmpeg版本支持你的视频格式,建议使用最新稳定版
内容的提问来源于stack exchange,提问作者Josh
相关产品推荐
相关产品推荐

