Ich versuche, ffmpeg auf Android auszuführen. Ich habe auch 2-3 Befehle erfolgreich ausgeführt. Aber ich bin an einem Punkt fest, wo ich Text zum Video hinzufügen.FFMPEG: Hinzufügen von Schriftart zu Video gibt Fehler
Hier ist der Befehl, den ich ausführe.
FUNKTIONIERT NICHT: weil das text
Argument einen Raum zwischen zwei Wörtern hat.
"-i "+path+"out.mp4 -vf drawtext=fontfile="+path+"f1.ttf:text='Stack OverFlow' -y -c:v libx264 -c:a copy -movflags +faststart "+path+"output.mp4"
ARBEITEN: nur entfernt Raum.
"-i "+path+"out.mp4 -vf drawtext=fontfile="+path+"f1.ttf:text='StackOverFlow' -y -c:v libx264 -c:a copy -movflags +faststart "+path+"output.mp4"
Hier path
enthält die externe Pfad der SD-Karte. out.mp4
und f1.ttf
existiert in meinem Ordner.
Meine Frage ist, warum es nicht mit Raum arbeitet.
Hier ist der Stack-Trace, den ich bekomme.
FAILED with output : WARNING: linker: /data/data/com.github.hiteshsondhi88.sampleffmpeg/files/ffmpeg has text relocations. This is wasting memory and prevents security hardening. Please fix.
ffmpeg version n3.0.1 Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 4.8 (GCC)
configuration: --target-os=linux --cross-prefix=/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/bin/i686-linux-android- --arch=x86 --cpu=i686 --enable-runtime-cpudetect --sysroot=/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/sysroot --enable-pic --enable-libx264 --enable-libass --enable-libfreetype --enable-libfribidi --enable-libmp3lame --enable-fontconfig --enable-pthreads --disable-debug --disable-ffserver --enable-version3 --enable-hardcoded-tables --disable-ffplay --disable-ffprobe --enable-gpl --enable-yasm --disable-doc --disable-shared --enable-static --pkg-config=/home/vagrant/SourceCode/ffmpeg-android/ffmpeg-pkg-config --prefix=/home/vagrant/SourceCode/ffmpeg-android/build/x86 --extra-cflags='-I/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/include -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fno-strict-overflow -fstack-protector-all -march=i686' --extra-ldflags='-L/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/lib -Wl,-z,relro -Wl,-z,now -pie' --extra-libs='-lpng -lexpat -lm' --extra-cxxflags=
libavutil 55. 17.103/55. 17.103
libavcodec 57. 24.102/57. 24.102
libavformat 57. 25.100/57. 25.100
libavdevice 57. 0.101/57. 0.101
libavfilter 6. 31.100/6. 31.100
libswscale 4. 0.100/4. 0.100
libswresample 2. 0.101/2. 0.101
libpostproc 54. 0.100/54. 0.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/storage/emulated/0/Testing/out.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf57.25.100
Duration: 00:00:05.00, start: 0.000000, bitrate: 117 kb/s
Stream #0:0(und): Video: h264 (High) (avc1/0x31637661), yuv420p, 300x300 [SAR 40:33 DAR 40:33], 113 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
Metadata:
handler_name : VideoHandler
[NULL @ 0xb585f000] Unable to find a suitable output format for 'text='Stack'
text='Stack: Invalid argument
Warum es sagt ungültiges Argument. Es wird großartig sein, wenn irgendein Experte mich bei dem, was ich hier falsch mache, führen kann.
Ich habe diese Frage von SO refered: Text on video ffmpeg
Ich bin nicht mit Android vertraut, aber ich habe einen Trend von Problemen mit dem Zitieren bemerkt. – LordNeckbeard
Zitate Probleme bedeutet ?? Ich muss Zitat von etwas wo entfernen ?? Aber beachte, dass es funktioniert ** ohne Platz **. Ich habe meine Frage aktualisiert. @LordNeckbeard –
Sie konnten nicht angeben, wie Sie ffmpeg aufrufen, aber es wäre wahrscheinlich am besten, wenn Sie zu einem Mechanismus wechseln würden, mit dem Sie die Argumente selbst in ein Array aufteilen können, anstatt auf einige automatisierte Funktionen zu zählen, mit denen Probleme auftreten könnten der Versuch eines zitierten Raumes. –