Хорошо, я отвечу на свой вопрос.Первая часть, неспособность достичь прозрачности gif, такая глупая проблема !!GIF, который я использовал, не был прозрачным, и я не понял !!OMG, подумал я, так что это первая вещь, которую нужно проверять всякий раз, когда у вас есть проблема с прозрачностью.
Вторая, зацикливая gif до конца видео, я не смог сделать это с -ignore_loop 0 вдольс кратчайшим = 1, но я сделал -ignore_loop 0 и -кадры: v 900 , и это сработало как талисман.
То, что не работало, не было-ignore_loop 0, но самый короткий = 1, и поэтому ffmpeg никогда не заканчивал кодирование, но если вы установите его для завершения с определенным количеством кадров, которое решает проблему.
900 происходит из видео 30 кадров в секунду x 30 секунд.
В итоге мои полные параметры командной строки ffmpeg оказались такими:
ffmpeg -y -i xxx.mp4 -ignore_loop 0 -i xxx.gif -filter_complex "[1:v]scale=1080:1920[ovrl];[0:v][ovrl]overlay=0:0" -frames:v 900 -codec:a copy -codec:v libx264 -max_muxing_queue_size 2048 video.mp4