title: ffmpeg - Use filter in android
body: <p>I'm trying to use the movie filter in my android project with ffmpeg. I use a fork of the guardian project : <a href="https://github.com/Cheers-Dev/android-ffmpeg" rel="noreferrer">Cheers-dev</a></p>
  
  <p>It use a recent version of ffmpeg (~15 days old atm). I added the option <code>--enable-filter=movie</code> to activate the filter.</p>
  
  <p>I use this command line in my android project : </p>
  
  <pre><code>ffmpeg -i input.mp4 -vf "movie=watermark.png [watermark]; [in][watermark] overlay=main_w-overlay_w-10:main_h-overlay_h-10 [out]" -strict -2 outputvideo.mp4
  </code></pre>
  
  <p>It perfectly works with my desktop version on Debian Wheezy. But it's impossible to make it work on my Android. All other commands works.</p>
  
  <p>Here the error when it fails : <code>No such filter: 'movie'</code>.</p>
  
  <p>I also tested with the option <code>-filter_complex</code> with a somewhat different error:</p>
  
  <pre><code>$ ffmpeg -y -loglevel debug -i /storage/sdcard0/test/hsgjr_export.mp4 -i /storage/sdcard0/test/watermark.png -filter_complex "[0:v][1:v]overlay=main_w-overlay_w-10:main_h-overlay_h-10[out]" -map [out] -map 0:a -codec:a copy /storage/sdcard0/test/hsgjr_watermark.mp4
  
  ffmpeg version N-58429-gccdfa3e Copyright (c) 2000-2013 the FFmpeg developers
  built on Dec 10 2013 01:12:39 with gcc 4.4.3 (GCC)
  configuration: --arch=arm --cpu=cortex-a8 --target-os=linux --enable-runtime-cpudetect --prefix=/data/data/info.guardianproject.ffmpeg/app_opt --enable-pic --disable-shared --enable-static --cross-prefix=/opt/android/ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi- --sysroot=/opt/android/ndk-r8/platforms/android-14/arch-arm --extra-cflags='-I../x264 -I/Android/cheers/android-ffmpeg/data/data/info.guardianproject.ffmpeg/app_opt/include -mfloat-abi=softfp -mfpu=neon' --extra-ldflags='-L../x264 -L/Android/cheers/android-ffmpeg/data/data/info.guardianproject.ffmpeg/app_opt/lib' --enable-version3 --enable-gpl --enable-yasm --enable-decoders --enable-encoders --enable-muxers --enable-demuxers --enable-parsers --enable-protocols --enable-filter=movie --enable-avresample --enable-libvorbis --disable-indevs --enable-indev=lavfi
  libavutil      52. 54.100 / 52. 54.100
  libavcodec     55. 44.100 / 55. 44.100
  libavformat    55. 21.101 / 55. 21.101
  libavdevice    55.  5.100 / 55.  5.100
  libavfilter     3. 91.100 /  3. 91.100
  libavresample   1.  1.  0 /  1.  1.  0
  libswscale      2.  5.101 /  2.  5.101
  libswresample   0. 17.104 /  0. 17.104
  libpostproc    52.  3.100 / 52.  3.100
  Splitting the commandline.
  Reading option '-y' ... matched as option 'y' (overwrite output files) with argument '1'.
  Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument 'debug'.
  Reading option '-i' ... matched as input file with argument '/storage/sdcard0/test/hsgjr_export.mp4'.
  Reading option '-i' ... matched as input file with argument '/storage/sdcard0/test/watermark.png'.
  Reading option '-filter_complex' ... matched as option 'filter_complex' (create a complex filtergraph) with argument '"[0:v][1:v]overlay=main_w-overlay_w-10:main_h-overlay_h-10[out]"'.
  Reading option '-map' ... matched as option 'map' (set input stream mapping) with argument '[out]'.
  Reading option '-map' ... matched as option 'map' (set input stream mapping) with argument '0:a'.
  Reading option '-codec:a' ... matched as option 'codec' (codec name) with argument 'copy'.
  Reading option '/storage/sdcard0/test/hsgjr_watermark.mp4' ... matched as output file.
  Finished splitting the commandline.
  Parsing a group of options: global .
  Applying option y (overwrite output files) with argument 1.
  Applying option loglevel (set logging level) with argument debug.
  Applying option filter_complex (create a complex filtergraph) with argument "[0:v][1:v]overlay=main_w-overlay_w-10:main_h-overlay_h-10[out]".
  Successfully parsed a group of options.
  Parsing a group of options: input file /storage/sdcard0/test/hsgjr_export.mp4.
  Successfully parsed a group of options.
  Opening an input file: /storage/sdcard0/test/hsgjr_export.mp4.
  [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1274cd0] Format mov,mp4,m4a,3gp,3g2,mj2 probed with size=2048 and score=100
  [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1274cd0] ISO: File Type Major Brand: isom
  [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1274cd0] File position before avformat_find_stream_info() is 1196725
  [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1274cd0] All info found
  [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1274cd0] File position after avformat_find_stream_info() is 30451
  Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/storage/sdcard0/test/hsgjr_export.mp4':
  Metadata:
  major_brand     : isom
  minor_version   : 512
  compatible_brands: isomiso2avc1mp41
  encoder         : Lavf55.21.101
  Duration: 00:00:00.96, start: 0.000000, bitrate: 9972 kb/s
  Stream #0:0(und), 1, 1/1200000: Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080, 1/2400000, 9830 kb/s, 25 fps, 25 tbr, 1200k tbn, 2400k tbc (default)
  Metadata:
  handler_name    : VideoHandler
  Stream #0:1(und), 1, 1/48000: Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 127 kb/s (default)
  Metadata:
  handler_name    : SoundHandler
  Successfully opened the file.
  Parsing a group of options: input file /storage/sdcard0/test/watermark.png.
  Successfully parsed a group of options.
  Opening an input file: /storage/sdcard0/test/watermark.png.
  [AVIOContext @ 0x12870f0] Statistics: 26515 bytes read, 0 seeks
  Input #1, image2, from '/storage/sdcard0/test/watermark.png':
  Duration: 00:00:00.04, start: 0.000000, bitrate: N/A
  Stream #1:0, 1, 1/25: Video: png, rgba, 400x170, 1/25, 25 tbr, 25 tbn, 25 tbc
  Successfully opened the file.
  Parsing a group of options: output file /storage/sdcard0/test/hsgjr_watermark.mp4.
  Applying option map (set input stream mapping) with argument [out].
  Applying option map (set input stream mapping) with argument 0:a.
  Applying option codec:a (codec name) with argument copy.
  Successfully parsed a group of options.
  Opening an output file: /storage/sdcard0/test/hsgjr_watermark.mp4.
  [AVFilterGraph @ 0x127d5f0] No such filter: '"'
  Error configuring filters.
  [AVIOContext @ 0x127d2b0] Statistics: 67296 bytes read, 2 seeks
  </code></pre>
  
  <p>The output is better than the previous one but I think I'm missing something.</p>
  
  <p><strong>SOLUTION</strong> : I removed the quote from the filter_complex argument and it worked.</p>
  
  <p>Here is the working command :</p>
  
  <pre><code>$ ffmpeg -y -i /storage/sdcard0/test/hsgjr_export.mp4 -i /storage/sdcard0/test/watermark.png -filter_complex [0:v][1:v]overlay=main_w-overlay_w-10:main_h-overlay_h-10[out] -map [out] -map 0:a -codec:a copy /storage/sdcard0/test/hsgjr_watermark.mp4
  </code></pre>