您可以尝试使用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

小智 5
我将分享 Java 和 Kotlin 代码
在内部,它使用 FFmpeg 但它是轻量级的。添加两个不同类型或编解码器、帧率和比特率的视频的最简单方法是使用 EpMedia 库。
等级依赖
implementation 'com.github.yangjie10930:EpMedia:v0.9.5'
Run Code Online (Sandbox Code Playgroud)
科特林代码
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")
}
})
Run Code Online (Sandbox Code Playgroud)
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);
}
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19271 次 |
| 最近记录: |