Merging two audio files in Android using FFMPEG

2019-09-10 01:06发布

问题:

I'm working on an application that takes two audio files, and merges them into the respected channels. The way they are being equalized are not as good as I had hoped, So I want to adjust the volume of each file during the mixing phase. I've seen a couple of examples online, like this, this, and [this][3].. but none of them are working for me. Can someone direct me in the right direction with this? Much appreciation!

I am using this library to execute: https://github.com/WritingMinds/ffmpeg-android-java

Here is my code (EDIT)

String files = "-i " + mVoiceFile.getAbsolutePath() + " -i " + mBeatFile.getAbsolutePath();
String filter = "-filter_complex [0:a]volume=0.99[a1];[1:a]volume=0.3[a2][a1][a2]amerge=inputs=2,volume=1.3,pan=stereo|c0<c0+c2|c1<c1+c3[aout]";
String output = "  -map [aout] -strict -2 \" + mRapFile.getAbsolutePath()";
String cmd = files+filter+output;`

enter code here

and here are my errors from running.

04-06 12:17:34.079 30975-30975/me.rapchat.rapchat E/Studio Process: WARNING: linker: /data/user/0/me.rapchat.rapchat/files/ffmpeg has text relocations. This is wasting memory and prevents security hardening. Please fix.
04-06 12:17:34.306 30975-30975/me.rapchat.rapchat E/Studio Process: ffmpeg version n2.4.2 Copyright (c) 2000-2014 the FFmpeg developers
04-06 12:17:34.306 30975-30975/me.rapchat.rapchat E/Studio Process:   built on Oct  7 2014 15:08:46 with gcc 4.8 (GCC)
04-06 12:17:34.306 30975-30975/me.rapchat.rapchat E/Studio Process:   configuration: --target-os=linux --cross-prefix=/home/sb/Source-Code/ffmpeg-android/toolchain-android/bin/arm-linux-androideabi- --arch=arm --cpu=cortex-a8 --enable-runtime-cpudetect --sysroot=/home/sb/Source-Code/ffmpeg-android/toolchain-android/sysroot --enable-pic --enable-libx264 --enable-libass --enable-libfreetype --enable-libfribidi --enable-fontconfig --enable-pthreads --disable-debug --disable-ffserver --enable-version3 --enable-hardcoded-tables --disable-ffplay --disable-ffprobe --enable-gpl --enable-yasm --disable-doc --disable-shared --enable-static --pkg-config=/home/sb/Source-Code/ffmpeg-android/ffmpeg-pkg-config --prefix=/home/sb/Source-Code/ffmpeg-android/build/armeabi-v7a-neon --extra-cflags='-I/home/sb/Source-Code/ffmpeg-android/toolchain-android/include -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fno-strict-overflow -fstack-protector-all -mfpu=neon' --extra-ldflags='-L/home/sb/Source-Code/ffmpeg-android/toolchain-android/lib -Wl,-z,relro -Wl,-z,now -pie' --extra-libs='-lpng -lexpat -lm' --extra-cxxflags=
04-06 12:17:34.307 30975-30975/me.rapchat.rapchat E/Studio Process:   libavutil      54.  7.100 / 54.  7.100
04-06 12:17:34.307 30975-30975/me.rapchat.rapchat E/Studio Process:   libavcodec     56.  1.100 / 56.  1.100
04-06 12:17:34.307 30975-30975/me.rapchat.rapchat E/Studio Process:   libavformat    56.  4.101 / 56.  4.101
04-06 12:17:34.307 30975-30975/me.rapchat.rapchat E/Studio Process:   libavdevice    56.  0.100 / 56.  0.100
04-06 12:17:34.308 30975-30975/me.rapchat.rapchat E/Studio Process:   libavfilter     5.  1.100 /  5.  1.100
04-06 12:17:34.308 30975-30975/me.rapchat.rapchat E/Studio Process:   libswscale      3.  0.100 /  3.  0.100
04-06 12:17:34.308 30975-30975/me.rapchat.rapchat E/Studio Process:   libswresample   1.  1.100 /  1.  1.100
04-06 12:17:34.308 30975-30975/me.rapchat.rapchat E/Studio Process:   libpostproc    53.  0.100 / 53.  0.100
04-06 12:17:34.372 30975-30975/me.rapchat.rapchat E/Studio Process: Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/data/user/0/me.rapchat.rapchat/cache/recording.m4a':
04-06 12:17:34.373 30975-30975/me.rapchat.rapchat E/Studio Process:   Metadata:
04-06 12:17:34.373 30975-30975/me.rapchat.rapchat E/Studio Process:     major_brand     : mp42
04-06 12:17:34.373 30975-30975/me.rapchat.rapchat E/Studio Process:     minor_version   : 0
04-06 12:17:34.374 30975-30975/me.rapchat.rapchat E/Studio Process:     compatible_brands: isommp42
04-06 12:17:34.374 30975-30975/me.rapchat.rapchat E/Studio Process:     creation_time   : 2016-04-06 19:17:33
04-06 12:17:34.374 30975-30975/me.rapchat.rapchat E/Studio Process:   Duration: 00:00:01.56, start: 0.000000, bitrate: 144 kb/s
04-06 12:17:34.375 30975-30975/me.rapchat.rapchat E/Studio Process:     Stream #0:0(eng): Audio: aac (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 128 kb/s (default)
04-06 12:17:34.375 30975-30975/me.rapchat.rapchat E/Studio Process:     Metadata:
04-06 12:17:34.375 30975-30975/me.rapchat.rapchat E/Studio Process:       creation_time   : 2016-04-06 19:17:33
04-06 12:17:34.375 30975-30975/me.rapchat.rapchat E/Studio Process:       handler_name    : SoundHandle
04-06 12:17:34.401 30975-30975/me.rapchat.rapchat E/Studio Process: Input #1, mov,mp4,m4a,3gp,3g2,mj2, from '/data/user/0/me.rapchat.rapchat/cache/beats/d3c37d60-ed50-4c00-b454-4e399a7858ff.m4a':
04-06 12:17:34.401 30975-30975/me.rapchat.rapchat E/Studio Process:   Metadata:
04-06 12:17:34.401 30975-30975/me.rapchat.rapchat E/Studio Process:     major_brand     : mp42
04-06 12:17:34.401 30975-30975/me.rapchat.rapchat E/Studio Process:     minor_version   : 0
04-06 12:17:34.401 30975-30975/me.rapchat.rapchat E/Studio Process:     compatible_brands: mp42isom
04-06 12:17:34.401 30975-30975/me.rapchat.rapchat E/Studio Process:     creation_time   : 1993-11-24 14:46:42
04-06 12:17:34.401 30975-30975/me.rapchat.rapchat E/Studio Process:     encoder         : Max 0.9.1
04-06 12:17:34.401 30975-30975/me.rapchat.rapchat E/Studio Process:     iTunSMPB        : 00000000 00000840 000003c0 000000000035dc00 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
04-06 12:17:34.401 30975-30975/me.rapchat.rapchat E/Studio Process:     date            : 2015
04-06 12:17:34.401 30975-30975/me.rapchat.rapchat E/Studio Process:   Duration: 00:01:20.04, start: 0.047891, bitrate: 129 kb/s
04-06 12:17:34.402 30975-30975/me.rapchat.rapchat E/Studio Process:     Stream #1:0(eng): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 127 kb/s (default)
04-06 12:17:34.402 30975-30975/me.rapchat.rapchat E/Studio Process:     Metadata:
04-06 12:17:34.402 30975-30975/me.rapchat.rapchat E/Studio Process:       creation_time   : 1993-11-24 14:46:42
04-06 12:17:34.404 30975-30975/me.rapchat.rapchat E/Studio Process: [NULL @ 0xb5e4fc00] Unable to find a suitable output format for '[a1][a2]amerge,pan=stereo|c0<c0+c1|c1<c2+c3[aout]'
04-06 12:17:34.404 30975-30975/me.rapchat.rapchat E/Studio Process: [a1][a2]amerge,pan=stereo|c0<c0+c1|c1<c2+c3[aout]: Invalid argument
04-06 12:17:34.407 30975-30975/me.rapchat.rapchat E/Studio Status Failed: WARNING: linker: /data/user/0/me.rapchat.rapchat/files/ffmpeg has text relocations. This is wasting memory and prevents security hardening. Please fix.
                                                                          ffmpeg version n2.4.2 Copyright (c) 2000-2014 the FFmpeg developers
                                                                            built on Oct  7 2014 15:08:46 with gcc 4.8 (GCC)
                                                                            configuration: --target-os=linux --cross-prefix=/home/sb/Source-Code/ffmpeg-android/toolchain-android/bin/arm-linux-androideabi- --arch=arm --cpu=cortex-a8 --enable-runtime-cpudetect --sysroot=/home/sb/Source-Code/ffmpeg-android/toolchain-android/sysroot --enable-pic --enable-libx264 --enable-libass --enable-libfreetype --enable-libfribidi --enable-fontconfig --enable-pthreads --disable-debug --disable-ffserver --enable-version3 --enable-hardcoded-tables --disable-ffplay --disable-ffprobe --enable-gpl --enable-yasm --disable-doc --disable-shared --enable-static --pkg-config=/home/sb/Source-Code/ffmpeg-android/ffmpeg-pkg-config --prefix=/home/sb/Source-Code/ffmpeg-android/build/armeabi-v7a-neon --extra-cflags='-I/home/sb/Source-Code/ffmpeg-android/toolchain-android/include -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fno-strict-overflow -fstack-protector-all -mfpu=neon' --extra-ldflags='-L/home/sb/Source-Code/ffmpeg-android/toolchain-android/lib -Wl,-z,relro -Wl,-z,now -pie' --extra-libs='-lpng -lexpat -lm' --extra-cxxflags=
                                                                            libavutil      54.  7.100 / 54.  7.100
                                                                            libavcodec     56.  1.100 / 56.  1.100
                                                                            libavformat    56.  4.101 / 56.  4.101
                                                                            libavdevice    56.  0.100 / 56.  0.100
                                                                            libavfilter     5.  1.100 /  5.  1.100
                                                                            libswscale      3.  0.100 /  3.  0.100
                                                                            libswresample   1.  1.100 /  1.  1.100
                                                                            libpostproc    53.  0.100 / 53.  0.100
                                                                          Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/data/user/0/me.rapchat.rapchat/cache/recording.m4a':
                                                                            Metadata:
                                                                              major_brand     : mp42
                                                                              minor_version   : 0
                                                                              compatible_brands: isommp42
                                                                              creation_time   : 2016-04-06 19:17:33
                                                                            Duration: 00:00:01.56, start: 0.000000, bitrate: 144 kb/s
                                                                              Stream #0:0(eng): Audio: aac (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 128 kb/s (default)
                                                                              Metadata:
                                                                                creation_time   : 2016-04-06 19:17:33
                                                                                handler_name    : SoundHandle
                                                                          Input #1, mov,mp4,m4a,3gp,3g2,mj2, from '/data/user/0/me.rapchat.rapchat/cache/beats/d3c37d60-ed50-4c00-b454-4e399a7858ff.m4a':
                                                                            Metadata:
                                                                              major_brand     : mp42
                                                                              minor_version   : 0
                                                                              compatible_brands: mp42isom
                                                                              creation_time   : 1993-11-24 14:46:42
                                                                              encoder         : Max 0.9.1
                                                                              iTunSMPB        : 00000000 00000840 000003c0 000000000035dc00 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
                                                                              date            : 2015
                                                                            Duration: 00:01:20.04, start: 0.047891, bitrate: 129 kb/s
                                                                              Stream #1:0(eng): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 127 kb/s (default)
                                                                              Metadata:
                                                                                creation_time   : 1993-11-24 14:46:42
                                                                          [NULL @ 0xb5e4fc00] Unable to find a suitable output format for '[a1][a2]amerge,pan=stereo|c0<c0+c1|c1<c2+c3[aout]'
                                                                          [a1][a2]amerge,pan=stereo|c0<c0+c1|c1<c2+c3[aout]: Invalid argument

回答1:

The entire filter complex should be one string, with no spaces, or enclosed in quotes ", if there are. Right now, ffmpeg thinks the complex ends after the 2nd volume filter and is trying to parse the rest of the complex as an output token.