使用 ffmpeg 将音频过滤器 dynaudnorm 应用于 avi 中的多个音频流

使用 ffmpeg 将音频过滤器 dynaudnorm 应用于 avi 中的多个音频流

video-double-audio.avi我有一个包含 1 个视频流和多个音频流的avi 文件

# ffprobe video-double-audio.avi
...
[avi @ 0x559498d59080] non-interleaved AVI
Input #0, avi, from 'video-double-audio.avi':
  Metadata:
    encoder         : Lavf57.83.100
  Duration: 00:00:19.99, start: 0.000000, bitrate: 11151 kb/s
    Stream #0:0: Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1920x1080, 10149 kb/s, 100 fps, 50 tbr, 100 tbn, 100 tbc
    Stream #0:1: Audio: aac (LC) ([255][0][0][0] / 0x00FF), 48000 Hz, stereo, fltp, 317 kb/s
    Stream #0:2: Audio: aac (LC) ([255][0][0][0] / 0x00FF), 48000 Hz, stereo, fltp, 317 kb/s
    Stream #0:3: Audio: aac (LC) ([255][0][0][0] / 0x00FF), 48000 Hz, stereo, fltp, 317 kb/s

我想应用dynaudnorm音频过滤器,因此我执行以下命令:

ffmpeg -i video-double-audio.avi -af 'dynaudnorm=n=0:c=1' -c:v copy video-out.avi

然而现在只剩下一个音频流video-out.avi

# ffprobe video-out.avi
[avi @ 0x556576b6d080] non-interleaved AVI
Input #0, avi, from 'video-out.avi':
  Metadata:
    encoder         : Lavf57.83.100
  Duration: 00:00:20.04, start: 0.000000, bitrate: 10278 kb/s
    Stream #0:0: Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1920x1080, 10134 kb/s, 100 fps, 50 tbr, 100 tbn, 100 tbc
    Stream #0:1: Audio: mp3 (U[0][0][0] / 0x0055), 48000 Hz, stereo, s16p, 128 kb/s

但是现在只剩下一个音频流,其他的似乎都被删除了。

为什么会发生这种情况?

我该如何防止这种情况发生?

提前致谢!

答案1

在没有的情况下-map,ffmpeg 将只选择每种类型的一个流。请参阅https://ffmpeg.org/ffmpeg.html#toc-Stream-selection

因此,添加映射。

ffmpeg -i video-double-audio.avi -map 0 -af 'dynaudnorm=n=0:c=1' -c:v copy video-out.avi

相关内容