推薦一個開源的音視頻編輯、視頻剪輯框架

RxFFmpeg

RxFFmpeg 是基於 ( FFmpeg 4.0 + X264 + mp3lame + fdk-aac ) 編譯的適用於 Android 平臺的音視頻編輯、視頻剪輯的快速處理框架,包含如下功能(視頻拼接,轉碼,壓縮,裁剪,片頭片尾,分離音視頻,變速,添加靜態貼紙和gif動態貼紙,添加字幕,添加濾鏡,添加背景音樂,加速減速視頻,倒放音視頻,音頻裁剪,變聲,混音,圖片合成視頻,視頻解碼圖片等主流特點功能……ubuntu

編譯環節

編譯環境

win10 + ubuntu 16.04 + gcc + make 主要依賴如下庫進行編譯bash

編譯腳本

編譯腳本、JNI代碼整理後上傳框架

特點功能

  • 支持任何FFmpeg命令執行異步

  • 支持FFmpeg命令執行進度回調ide

  • 支持中斷FFmpeg命令post

  • 支持同步/異步執行ui

  • 支持開啓/關閉 debug 模式編碼

  • 支持硬件加速,使編解碼處理更快spa

  • 代碼封裝成SDK的方式,方便依賴使用debug

  • 支持把FFmpeg的各子模塊libavutil libavcodec libavformat libavdevice libavfilter libswscale libswresample libpostproc 最終打包成一個libffmpeg-core.so核心庫方便依賴使用,無需導入七八個so庫

  • 支持libx264編碼庫,能夠使壓縮後的視頻體積變的極小,清晰度還保持着很高清,簡單的壓縮命令: ffmpeg -y -i /storage/emulated/0/1/input.mp4 -b 2097k -r 30 -vcodec libx264 -preset superfast /storage/emulated/0/1/result.mp4

  • 支持添加 mp三、aac、wav 等主流格式的背景音樂

支持主流視頻格式轉換,如: avi > mp4 > avi

使用方式

一、開啓/關閉 debug 模式,建議在 Application 初始化調用

RxFFmpegInvoke.getInstance().setDebug(true); 二、FFmpeg 命令執行 (RxJava2優雅的調用)

String text = "ffmpeg -y -i /storage/emulated/0/1/input.mp4 -vf boxblur=25:5 -preset superfast /storage/emulated/0/1/result.mp4";

String[] commands = text.split(" ");

RxFFmpegInvoke.getInstance().runCommandRxJava(commands).subscribe(new RxFFmpegSubscriber() {
            @Override
            public void onFinish() {
                if (mProgressDialog != null)
                    mProgressDialog.cancel();
                showDialog("處理成功");
            }

            @Override
            public void onProgress(int progress) {
                if (mProgressDialog != null)
                    mProgressDialog.setProgress(progress);
            }

            @Override
            public void onCancel() {
                if (mProgressDialog != null)
                    mProgressDialog.cancel();
                showDialog("已取消");
            }

            @Override
            public void onError(String message) {
                if (mProgressDialog != null)
                    mProgressDialog.cancel();
                showDialog("出錯了 onError:" + message);
            }
        });
複製代碼

三、FFmpeg 命令執行 (同步方式)

RxFFmpegInvoke.getInstance().runCommand(command, null);
複製代碼

四、中斷 FFmpeg 命令

RxFFmpegInvoke.getInstance().exit();
複製代碼

好了,今天就給你們介紹這麼多,有什麼想方法或者建議歡迎留言評論。

以爲文章還不錯喜歡的點個贊給個喜歡鼓勵下唄~

相關文章
相關標籤/搜索