Ich habe versucht, nach einer besseren Lösung zu suchen, um die Videoaufnahme anzuhalten und fortzusetzen. Soweit ich weiß, erlaubt die Media Recorder-Klasse keine Pause während der Aufnahme für Android 4.3 oder niedriger.Pause ..... Option wie die Standard-Kamera-App?
Ich fand die mp4parser-Bibliothek, die mehrere Videodateien in eine Videodatei zusammenführen kann. Ich verwende die folgenden Gläser:
aspectjrt-1.7.3.jar
isoparser-1.0.6.jar
Das Problem ist es viel zu lange dauert, um sie miteinander zu verschmelzen . Zum Beispiel, 2-3 Video-Dateien, die rund 5 Minuten lang sind würde insgesamt mindestens 2 Minuten dauern, um sie zusammenzuführen !!
Die Standard-Kamera-App, die mit meinem Galaxy S3 und Note 2 geliefert wird, die die Pause-Option auf der Videoaufnahme haben. Ihre pausierten Videos benötigen weniger als 1 Sekunde, um die Zusammenführung abzuschließen.
Kann mir bitte jemand sagen, was ich hier falsch mache?
ich den Code unten bin mit den Videodateien zu fusionieren:
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);
ich sehr schätzen für Ihre Hilfe,
Vielen Dank
Vielen Dank für den Kommentar. Gibt es trotzdem einen Code, ein Sample oder einen Link? Vielen Dank –