我有两个变量,Uri audioUri
和 Uri videoUri
,它们指向音频文件(用户拥有的任何格式)和视频文件 (mp4) 的位置分别。视频和音频的长度相同。
我想创建一个与视频文件具有相同视频/帧的视频文件,但使用音频文件作为配乐。
最佳答案
我最终使用了 mp4parser图书馆。 MediaExtractor
和 MediaMuxer
类分别在 API 16 和 18 中引入,因此它们对我的项目来说太新了。
此方法的注意事项是在写入时音频源必须是 aac 或 mp3 文件,视频文件必须是 mp4 文件。
使用Android Studio和Gradle,你可以这样安装和使用它:
打开 Gradle Scripts -> build.gradle (Module: app)
并添加到 dependencies
block 的末尾
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
就交给您了。
关于android - 将视频的配乐更改为相同长度的音频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27874654/