代码之家  ›  专栏  ›  技术社区  ›  Vivek Mishra

使用ffmpeg为视频上覆盖的gif添加透明度

  •  0
  • Vivek Mishra  · 技术社区  · 6 年前

    我试图在选定的视频中添加一种复古的效果。为了达到效果,我使用了一个复古效果的gif文件,并使用下面的方法成功地将其作为覆盖添加到我的视频中。

    ffmpeg.execute(new String[]{"-i",uri,"-ignore_loop", "1","-i",overlayUri ,"-filter_complex","[0:v]scale="+width+":"+height+"[v1];[1:v]scale="+width+":"+height+"[v2];[v1][v2]overlay",outputPath}, new ExecuteBinaryResponseHandler() {
                    @Override
                    public void onStart() {
                        Log.d("success", "process complete");
                    }
    
                    @Override
                    public void onProgress(String message) {
                        Log.d("progress", message);
                    }
    
                    @Override
                    public void onFailure(String message) {
                        Log.d("failure", message);
                    }
    
                    @Override
                    public void onSuccess(String message) {
                        Log.d("success", "process complete");
                    }
    
                    @Override
                    public void onFinish() {
                    }
                });
                break;
    

    2 回复  |  直到 6 年前
        1
  •  0
  •   Salman Khakwani    6 年前

    您可以尝试以下命令:

    % ffmpeg -v warning -ss 45 -t 2 -i big_buck_bunny_1080p_h264.mov -vf scale=300:-1 -gifflags -transdiff -y bbb-notrans.gif
    % ffmpeg -v warning -ss 45 -t 2 -i big_buck_bunny_1080p_h264.mov -vf scale=300:-1 -gifflags +transdiff -y bbb-trans.gif
    % ls -l bbb-*.gif
    -rw-r--r-- 1 ux ux 1.1M Mar 15 22:50 bbb-notrans.gif
    -rw-r--r-- 1 ux ux 369K Mar 15 22:50 bbb-trans.gif
    


    http://blog.pkh.me/p/21-high-quality-gif-with-ffmpeg.html

    我希望这有帮助。

        2
  •  0
  •   Vivek Mishra    6 年前

    浪费了很多时间后,我意识到GIF一旦创建就无法编辑。因此,我选择在一个视频上覆盖另一个视频,并为覆盖视频增加透明度。 我使用以下命令实现了它

    String[] cmd = new String[]{"-i", uri,
                        "-i",overlayUri,"-filter_complex","[1:v][0:v]scale2ref[ua][b];[ua]setsar=1,format=yuva444p,colorchannelmixer=aa=0.5[u];[b][u]overlay", outputPath};
    

    uri 是我的原创视频, 输出路径 是存储文件的路径。

    推荐文章