【发布时间】:2015-08-14 23:05:01
【问题描述】:
我一直在尝试寻找更好的解决方案来暂停和恢复视频录制。 据我所知,对于 Android 4.3 或更低版本,Media Recorder 类不允许在录制期间暂停。
我找到了可以将多个视频文件合并为一个视频文件的 mp4parser 库。 我正在使用以下罐子:
aspectjrt-1.7.3.jar
isoparser-1.0.6.jar
问题在于将它们合并在一起需要很长时间。 例如, 2-3 个视频文件,总时长约为 5 分钟,合并它们至少需要 2 分钟!
我的 Galaxy S3 和 Note 2 附带的默认相机应用程序在视频录制上有暂停选项。 他们暂停的视频只需不到 1 秒的时间即可完成合并。
谁能告诉我我在这里做错了什么?
我正在使用下面的代码来合并视频文件:
for (ArrayList<String> PathList : VideoList) {
VideoPathList = PathList;
}
for (String mMovie : VideoPathList) {
Movie movie = MovieCreator.build(mMovie);
MovieList.add(movie);
}
List<Track> videoTracks = new LinkedList<Track>();
List<Track> audioTracks = new LinkedList<Track>();
for (Movie mMovie : MovieList) {
for (Track t : mMovie.getTracks()) {
if (t.getHandler().equals("soun")) {
audioTracks.add(t);
}
if (t.getHandler().equals("vide")) {
videoTracks.add(t);
}
}
}
Movie result = new Movie();
if(audioTracks.size() > 0) {
result.addTrack(new AppendTrack(audioTracks.toArray(new Track[audioTracks.size()])));
}
if(videoTracks.size() > 0) {
result.addTrack(new AppendTrack(videoTracks.toArray(new Track[videoTracks.size()])));
}
BasicContainer basicContainer = (BasicContainer) new DefaultMp4Builder().build(result);
final String FileLocation = (UserSavedDirectoryPATH + "/");
final File DirectoryExistCheck = new File(FileLocation);
if(!DirectoryExistCheck.exists()) {
DirectoryExistCheck.mkdir();
}
NewVideo = FileLocation + "Video " + ".mp4";
FileChannel fileChannel = new FileOutputStream(new File(String.format(NewVideo))).getChannel();
basicContainer.writeContainer(fileChannel);
fileChannel.close();
} catch(Exception error) { }
GalleryAddNewVideo(NewVideo);
Delete_VideoPaths(VideoPathList);
非常感谢您的帮助,
非常感谢
【问题讨论】:
标签: android mediarecorder android-mediarecorder video-recording