【问题标题】:Pause..... option like the default camera app?暂停.....选项像默认相机应用程序?
【发布时间】: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


    【解决方案1】:

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

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

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

    【讨论】:

    • 非常感谢您的评论。无论如何您可以分享一些代码或示例或链接吗?非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-07
    • 1970-01-01
    • 2015-06-19
    相关资源
    最近更新 更多