pcj*_*pcj 5 android movie android-memory mp4parser
我有多个文件的录音.我正在使用com.googlecode.mp4parser:isoparser:1.0.2
库创建一个连续的音频文件.
以下是我的代码:
String mediaKey = isAudio ? "soun" : "vide";
List<Movie> listMovies = new ArrayList<>();
for (String filename : sourceFiles) {
listMovies.add(MovieCreator.build(filename));
}
List<Track> listTracks = new LinkedList<>();
for (Movie movie : listMovies) {
for (Track track : movie.getTracks()) {
if (track.getHandler().equals(mediaKey)) {
listTracks.add(track);
}
}
}
Movie outputMovie = new Movie();
if (!listTracks.isEmpty()) {
outputMovie.addTrack(new AppendTrack(listTracks.toArray(new Track[listTracks.size()])));
}
Container container = new DefaultMp4Builder().build(outputMovie);
FileChannel fileChannel = new RandomAccessFile(String.format(targetFile), "rw").getChannel();
container.writeContainer(fileChannel);
fileChannel.close();
Run Code Online (Sandbox Code Playgroud)
以上代码在Android手机上运行.由于其移动环境,每个应用程序都有内存限制.
上面代码的问题是当我从文件加载Movie并为小文件创建一个轨道列表时它工作正常.但随着文件大小的增加,操作开始变得无响应.它需要大量的内存.如何才能提高内存效率.他们是否可以像在Java中进行文件复制操作那样在小流中执行此操作?
更新:
为了在文件中录制音频,我使用androidMediaRecorder
进行此操作,输出格式为MPEG_4
和音频编码器为AAC
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
482 次 |
最近记录: |