6

Tôi đã cố gắng tìm giải pháp tốt hơn để tạm dừng và tiếp tục quay video. Theo như tôi biết, lớp Media Recorder không cho phép tạm dừng trong quá trình ghi cho Android 4.3 trở xuống.Tạm dừng ..... tùy chọn như ứng dụng máy ảnh mặc định?

Tôi đã tìm thấy thư viện mp4parser có thể hợp nhất nhiều tệp video thành một tệp video. Tôi đang sử dụng các lọ sau:

aspectjrt-1.7.3.jar

isoparser-1.0.6.jar

Vấn đề là phải mất quá nhiều thời gian để kết hợp chúng lại với nhau . Ví dụ: 2-3 tệp video dài khoảng 5 phút sẽ mất ít nhất 2 phút để hợp nhất chúng !!

Ứng dụng Máy ảnh mặc định đi kèm với Galaxy S3 và Note 2 của tôi có tùy chọn tạm dừng khi quay video. Video bị tạm dừng của họ mất ít hơn 1 giây để hoàn tất quá trình hợp nhất.

Ai đó có thể vui lòng cho tôi biết tôi đang làm gì sai ở đây không?

Tôi đang sử dụng mã dưới đây để hợp nhất các tập tin video:

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); 

tôi rất đánh giá cao sự giúp đỡ của bạn,

Thank you very much

Trả lời

0

lẽ làm việc ghi trong thô có thể tăng hiệu suất:

  1. Lưu bản ghi vào tệp thô (thay vì ở dạng được mã hóa t).
  2. Nối vào cuối cùng một tệp thô mỗi khi người dùng tiếp tục ghi.
  3. Cuối cùng, về dừng, chuyển đổi các tập tin thô sang định dạng mong muốn (mp4 hoặc bất cứ điều gì)

Bằng cách này, bạn sẽ không cần mp4parser hoặc bất cứ điều gì khác để hợp nhất các video.

+0

Cảm ơn rất nhiều cho nhận xét. Có anyway bạn có thể chia sẻ một số mã hoặc mẫu hoặc liên kết? Cảm ơn nhiều –

Các vấn đề liên quan