android - 将视频的配​​乐更改为相同长度的音频文件

标签 android audio video mediarecorder android-mediarecorder

我有两个变量,Uri audioUriUri videoUri,它们指向音频文件(用户拥有的任何格式)和视频文件 (mp4) 的位置分别。视频和音频的长度相同。

我想创建一个与视频文件具有相同视频/帧的视频文件,但使用音频文件作为配乐。

最佳答案

我最终使用了 mp4parser图书馆。 MediaExtractorMediaMuxer 类分别在 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 开头的那个。

处理异常和定义不言自明的字符串 outputFileaudioFilevideoFile 就交给您了。

关于android - 将视频的配​​乐更改为相同长度的音频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27874654/

相关文章:

java - 使用图形 API 在 Facebook 群组上发布照片

android - Android 设备列表中不支持 Droid DNA

安卓 :- Custom ExpandableListView : cannot expand group item to display child item in CustomListView

用于检查视频元数据的 Java 库(如果是 1080p、720p 等)

java - 是否应该通过 AsyncTask 类调用 DialogFragment?

audio - 如何将 MediaRecorder 中的 webm(或其他)音频/视频数据 block 写入格式正确的 .webm(或其他)容器文件?

iphone - 寻找一些使用 iPhone caf=>m4a 进行音频转换的示例代码

javascript - 可视化来自SoundCloud自定义播放器的音频?

javascript - 如何最好地跟踪视频的播放时长?

python - 如何在Python中同时录制音频和视频?