Das Ausgabebild sollte wie folgt aussehen:
Mein Befehl ist:
String[] command1211 = {"-i", inputPath_audio.mp3,
"-preset", "ultrafast",
"-filter_complex",
"[0:a]showspectrum=s=1280x720,format=yuv420p[v]",
"-map", "[v]", "-map", "0:a", "-c:v", "libx264", "-c:a",
"copy", filePath.mp4};
Mit diesem Befehl möchte ich unten rechts ein Wasserzeichen hinzufügen.
Und das ist mein Befehl für das Wasserzeichen:
„[1] Maßstab=70:70 [tmp]; [0][tmp]Overlay=main_w-Overlay_w-10:main_h-Overlay_h-10“
Ich habe es mit der folgenden Abfrage erreicht:
String[] command12111 = {
"-i", inputPath_audio,
"-i",imagepath.getAbsolutePath(),
"-preset", "ultrafast",
"-filter_complex",
"[0:a]showspectrum=s=1280x720[spec];
[1]scale=70:70[watermark];[spec][watermark]overlay=main_w-
overlay_w-10:main_h-overlay_h-10[output]",
"-map", "[output]", "-map", "0:a", "-c:v", "libx264",
"-c:a",
"copy", filePath
};
Antwort1
In Ihrem ursprünglichen Befehl fehlen die erforderlichen Elemente zum Überlagern eines Wasserzeichens:
- Das Wasserzeichenbild als Eingabe
- Der Overlay-Filter zum Hinzufügen des Wasserzeichens
Sie benötigen also einen weiteren -i
für den Wasserzeicheneingang und einen overlay
Filter, der den Spektralfilterausgang mit dem Bildeingang verbindet.
ffmpeg \
-i audio_path \
-i image_path \
-filter_complex \
"[0:a]showspectrum=s=1280x720[spec];
[1]scale=70:70[watermark];
[spec][watermark]overlay=main_w-overlay_w-10:main_h-overlay_h-10[output]
" \
-map "[output]" -map 0:a \
output.mp4
Wichtig hierbei ist, dass Du Dir die Beschriftungen der Filtereingänge (0 und 1 für die jeweils zwei Eingänge) und -ausgänge ( spec
, watermark
, …) merkst. Diese verwendest Du, um die verschiedenen Filter anzuschließen.