FFmpeg无法就地编辑现有文件.windows上的Bash脚本


#!/bin/bash
for i in datasets/wavs/*.wav; do
ffmpeg -y -i $i  -ac 1  -ar 22050 -map_metadata -1 -c:v mv -c:a copy $i;
done

不能做什么。我怎样才能修好它?或者我如何更改保存结果的目录?

你的脚本有很多问题

  1. ffmpeg中,输入和输出文件不能是同一个文件。输入和输出必须是不同的独立文件。简单的解决方案是输出到不同的目录。

  2. 不要在循环中包含路径,除非你想做更多的工作来处理输出中包含的路径。相反,使用cd导航到datasets/wavs/,然后在脚本

    中使用for i *.wav; do
  3. 没有名为"mv"。如果你的输入有视频,你会得到错误Unknown encoder 'mv'。删除-c:v,因为WAV文件没有视频。

  4. -c:a copy使用流复制模式。比如复制粘贴。你不能同时流拷贝和修改音频。这导致-ac-ar被忽略。删除-c:a copy.

  5. Windows不支持Bash(我猜一个例外是如果你为Linux安装Windows子系统,但我不使用Windows)。Windows支持batch.

tl;dr:直接给我复制粘贴的答案

假设您有一个支持Bash的系统:

mkdir outputs
for i in *.wav; do ffmpeg -i "$i" -ac 1 -ar 22050 outputs/"$i"; done

最新更新