Я использую следующую команду для наложения данного изображения на видео:
ffmpeg -y \
-i "Input.mp4" \
-loop 1 -t 17 -i "overlay.png" \
-filter_complex \
"[1:v]fade=in:st=3:d=1:alpha=1, \
fade=out:st=10:d=1:alpha=1 \
[ovr1]; \
[0][ovr1] overlay=(W-w)/2:H-h-10" \
-codec:a copy \
"Output.mp4"
Команда работает, но приводит к наложению с шириной, отличной от входной overlay.png
, она имеетхотя такая же высота.
Вот overlay.png
:
А вот как это выглядит в видео после наложения FFmpeg:
overlay.png
размер составляет 274x79
, но в видео это становится примерно 324x79
.
У меня естьпроверил этот вопрос ( размер оверлея ffmpeg ), который предлагает использовать scale
, я изменил команду на следующее:
ffmpeg -y \
-i "Input.mp4" \
-loop 1 -t 17 -i "overlay.png" \
-filter_complex \
"[1:v]scale=274:79 \
fade=in:st=3:d=1:alpha=1, \
fade=out:st=10:d=1:alpha=1 \
[ovr1]; \
[0][ovr1] overlay=(W-w)/2:H-h-10" \
-codec:a copy \
"Output.mp4"
Но результаты все те же (большая ширина), и я смог подтвердить, что scale
действительно работает, отредактировав его в scale=400:400
, чтобы проверить его эффект.
Что вызвало это и как я могу сохранить исходный размер overlay.png
после наложенияэто на видео?
Редактировать:
ffmpeg -i Input.mp4
показывает следующее:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Input.mp4':
Metadata:
major_brand : mp42
minor_version : 512
compatible_brands: isomiso2avc1mp41
creation_time : 2018-12-30T12:38:54.000000Z
encoder : HandBrake 1.1.0 2018040700
Duration: 00:00:17.45, start: 0.000000, bitrate: 1179 kb/s
Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 720x480 [SAR 32:27 DAR 16:9], 1174 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 180k tbc (default)
Metadata:
creation_time : 2018-12-30T12:38:54.000000Z
handler_name : VideoHandler