FFmpeg:混合并设置多音轨文件的每个音量

FFmpeg:混合并设置多音轨文件的每个音量

我正在尝试混合多音轨视频文件中的所有音轨。我成功了,但我注意到第一个音轨声音很大,第二个音轨正常,第三个音轨声音很小。我想将其正常化或(最好)手动设置音量。

这是我尝试过的,但它不起作用(解析错误消息)所以我认为我没有以好的方式使用它。

$ ffmpeg -i INPUT -c:v libx264 -preset slow -crf 23 -filter_complex "[0:1]volume=0.3;[0:2]volume=0.5;[0:3]volume=0.7 amerge=inputs=3" -c:a libmp3lame OUTPUT

ffmpeg version 2.2.git Copyright (c) 2000-2014 the FFmpeg developers
  built on Jun 13 2014 10:28:46 with gcc 4.8.3 (GCC)
  configuration: --extra-ldflags=-L/usr/local/x86_64-w64-mingw32/lib --prefix=/u
sr/local/x86_64-w64-mingw32 --cross-prefix=x86_64-w64-mingw32- --target-os=mingw
32 --enable-w32threads --enable-memalign-hack --arch=x86_64 --enable-runtime-cpu
detect --disable-debug --enable-static --disable-shared --disable-ffplay --disab
le-ffserver --enable-gpl --enable-version3 --enable-nonfree --enable-libmp3lame
--enable-libfdk-aac --enable-libx264
  libavutil      52. 89.100 / 52. 89.100
  libavcodec     55. 66.100 / 55. 66.100
  libavformat    55. 43.100 / 55. 43.100
  libavdevice    55. 13.101 / 55. 13.101
  libavfilter     4.  8.100 /  4.  8.100
  libswscale      2.  6.100 /  2.  6.100
  libswresample   0. 19.100 /  0. 19.100
  libpostproc    52.  3.100 / 52.  3.100
[avi @ 000000000357fee0] non-interleaved AVI
Guessed Channel Layout for  Input Stream #0.1 : stereo
Guessed Channel Layout for  Input Stream #0.2 : stereo
Guessed Channel Layout for  Input Stream #0.3 : stereo
Input #0, avi, from 'hl2 2014-06-14 23-46-14-775.avi':
  Metadata:
    encoder         : DxtoryCore ver2.0.0.114
    ISRC            : Video:Lagarith Lossless Codec Audio0:Line 1 (Virtual Audio
 Cable) Audio1:Line 2 (Virtual Audio Cable) Audio2:Microphone (2- PÚriphÚrique H
igh Definition Audio)
  Duration: 01:04:49.17, start: 0.000000, bitrate: 168913 kb/s
    Stream #0:0: Video: lagarith (LAGS / 0x5347414C), yuv420p, 1920x1080, 164302
 kb/s, 30 fps, 30 tbr, 30 tbn, 30 tbc
    Stream #0:1: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, 2 channels,
 s16, 1536 kb/s
    Stream #0:2: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, 2 channels,
 s16, 1536 kb/s
    Stream #0:3: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, 2 channels,
 s16, 1536 kb/s
Cannot find a matching stream for unlabeled input pad 0 on filter Parsed_amerge_
3
Appuyez sur une touche pour continuer...

欢迎任何帮助。

答案1

ffmpeg -i input -filter_complex \
"[0:a:0]volume=0.3:precision=fixed[a0]; \
 [0:a:1]volume=0.5:precision=fixed[a1]; \
 [0:a:2]volume=0.7:precision=fixed[a2]; \
 [a0][a1][a2]amerge=inputs=3,pan=stereo:FL<c0+c2+c4:FR<c1+c3+c5[a]" \
-map 0:v -map "[a]" -c:v libx264 -preset slow -crf 23 output.mp4

过滤步骤:

  1. 手动调整volume。我只是复制了您的值。该precision选项确定允许哪些输入样本格式,fixed适用于输入样本格式 U8、S16(例如您的输入)和 S32。或者,在volume您可以使用之前,aformat这个答案使用默认float音量精度。

  2. 合并成 6 通道流amerge

  3. 使用 6 个声道下混成立体声pan。我没有测试输入通道顺序是否正确(,,,c0等)。c1c2

笔记:

  • 您可以尝试省略,volume看看是否pan提供令人满意的输出。
  • 您可以尝试将其用作-ac 2输出选项,而不是复杂的pan过滤器。

相关内容