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

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)

我非常感谢你的帮助,

非常感谢你

mur*_*tgu 0

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

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

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