Неуместные водяные знаки FFmpeg

Я пытаюсь добавить водяной знак значка (стрелка, указывающая вправо) в верхний правый угол двух разных видео с помощью FFmpeg. Оба видео имеют одинаковое разрешение (1280x720), и я использую одну и ту же команду для добавления значка. В одном видео значок появляется в правильном месте, а в другом видео значок появляется в правом нижнем углу.

Кто-нибудь сталкивался с такой же проблемой?

Скриншот с правильными и неуместными водяными знаками

Ответы (1)

Изображение слева представляет собой портретное видео, сохраненное как альбомное, но с тегом поворота. Таким образом, координаты изображения наложения вступают в силу относительно сохраненного представления. В таких случаях вы должны заранее повернуть видео, 1) добавив фильтр транспонирования перед наложением 2) отключив автоповорот на входном видео * и 3) вручную сбросив тег поворота на выходе, например

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

* не требуется, если ваш ffmpeg выпущен в апреле 2015 года или ранее.


Чтобы проверить тег поворота для видео, вы можете запустить

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

Вы получите значение угла. Если это 90, используйте transpose=1. Если это 270, используйтеtranspose=2

У меня недостаточно представителей, чтобы написать комментарий напрямую, все равно спасибо. Однако, когда я запускаю "ffprobe -input.mp4 -show_entries stream_tags=rotate -v 0 -of compact=p=0:nk=1" , мой журнал печатает, что «Проверка команды не удалась. Косая черта в выходном пути не выглядит так: compact=p=0:nk=1 недействительна». Я не знаю, в чем проблема, не могли бы вы указать на это мне?
Похоже, вы на Android и используете обертку. Вы должны спросить в Stack Overflow, как выполнить команду на Android.