接口 Transform

  • 所有已知实现类:
    Transformer

    public interface Transform
    定义媒体文件转换功能
    作者:
    💎 Li Junchao
    • 方法详细资料

      • addBGMusic

        FFmpegSession addBGMusic​(@NonNull
                                 String videoInput,
                                 @NonNull
                                 String musicInput,
                                 @IntRange(from=-1L)
                                 long startTimeMs,
                                 @FloatRange(from=0.0,to=2.0)
                                 float originVolume,
                                 @FloatRange(from=0.0,to=2.0)
                                 float bgmVolume,
                                 @NonNull
                                 String outputFile,
                                 @Nullable
                                 FFmpegSessionCompleteCallback completeCallback,
                                 @Nullable
                                 StatisticsCallback statisticsCallback)
        给视频文件在原音轨上添加背景音乐,同时可调整原音轨和背景应该的音量

        Note: 如果背景音乐时长小于视频文件,则背景音乐将会循环

        参数:
        videoInput - 输入视频文件(file,url)
        musicInput - 输入背景应该文件(file,url)
        startTimeMs - 从背景音乐的那个时间点开始,如果要从0开始,可以使用 0 or TIME_UNSET
        originVolume - 视频文件原音量的 倍率(0.0 ~ 2.0),设为0 or VALUE_UNSET,则为原始音量
        bgmVolume - 背景应该音量的 倍率(0.0 ~ 2.0),设为0 or VALUE_UNSET,则为原始音量
        outputFile - 输出的视频文件
        completeCallback - task完成的callback FFmpegSessionCompleteCallback
        statisticsCallback - task执行期间的callback StatisticsCallback
        返回:
        FFmpegSession - 本次任务的session,取消本次任务请参考 cancel(long)
        另请参阅:
        https://trac.ffmpeg.org/wiki/AudioVolume
      • addBGMusic

        FFmpegSession addBGMusic​(@NonNull
                                 android.content.Context context,
                                 @NonNull
                                 String videoInput,
                                 @NonNull
                                 String musicInput,
                                 @IntRange(from=-1L)
                                 long startTimeMs,
                                 @FloatRange(from=0.0,to=2.0)
                                 float originVolume,
                                 @FloatRange(from=0.0,to=2.0)
                                 float bgmVolume,
                                 @NonNull
                                 android.net.Uri outputFile,
                                 @Nullable
                                 FFmpegSessionCompleteCallback completeCallback,
                                 @Nullable
                                 StatisticsCallback statisticsCallback)
        给视频文件在原音轨上添加背景音乐,同时可调整原音轨和背景应该的音量

        Note: 如果背景音乐时长小于视频文件,则背景音乐将会循环

        参数:
        context - Context
        videoInput - 输入视频文件(file,url)
        musicInput - 输入背景应该文件(file,url)
        startTimeMs - 从背景音乐的那个时间点开始,如果要从0开始,可以使用 0 or TIME_UNSET
        originVolume - 视频文件原音量的 倍率(0.0 ~ 2.0),设为0 or VALUE_UNSET,则为原始音量
        bgmVolume - 背景应该音量的 倍率(0.0 ~ 2.0),设为0 or VALUE_UNSET,则为原始音量
        outputFile - 输出的视频文件
        completeCallback - task完成的callback FFmpegSessionCompleteCallback
        statisticsCallback - task执行期间的callback StatisticsCallback
        返回:
        FFmpegSession - 本次任务的session,取消本次任务请参考 cancel(long)
        另请参阅:
        https://trac.ffmpeg.org/wiki/AudioVolume
      • transcodeByX264

        FFmpegSession transcodeByX264​(@NonNull
                                      String inputFile,
                                      @IntRange(from=-1L)
                                      long startTimeMs,
                                      @IntRange(from=-1L)
                                      long durationMs,
                                      @X264Preset
                                      String preset,
                                      @IntRange(from=-1L,to=51L)
                                      int crf,
                                      @IntRange(from=-1L)
                                      int scaleWidth,
                                      @NonNull
                                      String outputFile,
                                      @Nullable
                                      FFmpegSessionCompleteCallback completeCallback,
                                      @Nullable
                                      StatisticsCallback statisticsCallback)
        视频转码
        preset
        PRESET_ULTRAFAST : 速度最快,压缩质量最低
        PRESET_MEDIUM : 默认值
        CRF
        CRF 的值 每 +6 ,大约缩小 一半的 bitRate 和 文件大小
        CRF 的值 每 -6 ,大约为原来 2被的 bitRate
        参数:
        inputFile - 输入文件(file,url)
        startTimeMs - 开始位置 ms,如果要从0开始,可以使用 TIME_UNSET
        durationMs - 转换时长 ms,如何要和源文件时长一致,可以使用 TIME_UNSET or TIME_END_OF_SOURCE
        preset - Transform.X264Preset,x264预设,速度和压缩率的平衡, PRESET_ULTRAFAST 最快压缩率最低;
        crf - (0~51), 0 为无损,51 质量最差。较低的值代表更改的质量。主观上合理的值应该在 17~28; 17~18在视觉上和源文件几乎无损; 你可以使用 -1 or SCALE_UNSET
        scaleWidth - 缩放width,请尽量使用偶数,如果要和源文件size保持一致,请使用 SCALE_UNSET
        outputFile - 输出文件,可以以支持h264的封装格式,比如 .mp4|mkv|mov|m4v 结尾
        completeCallback - task完成的callback FFmpegSessionCompleteCallback
        statisticsCallback - task执行期间的callback StatisticsCallback
        返回:
        FFmpegSession - 本次任务的session,取消本次任务请参考 cancel(long)
        另请参阅:
        https://trac.ffmpeg.org/wiki/Encode/H.264
      • transcodeByX264

        FFmpegSession transcodeByX264​(@NonNull
                                      android.content.Context context,
                                      @NonNull
                                      String inputFile,
                                      @IntRange(from=-1L)
                                      long startTimeMs,
                                      @IntRange(from=-1L)
                                      long durationMs,
                                      @X264Preset
                                      String preset,
                                      @IntRange(from=-1L,to=51L)
                                      int crf,
                                      @IntRange(from=-1L)
                                      int scaleWidth,
                                      @NonNull
                                      android.net.Uri outputFile,
                                      @Nullable
                                      FFmpegSessionCompleteCallback completeCallback,
                                      @Nullable
                                      StatisticsCallback statisticsCallback)
        视频转码
        preset
        PRESET_ULTRAFAST : 速度最快,压缩质量最低
        PRESET_MEDIUM : 默认值
        CRF
        CRF 的值 每 +6 ,大约缩小 一半的 bitRate 和 文件大小
        CRF 的值 每 -6 ,大约为原来 2被的 bitRate
        参数:
        context - Context
        inputFile - 输入文件(file,url)
        startTimeMs - 开始位置 ms,如果要从0开始,可以使用 TIME_UNSET
        durationMs - 转换时长 ms,如何要和源文件时长一致,可以使用 TIME_UNSET or TIME_END_OF_SOURCE
        preset - Transform.X264Preset,x264预设,速度和压缩率的平衡, PRESET_ULTRAFAST 最快压缩率最低;
        crf - (0~51), 0 为无损,51 质量最差。较低的值代表更改的质量。主观上合理的值应该在 17~28; 17~18在视觉上和源文件几乎无损; 你可以使用 -1 or SCALE_UNSET
        scaleWidth - 缩放width,请使用偶数,如果要和源文件size保持一致,请使用 SCALE_UNSET
        outputFile - 输出文件,可以以支持h264的封装格式,比如 .mp4|mkv|mov|m4v 结尾
        completeCallback - task完成的callback FFmpegSessionCompleteCallback
        statisticsCallback - task执行期间的callback StatisticsCallback
        返回:
        FFmpegSession - 本次任务的session,取消本次任务请参考 cancel(long)
        另请参阅:
        https://trac.ffmpeg.org/wiki/Encode/H.264
      • getFrameAtIndex

        FFmpegSession getFrameAtIndex​(@NonNull
                                      String inputFile,
                                      @IntRange(from=-1L)
                                      int frameIndex,
                                      @IntRange(from=-1L)
                                      int scaleWidth,
                                      @IntRange(from=0L,to=31L)
                                      int quality,
                                      @NonNull
                                      String outputFile,
                                      @Nullable
                                      FFmpegSessionCompleteCallback completeCallback)
        检索 指定的 frameIndex 的帧并保存文件
        参数:
        inputFile - 输入文件(file,url)
        frameIndex - 帧序号,从 0 开始,即媒体文件里的第几帧
        scaleWidth - 缩放width,请使用偶数,如果要和源文件size保持一致,请使用 SCALE_UNSET
        quality - 质量,如果outputFile是png文件,请设置 0 or VALUE_UNSET;主要针对jpg格式压缩质量(0~31),1质量最高 建议设置为 2
        outputFile - 输出文件,必须以 .jpg|png 结尾
        completeCallback - task完成的callback FFmpegSessionCompleteCallback
        返回:
        FFmpegSession - 本次任务的session,取消本次任务请参考 cancel(long)
        另请参阅:
        https://trac.ffmpeg.org/wiki/Encode/MPEG-4
      • getFrameAtIndex

        FFmpegSession getFrameAtIndex​(@NonNull
                                      android.content.Context context,
                                      @NonNull
                                      String inputFile,
                                      @IntRange(from=-1L)
                                      int frameIndex,
                                      @IntRange(from=0L)
                                      int scaleWidth,
                                      @NonNull
                                      android.net.Uri outputFile,
                                      @Nullable
                                      FFmpegSessionCompleteCallback completeCallback)
        检索 指定的 frameIndex 的帧并保存文件
        参数:
        context - Context
        inputFile - 输入文件(file,url)
        frameIndex - 帧序号,从 0 开始,即媒体文件里的第几帧
        scaleWidth - 缩放width,请使用偶数,如果要和源文件size保持一致,请使用 SCALE_UNSET
        outputFile - 输出文件,必须以 .jpg|png 结尾
        completeCallback - task完成的callback FFmpegSessionCompleteCallback
        返回:
        FFmpegSession - 本次任务的session,取消本次任务请参考 cancel(long)
        另请参阅:
        https://trac.ffmpeg.org/wiki/Encode/MPEG-4
      • getFrameAtTime

        FFmpegSession getFrameAtTime​(@NonNull
                                     String inputFile,
                                     @IntRange(from=-1L)
                                     long startTimeMs,
                                     @IntRange(from=-1L)
                                     int scaleWidth,
                                     @IntRange(from=0L,to=31L)
                                     int quality,
                                     @NonNull
                                     String outputFile,
                                     @Nullable
                                     FFmpegSessionCompleteCallback completeCallback)
        检索指定时间位置的帧
        参数:
        inputFile - 输入文件(file,url)
        startTimeMs - 开始位置 ms,如果要从0开始,可以使用 TIME_UNSET
        scaleWidth - 缩放width,请使用偶数,如果要和源文件size保持一致,请使用 SCALE_UNSET
        quality - 质量,如果outputFile是png文件,请设置 0 or VALUE_UNSET;主要针对jpg格式压缩质量(0~31),1质量最高 建议设置为 2
        outputFile - 输出文件,必须以 .jpg|png 结尾
        completeCallback - task完成的callback FFmpegSessionCompleteCallback
        返回:
        FFmpegSession - 本次任务的session,取消本次任务请参考 cancel(long)
        另请参阅:
        https://trac.ffmpeg.org/wiki/Encode/MPEG-4
      • getFrameAtTime

        FFmpegSession getFrameAtTime​(@NonNull
                                     android.content.Context context,
                                     @NonNull
                                     String inputFile,
                                     @IntRange(from=-1L)
                                     long startTimeMs,
                                     @IntRange(from=0L)
                                     int scaleWidth,
                                     @IntRange(from=0L,to=31L)
                                     int quality,
                                     @NonNull
                                     android.net.Uri outputFile,
                                     @Nullable
                                     FFmpegSessionCompleteCallback completeCallback)
        检索指定时间位置的帧
        参数:
        context - Context
        inputFile - 输入文件(file,url)
        startTimeMs - 开始位置 ms,如果要从0开始,可以使用 TIME_UNSET
        scaleWidth - 缩放width,请使用偶数,如果要和源文件size保持一致,请使用 SCALE_UNSET
        quality - 质量,如果outputFile是png文件,请设置 0 or VALUE_UNSET;主要针对jpg格式压缩质量(0~31),1质量最高 建议设置为 2
        outputFile - 输出文件,必须以 .jpg|png 结尾
        completeCallback - task完成的callback FFmpegSessionCompleteCallback
        返回:
        FFmpegSession - 本次任务的session,取消本次任务请参考 cancel(long)
        另请参阅:
        https://trac.ffmpeg.org/wiki/Encode/MPEG-4
      • toOggByOpusEnc

        FFmpegSession toOggByOpusEnc​(@NonNull
                                     android.content.Context context,
                                     @NonNull
                                     String inputFile,
                                     @NonNull
                                     android.net.Uri outputFile,
                                     @Nullable
                                     FFmpegSessionCompleteCallback completeCallback,
                                     @Nullable
                                     StatisticsCallback statisticsCallback)
        video 转换 audio track 通过 opus 编码封装 为 ogg,通过指定 startTimeMsdurationMs 可裁剪出想要的片段
        参数:
        context - Context
        inputFile - 输入文件(file,url)
        outputFile - 输出文件,必须以 .ogg 结尾
        completeCallback - task完成的callback FFmpegSessionCompleteCallback
        statisticsCallback - task执行期间的callback StatisticsCallback
        返回:
        FFmpegSession - 本次任务的session,取消本次任务请参考 cancel(long)
      • toOggByOpusEnc

        FFmpegSession toOggByOpusEnc​(@NonNull
                                     String inputFile,
                                     @IntRange(from=-1L)
                                     long startTimeMs,
                                     @IntRange(from=-1L)
                                     long durationMs,
                                     @NonNull
                                     String outputFile,
                                     @Nullable
                                     FFmpegSessionCompleteCallback completeCallback,
                                     @Nullable
                                     StatisticsCallback statisticsCallback)
        video 转换 audio track 通过 opus 编码封装 为 ogg,通过指定 startTimeMsdurationMs 可裁剪出想要的片段
        参数:
        inputFile - 输入文件(file,url)
        startTimeMs - 开始位置 ms,如果要从0开始,可以使用 TIME_UNSET
        durationMs - 转换时长 ms,如何要和源文件时长一致,可以使用 TIME_UNSET or TIME_END_OF_SOURCE
        outputFile - 输出文件,必须以 .ogg 结尾
        completeCallback - task完成的callback FFmpegSessionCompleteCallback
        statisticsCallback - task执行期间的callback StatisticsCallback
        返回:
        FFmpegSession - 本次任务的session,取消本次任务请参考 cancel(long)
      • toOggByOpusEnc

        FFmpegSession toOggByOpusEnc​(@NonNull
                                     android.content.Context context,
                                     @NonNull
                                     String inputFile,
                                     @IntRange(from=-1L)
                                     long startTimeMs,
                                     @IntRange(from=-1L)
                                     long durationMs,
                                     @NonNull
                                     android.net.Uri outputFile,
                                     @Nullable
                                     FFmpegSessionCompleteCallback completeCallback,
                                     @Nullable
                                     StatisticsCallback statisticsCallback)
        video 转换 audio track 通过 opus 编码封装 为 ogg,通过指定 startTimeMsdurationMs 可裁剪出想要的片段
        参数:
        context - Context
        inputFile - 输入文件(file,url)
        startTimeMs - 开始位置 ms,如果要从0开始,可以使用 TIME_UNSET
        durationMs - 转换时长 ms,如何要和源文件时长一致,可以使用 TIME_UNSET or TIME_END_OF_SOURCE
        outputFile - 输出文件,必须以 .ogg 结尾
        completeCallback - task完成的callback FFmpegSessionCompleteCallback
        statisticsCallback - task执行期间的callback StatisticsCallback
        返回:
        FFmpegSession - 本次任务的session,取消本次任务请参考 cancel(long)
      • videoToMp3

        FFmpegSession videoToMp3​(@NonNull
                                 android.content.Context context,
                                 @NonNull
                                 String inputFile,
                                 @IntRange(from=-1L)
                                 long startTimeMs,
                                 @IntRange(from=-1L)
                                 long durationMs,
                                 @NonNull
                                 android.net.Uri outputFile,
                                 @Nullable
                                 FFmpegSessionCompleteCallback completeCallback,
                                 @Nullable
                                 StatisticsCallback statisticsCallback)
        video 转换 audio track 为 mp3,通过指定 startTimeMsdurationMs 可裁剪出想要的片段
        参数:
        context - Context
        inputFile - 输入文件(file,url)
        startTimeMs - 开始位置 ms,如果要从0开始,可以使用 TIME_UNSET
        durationMs - 转换时长 ms,如何要和源文件时长一致,可以使用 TIME_UNSET or TIME_END_OF_SOURCE
        outputFile - 输出文件,必须以 .mp3 结尾
        completeCallback - task完成的callback FFmpegSessionCompleteCallback
        statisticsCallback - task执行期间的callback StatisticsCallback
        返回:
        FFmpegSession - 本次任务的session,取消本次任务请参考 cancel(long)
      • videoToGif

        FFmpegSession videoToGif​(@NonNull
                                 String inputFile,
                                 @IntRange(from=-1L)
                                 long startTimeMs,
                                 @IntRange(from=-1L)
                                 long durationMs,
                                 @IntRange(from=-1L)
                                 int scaleWidth,
                                 @NonNull
                                 String outputFile,
                                 @Nullable
                                 FFmpegSessionCompleteCallback completeCallback,
                                 @Nullable
                                 StatisticsCallback statisticsCallback)
        video 转 GIF
        输出文件默认选项:
        1. 输出文件帧率 8
        2. 可以截取片段,通过指定 开始时间(startTimeMs) 和 持续时长(durationMs) 参数
        3. 可同时缩放大小,通过指定scaleWidth参数,高度按原分辨率大小自适应
        参数:
        inputFile - 输入文件(file,url)
        startTimeMs - 开始位置 ms,如果要从0开始,可以使用 TIME_UNSET
        durationMs - 转换时长 ms,如何要和源文件时长一致,可以使用 TIME_UNSET or TIME_END_OF_SOURCE
        scaleWidth - 缩放width,请使用偶数,如果要和源文件size保持一致,请使用 SCALE_UNSET
        outputFile - 输出文件,必须以 .gif or .GIF 结尾
        completeCallback - task完成的callback FFmpegSessionCompleteCallback
        statisticsCallback - task执行期间的callback StatisticsCallback
        返回:
        FFmpegSession - 本次任务的session,取消本次任务请参考 cancel(long)
      • videoToGif

        FFmpegSession videoToGif​(@NonNull
                                 android.content.Context context,
                                 @NonNull
                                 String inputFile,
                                 @IntRange(from=-1L)
                                 long startTimeMs,
                                 @IntRange(from=-1L)
                                 long durationMs,
                                 @IntRange(from=-1L)
                                 int scaleWidth,
                                 @NonNull
                                 android.net.Uri outputFile,
                                 @Nullable
                                 FFmpegSessionCompleteCallback completeCallback,
                                 @Nullable
                                 StatisticsCallback statisticsCallback)
        video 转 GIF
        输出文件默认选项:
        1. 输出文件帧率 8
        2. 可以截取片段,通过指定 开始时间(startTimeMs) 和 持续时长(durationMs) 参数
        3. 可同时缩放大小,通过指定scaleWidth参数,高度按原分辨率大小自适应
        参数:
        context - Context
        startTimeMs - 开始位置 ms,如果要从0开始,可以使用 TIME_UNSET
        durationMs - 转换时长 ms,如何要和源文件时长一致,可以使用 TIME_UNSET or TIME_END_OF_SOURCE
        scaleWidth - 缩放width,如果要和源文件size保持一致,请使用 SCALE_UNSET
        outputFile - 输出文件,必须以 .gif or .GIF 结尾
        completeCallback - task完成的callback FFmpegSessionCompleteCallback
        statisticsCallback - task执行期间的callback StatisticsCallback
        返回:
        FFmpegSession - 本次任务的session,取消本次任务请参考 cancel(long)
      • cutVideo

        FFmpegSession cutVideo​(@NonNull
                               android.content.Context context,
                               @NonNull
                               String inputFile,
                               @IntRange(from=-1L)
                               long startTimeMs,
                               @IntRange(from=-1L)
                               long durationMs,
                               @NonNull
                               android.net.Uri outputFile,
                               @Nullable
                               FFmpegSessionCompleteCallback completeCallback,
                               @Nullable
                               StatisticsCallback statisticsCallback)
        裁剪 Video 视频文件
        Note:此裁剪将会重新编码
        1. 此裁剪指定了 x264 编码,所以,输出文件format请指定.mp4
        2. 如果媒体文件较长,请注意内存使用
        参数:
        context - Context
        inputFile - 输入文件(file,url)
        startTimeMs - 开始位置 ms,如果要从0开始,可以使用 0 or TIME_UNSET
        durationMs - 裁剪时长 ms,如何要和源文件时长一致,可以使用 TIME_UNSET or TIME_END_OF_SOURCE
        outputFile - 输出文件的 Uri
        completeCallback - task完成的callback FFmpegSessionCompleteCallback
        statisticsCallback - task执行期间的callback StatisticsCallback
        返回:
        FFmpegSession - 本次任务的session,取消本次任务请参考 cancel(long)
      • cutMedia

        FFmpegSession cutMedia​(@NonNull
                               String inputFile,
                               @IntRange(from=-1L)
                               long startTimeMs,
                               @IntRange(from=-1L)
                               long durationMs,
                               @NonNull
                               String outputFile,
                               @Nullable
                               FFmpegSessionCompleteCallback completeCallback,
                               @Nullable
                               StatisticsCallback statisticsCallback)
        裁剪媒体文件(音频或者视频)
        Note:此剪切采样copy不re encode
        1. 速度快,但结尾有可能不准确
        参数:
        inputFile - 输入文件(file、Uri)
        startTimeMs - 开始裁剪时间position,单位 毫秒 ms, 如果要从0开始,可以使用 0 or TIME_UNSET
        durationMs - 时长,单位 毫秒 ms,如何要和源文件时长一致,可以使用 TIME_UNSET or TIME_END_OF_SOURCE
        outputFile - 输出文件的绝对路径
        completeCallback - 任务完成后的callback FFmpegSessionCompleteCallback
        statisticsCallback - 任务执行期间的callback StatisticsCallback
        返回:
        FFmpegSession - 本次session
        另请参阅:
        Input seeking
      • cutMedia

        FFmpegSession cutMedia​(@NonNull
                               android.content.Context context,
                               @NonNull
                               String inputFile,
                               @IntRange(from=-1L)
                               long startTimeMs,
                               @IntRange(from=-1L)
                               long durationMs,
                               @NonNull
                               android.net.Uri outputFile,
                               @Nullable
                               FFmpegSessionCompleteCallback completeCallback,
                               @Nullable
                               StatisticsCallback statisticsCallback)
        裁剪媒体文件(音频或者视频)
        参数:
        context - Context
        inputFile - 输入文件的绝对路径(file、Uri)
        startTimeMs - 开始裁剪时间position,单位 毫秒 ms,如果要从0开始,可以使用 0 or TIME_UNSET
        durationMs - 时长,单位 毫秒 ms,如何要和源文件时长一致,可以使用 TIME_UNSET or TIME_END_OF_SOURCE
        outputFile - 输出文件的 Uri
        completeCallback - 任务完成后的callback FFmpegSessionCompleteCallback
        statisticsCallback - 任务执行期间的callback StatisticsCallback
        返回:
        FFmpegSession - 本次session
        另请参阅:
        Input seeking
      • generateVideoFromImage

        FFmpegSession generateVideoFromImage​(@NonNull
                                             String image1Path,
                                             @IntRange(from=5L,to=30L)
                                             int frameRate,
                                             @IntRange(from=1000L)
                                             long duration,
                                             @IntRange(from=-1L)
                                             int scaleWidth,
                                             @Nullable
                                             String bgMusicPath,
                                             @NonNull
                                             String outputFile,
                                             @Nullable
                                             FFmpegSessionCompleteCallback completeCallback,
                                             @Nullable
                                             StatisticsCallback statisticsCallback)
        单张 图片 生成视频文件,并可以指定 背景音乐
        参数:
        image1Path - 输入图片文件的路径,可以是网络图片
        frameRate - 生成文件的帧率,Range(5,30)
        duration - 生成的视频文件时长,单位 ms, 最短 1000ms
        scaleWidth - 缩放width,请使用偶数,如果要和源文件size保持一致,请使用 SCALE_UNSET
        bgMusicPath - 背景音乐, null 无背景音乐
        outputFile - 输出文件的 绝对路径
        completeCallback - 任务完成后的callback FFmpegSessionCompleteCallback
        statisticsCallback - 任务执行期间的callback StatisticsCallback
        返回:
        FFmpegSession - 本次session
        另请参阅:
        https://trac.ffmpeg.org/wiki/Slideshow
      • generateVideoFromImage

        FFmpegSession generateVideoFromImage​(@NonNull
                                             android.content.Context context,
                                             @NonNull
                                             String image1Path,
                                             @IntRange(from=5L,to=30L)
                                             int frameRate,
                                             @IntRange(from=1000L)
                                             long duration,
                                             @IntRange(from=-1L)
                                             int scaleWidth,
                                             @Nullable
                                             String bgMusicPath,
                                             @NonNull
                                             android.net.Uri outputFile,
                                             @Nullable
                                             FFmpegSessionCompleteCallback completeCallback,
                                             @Nullable
                                             StatisticsCallback statisticsCallback)
        单张 图片 生成视频文件,并可以指定 背景音乐
        参数:
        context - Context
        image1Path - 输入图片文件的路径,可以是网络图片
        frameRate - 生成文件的帧率,Range(5,30)
        duration - 生成的视频文件时长,单位 ms, 最短 1000ms
        scaleWidth - 缩放width,请使用偶数,如果要和源文件size保持一致,请使用 SCALE_UNSET
        bgMusicPath - 背景音乐, null 无背景音乐
        outputFile - 输出文件的 Uri
        completeCallback - 任务完成后的callback FFmpegSessionCompleteCallback
        statisticsCallback - 任务执行期间的callback StatisticsCallback
        返回:
        FFmpegSession - 本次session
        另请参阅:
        https://trac.ffmpeg.org/wiki/Slideshow
      • generateVideoFromImage

        FFmpegSession generateVideoFromImage​(@NonNull
                                             android.content.Context context,
                                             @NonNull
                                             List<ConcatFile> files,
                                             @IntRange(from=5L,to=30L)
                                             int frameRate,
                                             @IntRange(from=1L)
                                             int width,
                                             @IntRange(from=1L)
                                             int height,
                                             @Nullable
                                             String bgMusicPath,
                                             @NonNull
                                             android.net.Uri outputFile,
                                             @Nullable
                                             FFmpegSessionCompleteCallback completeCallback,
                                             @Nullable
                                             StatisticsCallback statisticsCallback)
        多张 图片 生成视频文件,可以指定每张图片的时长,并可以指定 背景音乐
        参数:
        context - Context
        files - 要拼接的文件列表
        frameRate - 生成文件的帧率,Range(5,30)
        width - 生成视频的分辨率 width
        height - 生成视频的分辨率 height
        bgMusicPath - 背景音乐, null 无背景音乐
        outputFile - 输出文件的 Uri
        completeCallback - 任务完成后的callback FFmpegSessionCompleteCallback
        statisticsCallback - 任务执行期间的callback StatisticsCallback
        返回:
        FFmpegSession - 本次session
        另请参阅:
        https://trac.ffmpeg.org/wiki/Slideshow, 基于FFmpeg的图片合成视频
      • fastStart

        FFmpegSession fastStart​(@NonNull
                                android.content.Context context,
                                @NonNull
                                android.net.Uri inputFile,
                                @NonNull
                                android.net.Uri outputFile,
                                @Nullable
                                FFmpegSessionCompleteCallback completeCallback,
                                @Nullable
                                StatisticsCallback statisticsCallback)
        使 mp4 文件在网络上播放时,能快速开始
        参数:
        context - Context
        inputFile - 输入文件的 Uri, 必须是 mp4 文件
        outputFile - 输出文件的 Uri
        completeCallback - 任务完成后的callback FFmpegSessionCompleteCallback
        statisticsCallback - 任务执行期间的callback StatisticsCallback
        返回:
        FFmpegSession - 本次session
      • getMediaFormat

        MediaInformation getMediaFormat​(String inputFile)
        获取媒体文件的format
        参数:
        inputFile - 媒体文件(file、Url)
        返回:
        MediaInformation - 媒体文件的 format
      • getVersion

        String getVersion()
        返回 版本信息
        返回:
        String - 版本信息
      • setLogLevel

        void setLogLevel​(Level logLevel)
        配置全局 FFmpeg log输出的level,默认 Level.AV_LOG_INFO
        参数:
        logLevel - Level
      • cancel

        void cancel​(long sessionId)
        终止正在执行的任务,此方法不会等待term终止完成,会立即返回
        参数:
        sessionId - AbstractSession.getSessionId()
      • cancel

        void cancel()
        发送 中断 信号,终止所有任务
      • enableDebug

        void enableDebug​(boolean enable)
        开启 or 关闭 Debug,true 则输出日志
        参数:
        enable - true or false