android 視訊編輯框架(分割,裁剪,旋轉,合併,新增logo,背景音樂等等)
阿新 • • 發佈:2019-01-27
EpMedia
Android上基於FFmpeg開發的視訊處理框架,簡單易用,體積小,幫助使用者快速實現視訊處理功能。包含以下功能:剪輯,裁剪,旋轉,映象,合併,分離,變速,新增LOGO,新增濾鏡,新增背景音樂。
使用方法:
- build.gradle裡新增:
allprojects { repositories { ... maven { url 'https://jitpack.io' } } }
- 新增gradle依賴:
compile 'com.github.yangjie10930:EpMedia:v0.9.2'
單個視訊處理:
- 建立待處理視訊:
EpVideo epVideo = new EpVideo(url);
- 剪輯
//一個引數為剪輯的起始時間,第二個引數為持續時間,單位:秒 epVideo.clip(1,2);//從第一秒開始,剪輯兩秒
- 裁剪
//引數分別是裁剪的寬,高,起始位置X,起始位置Y epVideo.crop(480,360,0,0);
- 旋轉和映象
//第一個引數為旋轉角度,第二個引數為是否映象,僅支援90,180,270度旋轉 epVideo.rotation(90,true);
- 新增文字
//引數分別是新增位置的X,Y座標,文字的字號(單位px),文字顏色,字型檔案的路徑,內容 epVideo.addText(10,10,35,"red",ttfPath,text);
- 新增logo
//新增圖片類 //引數為圖片路徑,X,Y,圖片的寬,高,是否是動圖(僅支援png,jpg,gif圖片,如果是gif圖片,最後一個引數為true)EpDraw epDraw = new EpDraw(filePath,10,10,50,50,false); epVideo.addDraw(epDraw);
- 新增自定義濾鏡
//自定義濾鏡,ffmpeg命令支援的濾鏡都支援 epVideo.addFilter(filter);
- 處理單個視訊
EpVideo epVideo = new EpVideo(url); EpEditor epEditor = new EpEditor(this); //輸出選項,引數為輸出檔案路徑(目前僅支援mp4格式輸出) EpEditor.OutputOption outputOption = new EpEditor.OutputOption(outFile); outputOption.width = 480;//輸出視訊寬,如果不設定則為原始視訊寬高 outputOption.height = 360;//輸出視訊高度 outputOption.frameRate = 30;//輸出視訊幀率,預設30 outputOption.bitRate = 10;//輸出視訊位元速率,預設10 epEditor.exec(epVideo, outputOption, new OnEditorListener() { @Override public void onSuccess() { } @Override public void onFailure() { }
@Override public void onProgress(float progress) { //這裡獲取處理進度 }});
- 新增背景音樂
EpEditor epEditor = new EpEditor(this); //引數分別是視訊路徑,音訊路徑,輸出路徑,原始視訊音量(1為100%,0.7為70%,以此類推),新增音訊音量 epEditor.music(videoPath, audioPath, outfilePath, 1, 0.7, new OnEditorListener() { @Override public void onSuccess() { } @Override public void onFailure() { }
@Override public void onProgress(float progress) { //這裡獲取處理進度 }});
多個視訊處理&合併
- 合併視訊
ArrayList<EpVideo> epVideos = new ArrayList<>(); epVideos.add(new EpVideo(url));//視訊1 epVideos.add(new EpVideo(url2));//視訊2 epVideos.add(new EpVideo(url3));//視訊3 EpEditor epEditor = new EpEditor(this); //輸出選項,引數為輸出檔案路徑(目前僅支援mp4格式輸出) EpEditor.OutputOption outputOption = new EpEditor.OutputOption(outFile); outputOption.width = 480;//輸出視訊寬,預設480 outputOption.height = 360;//輸出視訊高度,預設360 outputOption.frameRate = 30;//輸出視訊幀率,預設30 outputOption.bitRate = 10;//輸出視訊位元速率,預設10 epEditor.merge(epVideos, outputOption, new OnEditorListener() { @Override public void onSuccess() { } @Override public void onFailure() { }
@OverridepublicvoidonProgress(floatprogress) { //這裡獲取處理進度 }});
- 無損合併視訊(對視訊格式嚴格,需要解析度,幀率,位元速率都相同)
ArrayList<EpVideo> epVideos = new ArrayList<>(); epVideos.add(new EpVideo(url));//視訊1 epVideos.add(new EpVideo(url2));//視訊2 epVideos.add(new EpVideo(url3));//視訊3 EpEditor epEditor = new EpEditor(this); epEditor.mergeByLc(epVideos, new EpEditor.OutputOption(outFile), new OnEditorListener() { @Override public void onSuccess() { } @Override public void onFailure() { }
@Override public void onProgress(float progress) { //這裡獲取處理進度 }});