1

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): ,



 
Ryan Wang
  • 418
  • 7
  • 23
  • Were you able to get this to work in Flutter? Even copying your FFmpeg command, I can still not even get the function to overwrite the original video file. – Dennis Ashford Aug 30 '22 at 19:49

1 Answers1

2

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.

Gyan
  • 85,394
  • 9
  • 169
  • 201
  • Thanks. After added `-y`, the console appears this `E/mobile-ffmpeg(25665): Output /data/user/0/com.raheyo.cheese/cache/9ac4f73952.mp4 same as Input #1 - exiting W/mobile-ffmpeg(25665): FFmpeg cannot edit existing files in-place. I/ExoPlayerImpl(25665): Init 9f76268 [ExoPlayerLib/2.13.1] [violet, Redmi Note 7 Pro, Xiaomi, 28] D/AudioManager(25665): getStreamVolume isRestricted mode = 0 E/ExoPlayerImplInternal(25665): Playback error E/ExoPlayerImplInternal(25665): com.google.android.exoplayer2.ExoPlaybackException: Source error`. And the player still couldn't play, it just loads forever. – Ryan Wang Aug 09 '21 at 23:23
  • As it says, `FFmpeg cannot edit existing files in-place.`. The output file cannot be the same as an input file. – Gyan Aug 10 '21 at 03:52