FFMPEG: добавьте изображение фиксированного размера на видео, независимо от ширины и высоты видео (разрешение)

Это мой код, который добавляет изображение в видеоролики, работающие через PHP:

exec('ffmpeg -i input.mp4 -i logo.png -filter_complex "[0:v][1:v] overlay=10:10" -pix_fmt yuv420p -c:a copy output.mp4'); 

Он работает хорошо, но проблема в том, что изображение уменьшено или вверх, вверх по разрешению видео. Например, на следующих изображениях ширина логотипа составляет 50px но разрешение видео отличается:

введите описание изображения здесь

и этот

введите описание изображения здесь

Как я могу предотвратить масштабирование изображения вниз / вверх?


Обновить

Благодаря Мульвии он предложил эти коды

 ffmpeg -i input.mp4 -i logo.png -filter_complex "[1:v][0:v]scale2ref=(W/H)*ih/8:ih/8[wm][base];[base][wm]overlay=10:10" -pix_fmt yuv420p -c:a copy output.mp4 

а также

 ffmpeg -i input.mp4 -i logo.png -filter_complex "[1:v][0:v]scale2ref=(W/H)*ih/8:ih/8[wm][base];[wm]setsar=1[wmsar]; [base][wmsar]overlay=10:10" -pix_fmt yuv420p -c:a copy output.mp4 

который работает очень хорошо, но он не поддерживает соотношение сторон логотипа. Я пробовал этот код на двух видео с разным разрешением, и это результат

введите описание изображения здесь

и этот

введите описание изображения здесь

Возможно ли улучшить это решение?

Вы можете использовать фильтр scale2ref.

 ffmpeg -i input.mp4 -i logo.png -filter_complex "[1:v][0:v]scale2ref=(W/H)*ih/8/sar:ih/8[wm][base];[base][wm]overlay=10:10" -pix_fmt yuv420p -c:a copy output.mp4 

Это изменит размер логотипа на 1/8 высоты видео.

Вы должны заменить W/H на значения для изображения, например, если PNG равен 320×270, тогда он должен быть scale2ref=(320/270)*ih/8:ih/8