![FFmpeg:混合并设置多音轨文件的每个音量](https://linux22.com/image/1412208/FFmpeg%EF%BC%9A%E6%B7%B7%E5%90%88%E5%B9%B6%E8%AE%BE%E7%BD%AE%E5%A4%9A%E9%9F%B3%E8%BD%A8%E6%96%87%E4%BB%B6%E7%9A%84%E6%AF%8F%E4%B8%AA%E9%9F%B3%E9%87%8F.png)
我正在尝试混合多音轨视频文件中的所有音轨。我成功了,但我注意到第一个音轨声音很大,第二个音轨正常,第三个音轨声音很小。我想将其正常化或(最好)手动设置音量。
这是我尝试过的,但它不起作用(解析错误消息)所以我认为我没有以好的方式使用它。
$ 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
过滤步骤:
手动调整
volume
。我只是复制了您的值。该precision
选项确定允许哪些输入样本格式,fixed
适用于输入样本格式 U8、S16(例如您的输入)和 S32。或者,在volume
您可以使用之前,aformat
如这个答案使用默认float
音量精度。合并成 6 通道流
amerge
。使用 6 个声道下混成立体声
pan
。我没有测试输入通道顺序是否正确(,,,c0
等)。c1
c2
笔记:
- 您可以尝试省略,
volume
看看是否pan
提供令人满意的输出。 - 您可以尝试将其用作
-ac 2
输出选项,而不是复杂的pan
过滤器。