android 視頻編輯框架(分割,裁剪,旋轉,合併,添加logo,背景音樂等等)

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) {
				//這裏獲取處理進度
	      }
});
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章