我想要合并两个或更多的视频文件(它们可能是两个mp4、两个3gp,或任何其他格式)。
我想要合并两个或更多的视频文件(它们可能是两个mp4、两个3gp,或任何其他格式)。
我将分享Java和Kotlin代码
内部使用FFmpeg,但它很轻便。将两个不同类型或编解码器、帧速率和比特率的视频合并的最简单方法是使用EpMedia库。
级别依赖
implementation 'com.github.yangjie10930:EpMedia:v0.9.5'
Kotlin 代码
val epVideos = ArrayList<EpVideo>()
epVideos.add(EpVideo("/storage/emulated/0/Contact/1.mp4")) // Video 1 Example
epVideos.add(EpVideo("/storage/emulated/0/Contact/2.mp4")) // Video 2 Exmaple
val outputOption = EpEditor.OutputOption ("/storage/emulated/0/merge.mp4"); //Output
outputOption.setWidth(720) // output video width, default 480
outputOption.setHeight(1280)
outputOption.frameRate = 25 ; // output video frame rate, default 30
EpEditor.merge(epVideos,outputOption,object:OnEditorListener{
override fun onSuccess() {
}
override fun onFailure() {
}
override fun onProgress(progress: Float) {
Log.d("Progress","$progress")
}
})
private void mergeVideos() {
ArrayList<EpVideo> epVideos = new ArrayList<>();
epVideos.add(new EpVideo (file2)); // Video 1
epVideos.add(new EpVideo (file1)); // Video 2
EpEditor. OutputOption outputOption =new EpEditor.OutputOption(fileOutput);
outputOption.setWidth(720);
outputOption.setHeight(1280);
outputOption.frameRate = 25 ;
outputOption.bitRate = 10 ;
EpEditor.merge(epVideos, outputOption, new OnEditorListener() {
@Override
public void onSuccess () {
Log.d("Status","Success");
}
@Override
public void onFailure () {
}
@Override
public void onProgress ( float progress ) {
// Get processing progress here
Log.d("Progress",""+progress);
}
});
}