2013-12-10 13 views
5

私はffmpegで自分のAndroidプロジェクトでムービーフィルタを使用しようとしています。私はガーディアンプロジェクトのフォークを使用します:Cheers-devffmpeg - アンドロイドでフィルタを使用する

最近のバージョンのffmpeg(〜15日の古いatm)を使用しています。フィルターを有効にするには、--enable-filter=movieオプションを追加しました。

私はアンドロイドのプロジェクトで、このコマンドラインを使用します。

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 

それは完璧のDebian Wheezyに上の私のデスクトップバージョンで動作します。しかし、それは私のAndroid上で動作させることは不可能です。その他のコマンドはすべて動作します。

エラーが発生した場合のエラーは、No such filter: 'movie'です。

私も多少異なるエラーとオプション-filter_complexでテスト:

$ 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 

出力は、前のものよりも優れているが、私は、私は何かが欠けていると思います。

解決策:filter_complex引数から引用符を削除しました。

$ 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

この場合には、 'movie'を使用する理由はありません:ここで働いコマンドは' ffmpegの-i input.mp4 -i 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:コピー出力。完全なffmpegコンソール出力を常に表示する必要があります。 – LordNeckbeard

+0

私はあなたの提案をテストしましたが、それでも動作しません。エラーは異なります。私も自分のコンピュータでテストし、それは完全に働いた。 – kikuchi

+0

完全なffmpegコンソール出力を表示する必要があります。これには、ffmpegの設定とバージョン情報が含まれます。 – LordNeckbeard

答えて

12

は私の問題を解決するために、私はfilter_complex引数を二重引用符を削除:ここ

は作業コマンドです。

$ 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

私はガーディアンを使用しています。フィルタと圧縮のためにプロジェクトを使用するにはどうすれば助けてくれますか?私のプロジェクトは、これらの問題で終了する必要がありますか?ありがとう! –

+0

こんにちは私はこのlib https://github.com/WritingMinds/ffmpeg-android-javaを使用していますが、私はそのようなフィルタはありません: "複雑なフィルタの無効な引数を初期化する際にエラーが発生しました –

+0

@ChintanKhetiyaはフィルタを使用してffmpegを再構築します。つかいます。 – RoFF

関連する問題