【问题标题】:ffmpeg how to convert audio to aac but keep bit rate at what the old file used?ffmpeg如何将音频转换为aac但保持旧文件使用的比特率?
【发布时间】:2018-04-15 17:09:58
【问题描述】:

我不希望这种情况经常发生,但是在通过批处理文件将视频文件重新编码为 h265 时,我正在检查以确保音频在 aac 中。如果不是,那么我想转换为 aac,但保持旧文件使用的比特率,因为如果我只是转换为 aac,ffmpeg 将使用默认的 128kbps 值。对于任何旧视频,我的比特率可能会低于该值,因此上转换会稍微增加文件大小。

有什么办法可以转换成aac,但保持旧的比特率?

这是我正在尝试的,但它不断将旧的 mp3 89kbps 流转换为 aac 128kbps:

ffmpeg -i test.mp4 -acodec aac -vcodec copy test.aac.mp4

请注意,以上仅用于测试目的,我实际上是在转换视频。

注意 2:我的问题与建议的其他问题完全不同。我将 ffprobe 结果存储在变量中没有问题,我什至没有提到这一点。

【问题讨论】:

标签: windows batch-file audio ffmpeg


【解决方案1】:

您可以使用 ffprobe 从输入文件中检测音频流的比特率,然后根据该命令的输出运行适当的 FFMPEG 命令。

这是一个小的 bash 脚本,它将检测音频流上的比特率,如果它小于 128Kbps,则在转换过程中使用原始比特率。这应该避免上采样:

#!/usr/bin/env bash
AUDIO_BITRATE=`ffprobe -v error -select_streams a:0  -show_entries stream=bit_rate -of default=noprint_wrappers=1:nokey=1 $1`
if [[ $AUDIO_BITRATE < 128000 ]]; then
  ffmpeg -i $1 -acodec aac -ab ${AUDIO_BITRATE}k -vcodec copy new-$1
else
  ffmpeg -i $1 -acodec aac -vcodec copy new-$1
fi

或者,如果您需要转换成其他视频格式并且没有安装 FFMPEG,您可以使用商业转换 API,例如 Zamzar

【讨论】:

  • 是的,我知道怎么做而不是需要几行条件语句。我只是问ffmpeg是否有这种能力。
  • @gregm ffmpeg 没有这样的功能。
  • 好的,谢谢。我已经在检查音频比特率,看它是否低于默认的 128k,所以我将使用该 set 变量来设置重新编码的比特率。从 mp3 到 aac 的文件大小似乎增加了一点,但并不多(我认为它会减小文件大小)。
猜你喜欢
  • 1970-01-01
  • 2017-05-08
  • 1970-01-01
  • 2013-09-19
  • 2017-08-14
  • 1970-01-01
  • 1970-01-01
  • 2017-07-13
  • 1970-01-01
相关资源
最近更新 更多