Как непрерывно загружать GIF на видео в android, используя FFMPEG? - PullRequest
1 голос
/ 16 января 2020

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

"-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_l oop", "0"}, но видео не создается в точное время, оно создается с дополнительным временем и GIF также l oop непрерывно.

"-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 Ответ

2 голосов
/ 16 января 2020

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

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 (до конца видео) и указать c положение GIF на видео

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

...