Skaluj znak wodny, aby dopasować go do różnych rozmiarów wideo

-1

Mam znak wodny.png, który został stworzony do nakładania filmów o szerokości 1280. Gdy używam wideo w innym rozmiarze, znak wodny jest całkowicie nieproporcjonalny.

Dlatego szukam pojedynczego polecenia, które może skalować znak wodny do oryginalnego rozmiaru wideo. Nie chcę zmieniać rozmiaru oryginalnego wideo.

To jest obecny format roboczy, którego używam, który działa dobrze z filmami o szerokości 1280. (znak wodny umieszczony w lewym dolnym rogu)

-i video.mp4 -vf "movie=watermark.png [watermark]; [in][watermark] overlay=1:main_h-overlay_h-1:enable=not(between'(t,30,210)') [out]"

Na marginesie, ponieważ znak wodny jest po prostu 15-literowym słowem, mógłbym również użyć tekstu w poleceniu, jeśli dzięki temu rozwiązanie byłoby mniej skomplikowane.

razz
źródło
Jaka jest rozdzielczość twojego znaku wodnego? I czy wszystkie filmy wideo 16: 9?
Gyan
Cześć, dzięki za pomoc! Znak wodny = 400 x 48. 90% filmów ma format 16: 9, więc można je wykorzystać jako standard.
razz

Odpowiedzi:

0

Możesz użyć scale2reffiltru, który może zmienić rozmiar jednego wejścia, aby dopasować wejście referencyjne.

Szablon jest

-i video.mp4 -filter_complex "movie=watermark.png[watermark];[watermark][0]scale2ref=400*iw/1280:48*iw/1280[wm][v];[wm]setsar=1[logo];[v][logo] overlay=1:main_h-overlay_h-1:enable=not(between'(t,30,210)') [out]"
Gyan
źródło
Otrzymuję błąd „Ten filtr nakłada się na filtr„ Brak nakładki filtru ”?
razz
Nie pokazałeś swojej pełnej komendy, ale powinieneś ją mieć -map [out].
Gyan
Pracował! -i in.mp4 -filter_complex "movie=logo.png[watermark];[watermark][0]scale2ref=400*iw/1280:48*iw/1280[wm][v];[wm]setsar=1[logo];[v][logo] overlay=1:main_h-overlay_h-1:enable=not(between'(t,30,210)')" out.mp4 Teraz próbuje uruchomić go za pomocą automatycznego skryptu za pomocą następującego polecenia (używanego w cms) $q = "$ffmpeg_path -i \"".$content_path."/".$row['orig_filename']."\" $ffmpeg_command \"$video_path/$subdir".$row['filename']."\""; Część $ ffmpeg_command jest dodawana do cms i wykonywana, jednak tutaj się nie udaje. Nie mogę zlokalizować, co robię źle ze skryptem
razz
Jaki jest ciąg $ ffmpeg_command?
Gyan
to jest część, do której dodałem polecenie. W tym przypadku -filter_complex "movie=/logo.png[watermark];[watermark][0]scale2ref=400*iw/1280:48*iw/1280[wm][v];[wm]setsar=1[logo];[v][logo] overlay=1:main_h-overlay_h-1:enable=not(between'(t,30,210)')[out]" Coś poszło nie tak z scale2ref, ponieważ kiedy używam poniższego polecenia (bez scale2ref) wszystko działa idealnie. -vf "movie=logo.png [watermark]; [in][watermark] overlay=1:main_h-overlay_h-1:enable=not(between'(t,30,210)') [out]"
razz