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.
Odpowiedzi:
Możesz użyć
scale2ref
filtru, który może zmienić rozmiar jednego wejścia, aby dopasować wejście referencyjne.Szablon jest
źródło
-map [out]
.-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-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]"