我想合并两个或多个视频文件(它们可能是两个 mp4 或两个 3gp,或任何其他格式)。
问问题
23871 次
3 回答
5
你可以试试INDE Media for Mobile,教程在这里:https ://software.intel.com/en-us/articles/intel-inde-media-pack-for-android-tutorials
它在 MediaComposer 类中具有转码\remuxing 功能,并且可以加入文件\文件段。由于它使用 MediaCodec API,内部编码是在 GPU 上完成的,因此非常电池友好并且工作速度尽可能快。
显示如何启用加入或其他功能的示例代码在 github 上:https ://github.com/INDExOS/media-for-mobile
于 2015-01-20T15:50:03.843 回答
5
我将分享 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")
}
})
Java 代码
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);
}
});
}
于 2020-02-25T15:43:09.413 回答