You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何批量修改目录中所有视频文件的音频采样率?

如何批量修改目录中所有视频文件的音频采样率?

嘿,我刚好碰到过类似的音画同步问题,你的思路方向是对的,但有个关键细节得调整——你原来的命令里用了-c:a copy,这会让ffmpeg直接复制音频流,不会做任何编码处理,自然也没法修改采样率哦。

要实现批量修改音频采样率且不重编码视频,你可以按下面的步骤来:

首先得先创建存放处理后文件的目录,避免覆盖原文件:

mkdir -p fixed

然后批量处理所有mp4文件:

for i in *.mp4; do ffmpeg -i "$i" -c:v copy -c:a aac -ar 44100 "fixed/$i"; done

我给你拆解下参数:

  • -c:v copy:原样复制视频流,完全不重编码,能节省大量时间
  • -c:a aac:指定音频用AAC编码器重新编码(因为要修改采样率必须重新编码音频,不能用copy模式)
  • -ar 44100:把音频采样率设置为44.1kHz,刚好匹配wf-recorder的硬编码采样率
  • "fixed/$i":把处理好的文件存到提前创建的fixed目录里,保护原文件

另外你提到音频会比视频短几秒的情况,如果单纯改采样率后还是有微小的不同步,可以微调音频的播放速度来匹配视频时长,比如你说的0.95倍速,只需要在命令里加音频滤镜atempo

for i in *.mp4; do ffmpeg -i "$i" -c:v copy -c:a aac -ar 44100 -af "atempo=0.95" "fixed/$i"; done

注意atempo的取值范围是0.5到2.0,如果需要的速度超出这个范围,可以串联多个atempo,比如atempo=0.95,atempo=0.95就能得到约0.9025的速度。

建议先拿一个小视频文件测试下命令效果,确认音画同步、采样率正确后再批量处理所有文件哦!

备注:内容来源于stack exchange,提问作者Blacklight MG

火山引擎 最新活动