【发布时间】:2026-02-13 19:55:02
【问题描述】:
我正在使用 ffmpeg 将标准输入(管道:0)转换为标准输出(管道:1)。 我的输入格式是“s16le”,输出格式是“wav”。 如何在 ffmpeg 命令中指定两种不同的格式?
我也在使用两个不同的频率(-ar),输入 44100Hz 和输出 22050Hz,如何在 ffmpeg 命令中指定这两个不同的频率?
【问题讨论】:
标签: ffmpeg
我正在使用 ffmpeg 将标准输入(管道:0)转换为标准输出(管道:1)。 我的输入格式是“s16le”,输出格式是“wav”。 如何在 ffmpeg 命令中指定两种不同的格式?
我也在使用两个不同的频率(-ar),输入 44100Hz 和输出 22050Hz,如何在 ffmpeg 命令中指定这两个不同的频率?
【问题讨论】:
标签: ffmpeg
在 FFmpeg 中,对于特定的输入/输出,参数位于输入/输出之前。
在你的情况下,你的命令看起来像:
ffmpeg -sample_rate 44100 -f s16le -i - -ar 22050 -codec copy -f wav -
在这种情况下,-ar 44100 和 -f s16le 应用于输入,因为它们在输入之前。
-ar 22050、-codec copy 和 -f wav 应用于输出,因为它们在输入之后但在输出之前。
【讨论】:
-channels输入选项:对于s16le,默认值1。此外,这个解复用器的采样率输入选项名义上是-sample_rate,而不是-ar。见ffmpeg -h demuxer=s16le。
-codec copy 启用stream copy 模式,这将避免重新编码。
-codec copy。我的配置往往会随着时间的推移而更新,如果我更改可能具有不同默认编解码器用于其使用的容器,我不想通过忽略-codec copy 来意外开始转码。所以,我总是指定编解码器,即使在这种情况下没有必要。