IYM*_*-14 6 android video-recording mediarecorder android-mediarecorder
我一直在努力寻找更好的解决方案来暂停和恢复视频录制.据我所知,Media Recorder类不允许在Android 4.3或更低版本的录制期间暂停.
我发现mp4parser库可以将多个视频文件合并为一个视频文件.我正在使用以下罐子:
aspectjrt-1.7.3.jar
isoparser-1.0.6.jar
问题是将它们合并在一起需要太长时间.例如,总共约5分钟的2-3个视频文件需要至少2分钟才能合并它们!
我的Galaxy S3和Note 2附带的默认Camera应用程序,在视频录制中有暂停选项.他们暂停的视频只需不到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);
Run Code Online (Sandbox Code Playgroud)
我非常感谢你的帮助,
非常感谢你
也许以原始格式进行录制可能会提高性能:
这样,您就不需要 mp4parser 或其他任何东西来合并视频。
| 归档时间: |
|
| 查看次数: |
462 次 |
| 最近记录: |