暂停…选项,如默认的相机应用程序?

我一直在努力寻找更好的解决方案来暂停和恢复video录制。 据我所知,Media Recorder类不允许在Android 4.3或更低版本的录制过程中暂停。

我发现mp4parser库可以将多个video文件合并为一个video文件。 我正在使用以下jar子:

aspectjrt-1.7.3.jar

isoparser-1.0.6.jar

问题是将它们合并在一起需要太长时间。 例如,总共约5分钟的2-3个video文件需要至少2分钟才能合并它们!

我的Galaxy S3和Note 2附带的默认Camera应用程序,在video录制中有暂停选项。 他们暂停的video只需不到1秒即可完成合并。

有人可以告诉我这里我做错了什么吗?

我使用下面的代码合并video文件:

for (ArrayList PathList : VideoList) { VideoPathList = PathList; } for (String mMovie : VideoPathList) { Movie movie = MovieCreator.build(mMovie); MovieList.add(movie); } List videoTracks = new LinkedList(); List audioTracks = new LinkedList(); 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); 

我非常感谢你的帮助,

非常感谢你

也许以原始方式进行录制可能会提高性能:

  1. 将录制内容保存为原始文件(而不是编码格式)。
  2. 每次用户恢复录制时,追加到同一原始文件的末尾。
  3. 最后,在停止时,将原始文件转换为所需的格式(mp4或其他)

这样,您就不需要mp4parser或其他任何东西来合并video。