用于连接和混合的 FFmpeg 过滤器图不起作用。内存不足错误

FFmpeg filtergraph for concatenate and amix doesn't work. Out of memory error

我正在尝试在 android 应用程序中连接两个 mp3 文件,一个在几秒钟后与另一个 FFmpeg 连接。我正在使用 this library

为了实现这一点,我正在使用 aevalsrc 创建一个音频静音,并将第二个输入连接到这个。之后,使用 amix,我将结果与第一个输入合并。这是命令:

String[] cmd = {"-i", "/storage/emulated/0/input1.mp3", "-i", "/storage/emulated/0/input2.mp3", "-filter_complex", "aevalsrc=0:d=8[s1]; [s1][1:a]concat=n=2:a=1:v=0[a2]; [0:a][a2]amix=inputs=2:duration=longest", "-c:a", "libmp3lame",  "/storage/emulated/0/finito.mp3"};

输出 mp3 已创建,但它只包含第一个输入,就像它只是复制一样。 FFMpeg 版本是 3.0.1。显示的输出是:

 I/ffmpeg(27265): [mp3 @ 0xb5bdf000] Skipping 0 bytes of junk at 4513.
 I/ffmpeg(27265): Input #0, mp3, from '/storage/emulated/0/input1.mp3':
 I/ffmpeg(27265):   Metadata:
 I/ffmpeg(27265):     track           : 0
 I/ffmpeg(27265):     TYER            : 0
 I/ffmpeg(27265):   Duration: 00:00:01.75, start: 0.000000, bitrate: 148 kb/s
 I/ffmpeg(27265):     Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 128 kb/s
 I/ffmpeg(27265): [mp3 @ 0xb5bdf600] Skipping 0 bytes of junk at 4513.
 I/ffmpeg(27265): Input #1, mp3, from '/storage/emulated/0/input2.mp3':
 I/ffmpeg(27265):   Metadata:
 I/ffmpeg(27265):     track           : 0
 I/ffmpeg(27265):     TYER            : 0
 I/ffmpeg(27265):   Duration: 00:00:00.37, start: 0.000000, bitrate: 226 kb/s
 I/ffmpeg(27265):     Stream #1:0: Audio: mp3, 44100 Hz, stereo, s16p, 128 kb/s
 I/ffmpeg(27265): Output #0, mp3, to '/storage/emulated/0/finito.mp3':
 I/ffmpeg(27265):   Metadata:
 I/ffmpeg(27265):     TRCK            : 0
 I/ffmpeg(27265):     TYER            : 0
 I/ffmpeg(27265):     TSSE            : Lavf57.25.100
 I/ffmpeg(27265):     Stream #0:0: Audio: mp3 (libmp3lame), 44100 Hz, stereo, fltp (default)
 I/ffmpeg(27265):     Metadata:
 I/ffmpeg(27265):       encoder         : Lavc57.24.102 libmp3lame
 I/ffmpeg(27265): Stream mapping:
 I/ffmpeg(27265):   Stream #0:0 (mp3) -> amix:input0
 I/ffmpeg(27265):   Stream #1:0 (mp3) -> concat:in1:a0
 I/ffmpeg(27265):   amix -> Stream #0:0 (libmp3lame)
 I/ffmpeg(27265): Press [q] to stop, [?] for help
 I/ffmpeg(27265): size=      18kB time=00:00:01.09 bitrate= 133.0kbits/s speed=2.18x    
 I/ffmpeg(27265): Error while filtering: Out of memory
 I/ffmpeg(27265): size=      28kB time=00:00:01.75 bitrate= 131.1kbits/s speed=2.43x    
 I/ffmpeg(27265): video:0kB audio:28kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.999261%

您遇到此错误:

I/ffmpeg(27265): Error while filtering: Out of memory

改为使用延迟。

String[] cmd = {"-i", "/storage/emulated/0/input1.mp3", "-i", "/storage/emulated/0/input2.mp3", "-filter_complex", "[1]adelay=8000|8000[a2];[0:a][a2]amix=inputs=2:duration=longest", "-c:a", "libmp3lame",  "/storage/emulated/0/finito.mp3"};