后台合成

初始化 MediaProcessSession

ProcessConfig.Builder builder = new ProcessConfig.Builder();
mMediaProcessSession = new MediaProcessSession(context, builder.build());
// 设置本地视频路径
mMediaProcessSession.setMediaFilePath(videoPath);
// 设置合成目标文件的地址
mMediaProcessSession.configMp4Saver(true, mp4SavedPath);
mMediaProcessSession.setProcessStateListener(new MediaProcessSession.ProcessStateListener() {
    @Override
    public void onProgress(int progress) {
        // show progress for user
    }

    @Override
    public void onFinish(boolean isSuccess, int what) {
        if (isSuccess) {
            processTint.set("合成成功!");
        } else {
            processTint.set("合成失败!错误码:" + what);
            new File(mp4SavedPath).delete();
        }
    }
});
// 设置预览区间,单位为微妙(us)
// mMediaProcessSession.configMediaFileClip(long clipStartInUSec, long clipDurationInUSec)

使用 MediaProcessSession

// 开始
mMediaProcessSession.start();
// 停止
mMediaProcessSession.stop();

设置滤镜

beautyFilter = new GPUImageSkinBeautyFilter();
colorAdjustFilter = new ColorAdjustFilter(context);
customFilter = new GPUImageFilter();
filterList.add(beautyFilter);
filterList.add(colorAdjustFilter);
filterList.add(customFilter);
mMediaProcessSession.setGPUImageFilters(filterList);

具体滤镜参数、取值范围的使用方法详见选择滤镜参数

设置背景音乐

// 设置背景音乐
mMediaProcessSession.configBackgroundMusic(boolean enableBGM, String bgmPath, boolean isLooping)
// 设置背景乐区间,单位为微妙(us)
mMediaProcessSession.configBackgroundMusicClip(long clipStartInUSec, long clipDurationInUSec)

设置音量增益

// 设置主视频的音量增益,取值[0f, 1f]
mMediaProcessSession.setMasterTrackGain(float gain);
// 设置背景音音量增益,取值[0f, 1f]
mMediaProcessSession.setBGMTrackGain(float gain);

更多详情,参见demo中的ProcessViewModel类。