FFmpeg - Filter overlay has an unconnected output
Использую библиотеку implementation 'com.arthenica:mobile-ffmpeg-full-gpl:4.4.LTS'.
Необходимо собрать вместе 3 видео и наложить на них 3 картинки. Я генерирую следующий код:
-y -i /storage/emulated/0/Movies/video_20211111_141930.mp4 -i /storage/emulated/0/Movies/video_20211111_141946.mp4 -i /storage/emulated/0/Movies/video_20211111_141958.mp4 -i /storage/emulated/0/Pictures/Maramax/IMAGETEXT.png -i /storage/emulated/0/Pictures/Maramax/IMAGESTICKER.png -i /storage/emulated/0/Pictures/Maramax/logo.png -filter_complex [0:v:0][1:v:0][2:v:0]concat=n=3:v=1[merg0];[3]scale=1280:720[i0];[merg0][i0] overlay=0:0[merg1];[4]scale=1280:720[i1];[merg1][i1] overlay=0:0[merg2];[5]scale=195:136[i2];[merg2][i2] overlay=766:30[merg3] -c copy -threads 4 -vcodec libx264 -c:a aac -preset ultrafast -shortest -crf 20 -vsync 2 /storage/emulated/0/Pictures/Maramax/finalVideo0.8238299708746938.mp4
И передаю его в виде массива команд cmd (строкой тоже пробовал) в FFmpeg.executeAsync:
Config.enableLogCallback(new LogCallback() {
public void apply(LogMessage message) {
Log.e(Config.TAG, message.getText());
}
});
FFmpeg.executeAsync(cmd, new ExecuteBinaryResponse(this.delegate, filepath));
Получаю такой вывод:
E/mobile-ffmpeg: ffmpeg version v4.4-dev-416
E/mobile-ffmpeg: Copyright (c) 2000-2020 the FFmpeg developers
E/mobile-ffmpeg: built with Android (6454773 based on r365631c2) clang version 9.0.8 (https://android.googlesource.com/toolchain/llvm-project 98c855489587874b2a325e7a516b99d838599c6f) (based on LLVM 9.0.8svn)
E/mobile-ffmpeg: configuration: --cross-prefix=aarch64-linux-android- --sysroot=/files/android-sdk/ndk/21.3.6528147/toolchains/llvm/prebuilt/linux-x86_64/sysroot --prefix=/home/taner/Projects/mobile-ffmpeg/prebuilt/android-arm64/ffmpeg --pkg-config=/usr/bin/pkg-config --enable-version3 --arch=aarch64 --cpu=armv8-a --cc=aarch64-linux-android21-clang --cxx=aarch64-linux-android21-clang++ --extra-libs='-L/home/taner/Projects/mobile-ffmpeg/prebuilt/android-arm64/cpu-features/lib -lndk_compat' --target-os=android --enable-neon --enable-asm --enable-inline-asm --enable-cross-compile --enable-pic --enable-jni --enable-optimizations --enable-swscale --enable-shared --enable-v4l2-m2m --disable-outdev=fbdev --disable-indev=fbdev --enable-small --disable-openssl --disable-xmm-clobber-test --disable-debug --enable-lto --disable-neon-clobber-test --disable-programs --disable-postproc --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --disable-sndio --disable-schannel --disable-securetransport --disable-xlib --disable-cuda --disable-cuvid --disable-nvenc --disable-vaapi --disable-vdpau --disable-videotoolbox --disable-audiotoolbox --disable-appkit --disable-alsa --disable-cuda --disable-cuvid --disable-nvenc --disable-vaapi --disable-vdpau --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-gmp --enable-gnutls --enable-libmp3lame --enable-libass --enable-iconv --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libxml2 --enable-libopencore-amrnb --enable-libshine --enable-libspeex --enable-libwavpack --enable-libkvazaar --enable-libx264 --enable-gpl --enable-libxvid --enable-gpl --enable-libx265 --enable-gpl --enable-libvidstab --enable-gpl --enable-libilbc --enable-libopus --enable-libsnappy --enable-libsoxr --enable-libaom --enable-libtwolame --disable-sdl2 --enable-libvo-amrwbenc --enable-zlib --enable-mediacodec
E/mobile-ffmpeg: libavutil 56. 55.100 / 56. 55.100
E/mobile-ffmpeg: libavcodec 58. 96.100 / 58. 96.100
E/mobile-ffmpeg: libavformat 58. 48.100 / 58. 48.100
E/mobile-ffmpeg: libavdevice 58. 11.101 / 58. 11.101
E/mobile-ffmpeg: libavfilter 7. 87.100 / 7. 87.100
E/mobile-ffmpeg: libswscale 5. 8.100 / 5. 8.100
E/mobile-ffmpeg: libswresample 3. 8.100 / 3. 8.100
E/mobile-ffmpeg: Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/storage/emulated/0/Movies/video_20211111_141930.mp4':
E/mobile-ffmpeg: Metadata:
E/mobile-ffmpeg: major_brand :
E/mobile-ffmpeg: mp42
E/mobile-ffmpeg: minor_version :
E/mobile-ffmpeg: 0
E/mobile-ffmpeg: compatible_brands:
E/mobile-ffmpeg: isommp42
E/mobile-ffmpeg: creation_time :
E/mobile-ffmpeg: 2021-11-11T12:19:38.000000Z
E/mobile-ffmpeg: com.android.version:
E/mobile-ffmpeg: 11
E/mobile-ffmpeg: Duration:
E/mobile-ffmpeg: 00:00:02.14
E/mobile-ffmpeg: , start:
E/mobile-ffmpeg: 0.000000
E/mobile-ffmpeg: , bitrate:
E/mobile-ffmpeg: 5290 kb/s
E/mobile-ffmpeg: Stream #0:0
E/mobile-ffmpeg: (eng)
E/mobile-ffmpeg: : Video: h264 (avc1 / 0x31637661), yuv420p(tv, bt709/bt709/smpte170m), 1280x720, 5046 kb/s
E/mobile-ffmpeg: , SAR 1:1 DAR 16:9
E/mobile-ffmpeg: ,
E/mobile-ffmpeg: 19.19 fps,
E/mobile-ffmpeg: 19.67 tbr,
E/mobile-ffmpeg: 90k tbn,
E/mobile-ffmpeg: 180k tbc
E/mobile-ffmpeg: (default)
E/mobile-ffmpeg: Metadata:
E/mobile-ffmpeg: creation_time :
E/mobile-ffmpeg: 2021-11-11T12:19:38.000000Z
E/mobile-ffmpeg: handler_name :
E/mobile-ffmpeg: VideoHandle
E/mobile-ffmpeg: Stream #0:1
E/mobile-ffmpeg: (eng)
E/mobile-ffmpeg: : Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 256 kb/s
E/mobile-ffmpeg: (default)
E/mobile-ffmpeg: Metadata:
E/mobile-ffmpeg: creation_time :
E/mobile-ffmpeg: 2021-11-11T12:19:38.000000Z
E/mobile-ffmpeg: handler_name :
E/mobile-ffmpeg: SoundHandle
E/mobile-ffmpeg: Input #1, mov,mp4,m4a,3gp,3g2,mj2, from '/storage/emulated/0/Movies/video_20211111_141946.mp4':
E/mobile-ffmpeg: Metadata:
E/mobile-ffmpeg: major_brand :
E/mobile-ffmpeg: mp42
E/mobile-ffmpeg: minor_version :
E/mobile-ffmpeg: 0
E/mobile-ffmpeg: compatible_brands:
E/mobile-ffmpeg: isommp42
E/mobile-ffmpeg: creation_time :
E/mobile-ffmpeg: 2021-11-11T12:19:50.000000Z
E/mobile-ffmpeg: com.android.version:
E/mobile-ffmpeg: 11
E/mobile-ffmpeg: Duration:
E/mobile-ffmpeg: 00:00:00.69
E/mobile-ffmpeg: , start:
E/mobile-ffmpeg: 0.000000
E/mobile-ffmpeg: , bitrate:
E/mobile-ffmpeg: 3236 kb/s
E/mobile-ffmpeg: Stream #1:0
E/mobile-ffmpeg: (eng)
E/mobile-ffmpeg: : Video: h264 (avc1 / 0x31637661), yuv420p(tv, bt709/bt709/smpte170m), 1280x720, 4260 kb/s
E/mobile-ffmpeg: , SAR 1:1 DAR 16:9
E/mobile-ffmpeg: ,
E/mobile-ffmpeg: 17.69 fps,
E/mobile-ffmpeg: 19.67 tbr,
E/mobile-ffmpeg: 90k tbn,
E/mobile-ffmpeg: 180k tbc
E/mobile-ffmpeg: (default)
E/mobile-ffmpeg: Metadata:
E/mobile-ffmpeg: creation_time :
E/mobile-ffmpeg: 2021-11-11T12:19:50.000000Z
E/mobile-ffmpeg: handler_name :
E/mobile-ffmpeg: VideoHandle
E/mobile-ffmpeg: Stream #1:1
E/mobile-ffmpeg: (eng)
E/mobile-ffmpeg: : Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 256 kb/s
E/mobile-ffmpeg: (default)
E/mobile-ffmpeg: Metadata:
E/mobile-ffmpeg: creation_time :
E/mobile-ffmpeg: 2021-11-11T12:19:50.000000Z
E/mobile-ffmpeg: handler_name :
E/mobile-ffmpeg: SoundHandle
E/mobile-ffmpeg: Input #2, mov,mp4,m4a,3gp,3g2,mj2, from '/storage/emulated/0/Movies/video_20211111_141958.mp4':
E/mobile-ffmpeg: Metadata:
E/mobile-ffmpeg: major_brand :
E/mobile-ffmpeg: mp42
E/mobile-ffmpeg: minor_version :
E/mobile-ffmpeg: 0
E/mobile-ffmpeg: compatible_brands:
E/mobile-ffmpeg: isommp42
E/mobile-ffmpeg: creation_time :
E/mobile-ffmpeg: 2021-11-11T12:20:00.000000Z
E/mobile-ffmpeg: com.android.version:
E/mobile-ffmpeg: 11
E/mobile-ffmpeg: Duration:
E/mobile-ffmpeg: 00:00:00.60
E/mobile-ffmpeg: , start:
E/mobile-ffmpeg: 0.000000
E/mobile-ffmpeg: , bitrate:
E/mobile-ffmpeg: 4303 kb/s
E/mobile-ffmpeg: Stream #2:0
E/mobile-ffmpeg: (eng)
E/mobile-ffmpeg: : Video: h264 (avc1 / 0x31637661), yuv420p(tv, bt709/bt709/smpte170m), 1280x720, 4719 kb/s
E/mobile-ffmpeg: , SAR 1:1 DAR 16:9
E/mobile-ffmpeg: ,
E/mobile-ffmpeg: 19.65 fps,
E/mobile-ffmpeg: 19.67 tbr,
E/mobile-ffmpeg: 90k tbn,
E/mobile-ffmpeg: 180k tbc
E/mobile-ffmpeg: (default)
E/mobile-ffmpeg: Metadata:
E/mobile-ffmpeg: creation_time :
E/mobile-ffmpeg: 2021-11-11T12:20:00.000000Z
E/mobile-ffmpeg: handler_name :
E/mobile-ffmpeg: VideoHandle
E/mobile-ffmpeg: Stream #2:1
E/mobile-ffmpeg: (eng)
E/mobile-ffmpeg: : Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 262 kb/s
E/mobile-ffmpeg: (default)
E/mobile-ffmpeg: Metadata:
E/mobile-ffmpeg: creation_time :
E/mobile-ffmpeg: 2021-11-11T12:20:00.000000Z
E/mobile-ffmpeg: handler_name :
E/mobile-ffmpeg: SoundHandle
E/mobile-ffmpeg: Input #3, png_pipe, from '/storage/emulated/0/Pictures/Maramax/IMAGETEXT.png':
E/mobile-ffmpeg: Duration:
E/mobile-ffmpeg: N/A
E/mobile-ffmpeg: , bitrate:
E/mobile-ffmpeg: N/A
E/mobile-ffmpeg: Stream #3:0
E/mobile-ffmpeg: : Video: png, rgba(pc), 1280x720
E/mobile-ffmpeg: ,
E/mobile-ffmpeg: 25 tbr,
E/mobile-ffmpeg: 25 tbn,
E/mobile-ffmpeg: 25 tbc
E/mobile-ffmpeg: Input #4, png_pipe, from '/storage/emulated/0/Pictures/Maramax/IMAGESTICKER.png':
E/mobile-ffmpeg: Duration:
E/mobile-ffmpeg: N/A
E/mobile-ffmpeg: , bitrate:
E/mobile-ffmpeg: N/A
E/mobile-ffmpeg: Stream #4:0
E/mobile-ffmpeg: : Video: png, rgba(pc), 1280x720
E/mobile-ffmpeg: ,
E/mobile-ffmpeg: 25 tbr,
E/mobile-ffmpeg: 25 tbn,
E/mobile-ffmpeg: 25 tbc
E/mobile-ffmpeg: Input #5, png_pipe, from '/storage/emulated/0/Pictures/Maramax/logo.png':
E/mobile-ffmpeg: Duration:
E/mobile-ffmpeg: N/A
E/mobile-ffmpeg: , bitrate:
E/mobile-ffmpeg: N/A
E/mobile-ffmpeg: Stream #5:0
E/mobile-ffmpeg: : Video: png, rgba(pc), 465x323
E/mobile-ffmpeg: ,
E/mobile-ffmpeg: 25 tbr,
E/mobile-ffmpeg: 25 tbn,
E/mobile-ffmpeg: 25 tbc
E/mobile-ffmpeg: Filter overlay has an unconnected output
Видео не собирается. Если убрать -filter_complex с его аргументами, проблема исчезнет, то есть ошибка где-то в этой команде. Пробовал оборачивать значение для -filter_complex в одинарные и двойные кавычки, выдает ошибку. Убрать пробел перед overlay тоже не помогло. На Android 10 и ниже все работает нормально. Эта ошибка происходит на Android 11.
Эта библиотека устарела и желательно переходить на https://github.com/tanersener/ffmpeg-kit, но если, можно решить проблему на этой библиотеке, переход нежелателен, так как с ffmpeg-kit тоже возникает много проблем.