使用ffmpeg从m4a文件中删除前导和尾随静音

使用ffmpeg从m4a文件中删除前导和尾随静音,ffmpeg,lossless-compression,Ffmpeg,Lossless Compression,我有一个音频文件,它具有前导和尾随静音,并具有以下细节: 编解码器:MPEG AAC音频(mp4a)频道:立体声采样率:44100 Hz比特率:253 kbps 我想消除静音并保持质量不变。 到目前为止我已经试过了 ffmpeg -i 1.m4a -af silenceremove=1:0.5:0:1:0.5:0 2.m4a 这是为了消除前导和尾随消声。 但出于某种原因,它并没有消除尾随的沉默。这似乎是一个反复出现的问题。在另一个论坛上找到以下内容 此外,ffmpeg将比特率降低到128k

我有一个音频文件,它具有前导和尾随静音,并具有以下细节:

编解码器:MPEG AAC音频(mp4a)频道:立体声采样率:44100 Hz比特率:253 kbps

我想消除静音并保持质量不变。

到目前为止我已经试过了

ffmpeg -i 1.m4a -af silenceremove=1:0.5:0:1:0.5:0 2.m4a 
这是为了消除前导和尾随消声。 但出于某种原因,它并没有消除尾随的沉默。这似乎是一个反复出现的问题。在另一个论坛上找到以下内容

此外,ffmpeg将比特率降低到128kbps。我可以通过添加-ab 253k并发出以下命令来解决此问题:

ffmpeg -i 1.m4a -af silenceremove=1:0.5:0:1:0.5:0 -ab 253k 3.m4a 
现在的问题是没有删除尾随静默,当我想处理一批文件时,我不能对每个文件使用相同的比特率(比如253kbps)。我想知道如何将VBR用于此案例

我知道我可以使用sox并使用静音和反转功能来修剪静音

“本文中的示例3”

但sox存在以下问题:

  • 它不能处理m4a文件,我必须将所有文件转换成mp3
  • 在sox中使用静默过滤器时,它将比特率限制在128kbps

    sox 1.mp3 2.mp3 silence 1 0.5 1% reverse silence 1 0.5 1% reverse
    

  • 您的问题实际上包括两个,一个是关于尾随静默,第二个是关于比特率

    下面是第二个问题的答案: 为了保持音频源的准确质量,您可以使用
    -c:pcm_s16le
    和.wav容器(如果适用)

    第二个选项是使用质量等级
    -q:an
    ,N(与
    -q:v
    不同,q:v是特定于编解码器的,您最好测试不同的值,对于MP3,它是从0到9,其中0是最高质量)

    如果未压缩WAV和Quality Scale都不是选项,但您仍然希望达到原始质量(因此,无需重新编码),那么答案将很棘手:

  • 制作一个从开始就没有静音的音轨
  • 从静音删除的音轨中减去原始音轨长度(以了解静音时间)
  • 使用
    -ss时间戳
    (输入开始时间)和
    -c:a副本
  • 重复同样的步骤,保持尾巴安静