我有两个变量,Uri audioUri
和Uri videoUri
分别指向音频文件(用户拥有的任何格式)和视频文件(mp4)的位置。视频和音频的长度相同。
我想创建一个与视频文件具有相同视频/帧的视频文件,但使用音频文件作为音轨。
答案 0 :(得分:2)
我最终使用了mp4parser库。 {16}和18分别引入了MediaExtractor
和MediaMuxer
类,因此它们对我的项目来说太新了。
这种方法的警告是,在编写时音频源必须是aac或mp3文件,视频文件必须是mp4文件。
使用Android Studio和Gradle,您可以像这样安装和使用它:
打开Gradle Scripts -> build.gradle (Module: app)
并添加到dependencies
块
compile 'com.googlecode.mp4parser:isoparser:1.0.+'
点击进行此更改后显示的黄色横幅中的“立即同步”按钮。
现在在你的Java文件中写:
try
{
H264TrackImpl h264Track = new H264TrackImpl(new FileDataSourceImpl(videoFile);
MP3TrackImpl mp3Track = new MP3TrackImpl(new FileDataSourceImpl(audioFile);
Movie movie = new Movie();
movie.addTrack(h264Track);
movie.addTrack(mp3Track);
Container mp4file = new DefaultMp4Builder().build(movie);
FileChannel fileChannel = new FileOutputStream(new File(outputFile)).getChannel();
mp4file.writeContainer(fileChannel);
fileChannel.close();
}
catch (Exception e)
{
Toast.makeText(this, "An error occurred: " + e.getMessage(), Toast.LENGTH_SHORT).show();
}
使用Alt + Enter工具导入所有类。 Movie
课程有多种选择,因此请务必选择以com.googlecode.mp4parser
开头的课程。
由您来处理异常并定义不言自明的字符串outputFile
,audioFile
和videoFile
。