我一直在努力寻找更好的解决方案来暂停和恢复视频录制。 据我所知,Media Recorder类不允许在Android 4.3或更低版本的录制过程中暂停。
我找到了可以将多个视频文件合并为一个视频文件的mp4parser库。 我正在使用以下罐子:
aspectjrt-1.7.3.jar
isoparser-1.0.6.jar
问题是将它们合并在一起需要花费太长时间。 例如, 总共约5分钟的2-3个视频文件需要至少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);
非常感谢您的帮助,
非常感谢
答案 0 :(得分:0)
也许用raw进行录制可能会提高性能:
这样,您就不需要mp4parser或其他任何东西来合并视频。