Android 使用FFmpeg连续播放gif图像

Android 使用FFmpeg连续播放gif图像,android,ffmpeg,android-ffmpeg,Android,Ffmpeg,Android Ffmpeg,我正在尝试在图像上放置多个gif,并使用FFmpeg保存为gif。我已经实现了多个gif的放置,但所有gif都不会连续播放,即第二个gif仅重复一次第一个gif完成并重新开始。第二个gif仅在第一个gif完成后停止并重新开始 command_try[0]="-i"; command_try[1]=input; command_try[2]="-i"; command_try[3]=gifthumbnail; command_try[4]="-i"; com

我正在尝试在图像上放置多个gif,并使用FFmpeg保存为gif。我已经实现了多个gif的放置,但所有gif都不会连续播放,即第二个gif仅重复一次第一个gif完成并重新开始。第二个gif仅在第一个gif完成后停止并重新开始

command_try[0]="-i";
    command_try[1]=input;
    command_try[2]="-i";
    command_try[3]=gifthumbnail;
    command_try[4]="-i";
    command_try[5]=gifthumbnail;
    command_try[6]="-i";
    command_try[7]=thumbnail;
    command_try[8]="-i";
    command_try[9]=thumbnail2;
    command_try[10]="-filter_complex";
    command_try[11]="[0:v]scale=0:0[base];[1:v]scale=300:-1[img1];[2:v]scale=720:-1290[img2];[3:v]scale=80:-1[img3];[4:v]scale=50:-1[img4];[img1]rotate=45:c=black@0:ow=rotw(45):oh=roth(45)[r1];[img2]rotate=0:c=black@0:ow=rotw(0):oh=roth(0)[r2];" +
            "[img3]rotate=0:c=black@0:ow=rotw(0):oh=roth(0)[r3];[img4]rotate=0:c=black@0:ow=rotw(0):oh=roth(0)[r4];[base][r1]overlay=100:70[tmp1];"+
            "[tmp1][r2]overlay=55:55[tmp2];[tmp2][r3]overlay=65:65[tmp3];[tmp3][r4]overlay=30:30";

    command_try[12]="-preset";
    command_try[13]="veryfast";
    command_try[14]="/storage/emulated/0/Pictures/imggif.gif";

由于我最近开始使用FFmpeg,我需要帮助连续独立播放gif。

使用
-stream\u loop-1
输入选项,并将
shortest=1
选项添加到任何带有无限循环gif的叠加中作为输入

简化示例:

ffmpeg-i video.mp4-stream\u loop-1-i 1.gif-filter\u complex“overlay=shortest=1:format=auto”output.mp4
要避免黄线,请添加和过滤器:

ffmpeg-i video.mp4-stream_loop-1-i 1.gif-filter_complex“overlay=shortest=1:format=auto,split[s0][s1];[s0]paletegen[p];[s1][p]paletteuse“output.gif

您正在使用的FFmpeg 3.0.1非常旧,因此您必须将
auto
更改为
rgb

当我在视频上叠加gif时,我正在使用stream_loop属性,它工作得非常好。但我现在正在尝试在图像上叠加多个gif,并且需要独立于其他gif连续循环。@ShwetaPatil Add在每次GIF输入之前都会有一个
-stream\u循环
。好的,我也会尝试对图像使用-stream\u循环。但这不会增加保存图像的处理时间吗gif@ShwetaPatil这取决于
video.mp4
的长度。确定。因此,我将限制视频长度,这样大的视频将不会被选中,处理将不会受到太大影响。