Falsch platzierte FFmpeg-Wasserzeichen

Ich versuche, ein Wasserzeichen eines Symbols (ein Pfeil, der nach rechts zeigt) in die obere rechte Ecke von zwei verschiedenen Videos mit FFmpeg einzufügen. Beide Videos haben dieselbe Auflösung (1280 x 720) und ich verwende denselben Befehl, um das Symbol hinzuzufügen . In einem Video wird das Symbol an der richtigen Stelle angezeigt, in dem anderen Video jedoch in der rechten unteren Ecke.

Ist jemand auf das gleiche Problem gestoßen?

Screenshot von korrekten und falsch platzierten Wasserzeichen

Antworten (1)

Das Bild auf der linken Seite ist ein Video im Hochformat, das als Querformat gespeichert ist, jedoch mit einem Rotations-Tag. Die Überlagerungsbildkoordinaten werden also bezogen auf die gespeicherte Darstellung wirksam. In solchen Fällen sollten Sie das Video vorher drehen, indem Sie 1) den Transpositionsfilter vor dem Overlay hinzufügen, 2) die automatische Drehung für das Eingabevideo* deaktivieren und 3) das Rotations-Tag in der Ausgabe manuell zurücksetzen, z

ffmpeg -noautorotate -i input.mp4 -i arrow.png -filter_complex "[0]transpose=1[bg];[bg][1]overlay=X:Y" -metadata:s:v rotate=0 out.mp4

*nicht erforderlich, wenn Ihr ffmpeg von April 2015 oder früher ist.


Um das Rotations-Tag für ein Video zu überprüfen, können Sie ausführen

ffprobe input.mp4 -show_entries stream_tags=rotate -v 0 -of compact=p=0:nk=1

Sie erhalten einen Winkelwert. Wenn es 90 ist, verwenden Sie transpose=1. Wenn es 270 ist, verwenden Sietranspose=2

Ich habe nicht genug Repräsentanten, um direkt einen Kommentar zu schreiben, danke trotzdem. Wenn ich jedoch "ffprobe -input.mp4 -show_entries stream_tags=rotate -v 0 -of compact=p=0:nk=1" ausführe , gibt mein Protokoll aus, dass "Befehlsvalidierung fehlgeschlagen ist. Keine Schrägstriche im Ausgabepfad sehen aus wie: compact=p=0:nk=1 is not valid."Ich weiß nicht, was das Problem ist, können Sie es bitte darauf hinweisen mich?
Klingt so, als ob Sie auf Android sind und einen Wrapper verwenden. Sie sollten bei Stack Overflow nachfragen, wie Sie den Befehl auf Android ausführen.