EpMedia
Android上基於FFmpeg開發的視頻處理框架,簡單易用,體積小,幫助使用者快速實現視頻處理功能。包含以下功能:剪輯,裁剪,旋轉,鏡像,合併,分離,變速,添加LOGO,添加濾鏡,添加背景音樂。
github地址:https://github.com/yangjie10930/EpMedia
使用方法:
- 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() {
}
@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);
epEditor.mergeByLc(epVideos, new EpEditor.OutputOption(outFile), new OnEditorListener() {
@Override
public void onSuccess() {
}
@Override
public void onFailure() {
}
@Override
public void onProgress(float progress) {
//這裏獲取處理進度
}
});