1. 程式人生 > >android 視訊編輯框架(分割,裁剪,旋轉,合併,新增logo,背景音樂等等)

android 視訊編輯框架(分割,裁剪,旋轉,合併,新增logo,背景音樂等等)

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) {
				//這裡獲取處理進度
	      }
});