Как загрузить GIF постоянно на видео в Android с помощью FFMPEG?

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

"-y", "-i", inputvideopath, "-i", inputgifpath, "-filter_complex", "[1:v]scale=1080:720[ovrl];[0:v][ovrl]overlay=0:0", "-frames:v", "600", "-codec:a", "copy", "-codec:v", "libx264", "-preset", "ultrafast", finalvideoPath

Я также попытался с {"-ignore_loop", "0"}, но видео не создается в точное время, оно создается с дополнительным временем, а GIF также зацикливается непрерывно.

"-y", "-i", inputvideopath, "-ignore_loop", "0", "-i", inputgifpath, "-filter_complex", "[1:v]scale=1080:720[ovrl];[0:v][ovrl]overlay=0:0", "-frames:v", "600", "-codec:a", "copy", "-codec:v", "libx264", "-preset", "ultrafast", finalvideoPath

Всего 1 ответ


попробуйте эту команду

String commnad[] = {
    "-y"
    , "-i"
    , inputVideo
    , "-ss"
    , "0"
    , "-t"
    , videoLength
    , "-ignore_loop"
    , "0"
    , "-i"
    , gifPath
    , "-filter_complex"
    , "[1:v]format=yuva444p,rotate=" + gifRotation + "*PI/180:c=none:ow=rotw(" + gifRotation + "*PI/180):oh=roth(" + gifRotation + "*PI/180),scale=h=" + gifHeight + ":w=" + gifWidth + ":[overlay_scaled],[0:v][overlay_scaled]overlay=eval=init:x=" + gifXPositionOnVideo  + ":y=" + gifYPositionOnVideo
    , "-frames:v"
    , "900"
    , "-codec:a"
    , "copy"
    , "-codec:v"
    , "libx264",
    outputVideo

};

если вы не хотите вращать gif, замените строку после "filter_complex" на

"[1:v]format=yuva444p,scale=h=" + gifHeight + ":w=" + ifWidth + ":[overlay_scaled],[0:v][overlay_scaled]overlay=eval=init:x=" + gifXPositionOnVideo  + ":y=" + gifYPositionOnVideo

это работает идеально для меня с бесконечным воспроизведением GIF (до конца видео) и конкретной позиции GIF на видео

Надеюсь, эта работа для вас тоже :)


Есть идеи?

10000