如何用FFmpeg批量为视频添加新音频(不混音)?
批量用FFmpeg给视频添加音频的解决方案
当然可以实现!FFmpeg本身没有内置的批量文件遍历功能,但我们可以结合shell脚本(Linux/macOS)或PowerShell(Windows)来完成这个批量处理任务,完美匹配你的目录结构需求。
Linux/macOS 解决方案(Bash脚本)
- 新建一个名为
batch_add_audio.sh的脚本文件,填入以下内容:
#!/bin/bash # 确保输出目录ready存在,不存在则自动创建 mkdir -p ./ready # 遍历videos目录下的所有.mp4文件 for video_file in ./videos/*.mp4; do # 提取原视频的纯文件名(去掉路径) base_filename=$(basename "$video_file") # 对每个视频执行FFmpeg命令,输出到ready目录并保留原文件名 ffmpeg -i "$video_file" -i ./audio/audio.mp3 -codec copy -shortest "./ready/$base_filename" done
- 给脚本添加执行权限:
chmod +x batch_add_audio.sh
- 运行脚本即可开始批量处理:
./batch_add_audio.sh
Windows 解决方案(PowerShell脚本)
如果是Windows系统,用PowerShell就能实现:
打开PowerShell,直接运行以下代码即可:
# 确保输出目录ready存在 New-Item -ItemType Directory -Force -Path .\ready # 遍历videos目录下的所有.mp4文件并逐个处理 Get-ChildItem -Path .\videos -Filter *.mp4 | ForEach-Object { $output_path = Join-Path -Path .\ready -ChildPath $_.Name ffmpeg -i $_.FullName -i .\audio\audio.mp3 -codec copy -shortest $output_path }
关键细节说明
-codec copy:直接复制视频和音频流,不会重新编码,处理速度超快。如果遇到罕见的音频格式与MP4容器不兼容问题(MP3本身是兼容MP4的),可以把命令改成-c:v copy -c:a aac,这样视频流直接复制,音频流转为更通用的AAC格式。-shortest:保证输出文件的时长等于视频和音频中较短的那个,避免出现一个流结束后另一个流继续播放的尴尬情况。- 空格兼容:脚本里用双引号包裹了所有文件路径变量,哪怕你的视频文件名带空格也能正常处理。
内容的提问来源于stack exchange,提问作者Kris
相关产品推荐
相关产品推荐

