2013-12-10 16 views
5

Ich versuche, den Film Filter in meinem Android-Projekt mit ffmpeg zu verwenden. Ich benutze eine Gabel des Guardian-Projekts: Cheers-devffmpeg - Verwenden Sie Filter in Android

Es verwendet eine aktuelle Version von ffmpeg (~ 15 Tage alt atm). Ich habe die Option --enable-filter=movie hinzugefügt, um den Filter zu aktivieren.

Ich benutze diese Befehlszeile in meinem Android-Projekt:

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 

Es arbeitet perfekt mit meiner Desktop-Version auf Debian Wheezy. Aber es ist unmöglich, es auf meinem Android laufen zu lassen. Alle anderen Befehle funktionieren.

Hier der Fehler, wenn es fehlschlägt: No such filter: 'movie'.

ich auch mit der Option -filter_complex mit einem etwas anderen Fehler getestet:

$ 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 

Der Ausgang als die vorherige besser ist, aber ich glaube, ich bin etwas fehlt.

LÖSUNG: Ich entfernte das Zitat aus dem Argument filter_complex und es funktionierte.

Hier ist der Arbeits Befehl:

$ 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 
+0

Es gibt keinen Grund 'movie' in diesem Fall zu verwenden:' ffmpeg -i input.mp4 -i watermark.png -filter_complex „[0: v] [1: v] overlay = main_w-overlay_w-10: main_h-overlay_h-10 [aus] "-map [out] -map 0: a -codec: Eine Kopie output.mp4'. Sie sollten immer die vollständige ffmpeg-Konsolenausgabe anzeigen. – LordNeckbeard

+0

Ich habe Ihren Vorschlag getestet, aber es funktioniert immer noch nicht. Der Fehler ist anders. Ich habe auch an meinem Computer getestet und es hat perfekt funktioniert. – kikuchi

+0

Sie müssen die vollständige ffmpeg-Konsolenausgabe anzeigen. Dies beinhaltet die ffmpeg-Konfiguration und Versionsinformationen. – LordNeckbeard

Antwort

12

Zu meinem Problem ich das doppelte Anführungszeichen um filter_complex Argument entfernt zu lösen. Hier ist der Arbeits Befehl:

$ 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 
+1

Ich benutze Guardian Kannst du mir helfen, wie kann ich das Projekt für Filter und Komprimierung verwenden? Bitte ich brauche das mein Projekt wäre mit diesen Problemen fertig. Vielen Dank! –

+0

Hallo, ich habe diese Lib https://github.com/WritingMinds/ffmpeg-android-java verwenden, aber ich bekomme keinen solchen Filter: "Fehler beim Initialisieren komplexer Filter ungültiger Argumente können Sie bitte –

+0

@ChintanKhetiya ffmpeg Lib mit dem Filter Sie neu erstellen benutzen. – RoFF