I'm implementing a video editing feature on my Flutter App using the Flutter-FFmpeg package, [Adding watermarks on video] specifically, while executing the code I got this error:
E/mobile-ffmpeg( 5731): Not overwriting - exiting
D/flutter-ffmpeg( 5731): FFmpeg exited with rc: 1
Most importantly, the output file cannot be played by the VideoPlayer. And it just LOADS FOREVER, the VideoController
Widget shows that the player is buffering. I've tested My VideoPlayer widget, and it works very well on the videos that were not processed.
Here's the code I'm using:
await FlutterFFmpeg().execute(
'-i video.mp4 -i logo.png -filter_complex [0:v][1:v]overlay=5:5 -c:a copy -movflags +faststart output.mp4'
);
A full log of the executing process in case it helps:
D/flutter-ffmpeg( 5731): Running FFmpeg with arguments: [-i, /data/user/0/com.raheyo.cheese/cache/REC5995709221575585296.mp4, -i, /data/user/0/com.raheyo.cheese/cache/e0baa6a8-4d4c-407a-a73e-be4dcf4d08fd.mp4, -filter_complex, [0:v][1:v]overlay=5:5, -c:a, copy, -movflags, +faststart, /data/user/0/com.raheyo.cheese/cache/e0baa6a8-4d4c-407a-a73e-be4dcf4d08fd.mp4].
I/mobile-ffmpeg( 5731): Loading mobile-ffmpeg.
I/mobile-ffmpeg( 5731): Loaded mobile-ffmpeg-full-arm64-v8a-4.4-20200725.
D/mobile-ffmpeg( 5731): Callback thread started.
I/mobile-ffmpeg( 5731): ffmpeg version v4.4-dev-416
I/mobile-ffmpeg( 5731): Copyright (c) 2000-2020 the FFmpeg developers
I/mobile-ffmpeg( 5731):
I/mobile-ffmpeg( 5731): 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)
I/mobile-ffmpeg( 5731): 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-android24-clang --cxx=aarch64-linux-android24-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-libilbc --enable-libopus --enable-libsnappy --enable-libsoxr --enable-libaom --enable-libtwolame --disable-sdl2 --enable-libvo-amrwbenc --enable-zlib --enable-mediacodec
I/mobile-ffmpeg( 5731): libavutil 56. 55.100 / 56. 55.100
I/mobile-ffmpeg( 5731): libavcodec 58. 96.100 / 58. 96.100
I/mobile-ffmpeg( 5731): libavformat 58. 48.100 / 58. 48.100
I/mobile-ffmpeg( 5731): libavdevice 58. 11.101 / 58. 11.101
I/mobile-ffmpeg( 5731): libavfilter 7. 87.100 / 7. 87.100
I/mobile-ffmpeg( 5731): libswscale 5. 8.100 / 5. 8.100
I/mobile-ffmpeg( 5731): libswresample 3. 8.100 / 3. 8.100
I/mobile-ffmpeg( 5731): Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/data/user/0/com.raheyo.cheese/cache/REC5995709221575585296.mp4':
I/mobile-ffmpeg( 5731): Metadata:
I/mobile-ffmpeg( 5731): major_brand :
I/mobile-ffmpeg( 5731): mp42
I/mobile-ffmpeg( 5731):
I/mobile-ffmpeg( 5731): minor_version :
I/mobile-ffmpeg( 5731): 0
I/mobile-ffmpeg( 5731):
I/mobile-ffmpeg( 5731): compatible_brands:
I/mobile-ffmpeg( 5731): isommp42
I/mobile-ffmpeg( 5731):
I/mobile-ffmpeg( 5731): creation_time :
I/mobile-ffmpeg( 5731): 2021-08-06T19:50:53.000000Z
I/mobile-ffmpeg( 5731):
I/mobile-ffmpeg( 5731): com.android.version:
I/mobile-ffmpeg( 5731): 9
I/mobile-ffmpeg( 5731):
I/mobile-ffmpeg( 5731): Duration:
I/mobile-ffmpeg( 5731): 00:00:01.69
I/mobile-ffmpeg( 5731): , start:
I/mobile-ffmpeg( 5731): 0.000000
I/mobile-ffmpeg( 5731): , bitrate:
I/mobile-ffmpeg( 5731): 12834 kb/s
I/mobile-ffmpeg( 5731):
I/mobile-ffmpeg( 5731): Stream #0:0
I/mobile-ffmpeg( 5731): (eng)
I/mobile-ffmpeg( 5731): : Video: h264 (avc1 / 0x31637661), yuvj420p(pc, bt470bg/bt470bg/smpte170m), 1920x1080, 12728 kb/s
I/mobile-ffmpeg( 5731): , SAR 1:1 DAR 16:9
I/mobile-ffmpeg( 5731): ,
I/mobile-ffmpeg( 5731): 20.09 fps,
I/mobile-ffmpeg( 5731): 30 tbr,
I/mobile-ffmpeg( 5731): 90k tbn,
I/mobile-ffmpeg( 5731): 180k tbc
I/mobile-ffmpeg( 5731): (default)
I/mobile-ffmpeg( 5731):
I/mobile-ffmpeg( 5731): Metadata:
I/mobile-ffmpeg( 5731): rotate :
I/mobile-ffmpeg( 5731): 90
I/mobile-ffmpeg( 5731):
I/mobile-ffmpeg( 5731): creation_time :
I/mobile-ffmpeg( 5731): 2021-08-06T19:50:53.000000Z
I/mobile-ffmpeg( 5731):
I/mobile-ffmpeg( 5731): handler_name :
I/mobile-ffmpeg( 5731): VideoHandle
I/mobile-ffmpeg( 5731):
I/mobile-ffmpeg( 5731): Side data:
I/mobile-ffmpeg( 5731):
I/mobile-ffmpeg( 5731): displaymatrix: rotation of -90.00 degrees
I/mobile-ffmpeg( 5731):
I/mobile-ffmpeg( 5731): Stream #0:1
I/mobile-ffmpeg( 5731): (eng)
I/mobile-ffmpeg( 5731): : Audio: aac (mp4a / 0x6134706D), 48000 Hz, mono, fltp, 96 kb/s
I/mobile-ffmpeg( 5731): (default)
I/mobile-ffmpeg( 5731):
I/mobile-ffmpeg( 5731): Metadata:
I/mobile-ffmpeg( 5731): creation_time :
I/mobile-ffmpeg( 5731): 2021-08-06T19:50:53.000000Z
I/mobile-ffmpeg( 5731):
I/mobile-ffmpeg( 5731): handler_name :
I/mobile-ffmpeg( 5731): SoundHandle
I/mobile-ffmpeg( 5731):
I/mobile-ffmpeg( 5731): Input #1, png_pipe, from '/data/user/0/com.raheyo.cheese/cache/e0baa6a8-4d4c-407a-a73e-be4dcf4d08fd.mp4':
I/mobile-ffmpeg( 5731): Duration:
I/mobile-ffmpeg( 5731): N/A
I/mobile-ffmpeg( 5731): , bitrate:
I/mobile-ffmpeg( 5731): N/A
I/mobile-ffmpeg( 5731):
I/mobile-ffmpeg( 5731): Stream #1:0
I/mobile-ffmpeg( 5731): : Video: png, rgba(pc), 393x822
I/mobile-ffmpeg( 5731): ,
This happens when target output file already exists. Make sure it is not the same file as the input. Then add -y
to force overwrite output in case it already exists.