Remove dependency to isoparser library

This commit is contained in:
0xboobface 2019-12-22 11:14:33 +01:00
parent f91a0d27eb
commit 5d2d5145b9
2 changed files with 0 additions and 76 deletions

View File

@ -71,16 +71,6 @@
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mp4parser</groupId>
<artifactId>isoparser</artifactId>
<version>1.9.41</version>
</dependency>
<dependency>
<groupId>org.mp4parser</groupId>
<artifactId>muxer</artifactId>
<version>1.9.41</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>

View File

@ -1,66 +0,0 @@
package ctbrec.recorder.download.dash;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.util.Arrays;
import org.mp4parser.Container;
import org.mp4parser.muxer.Movie;
import org.mp4parser.muxer.Track;
import org.mp4parser.muxer.builder.DefaultMp4Builder;
import org.mp4parser.muxer.container.mp4.MovieCreator;
public class MergerMuxer {
File segmentDir;
public MergerMuxer(File segmentDir) throws IOException {
this.segmentDir = segmentDir;
String[] videoSegments = segmentDir.list((dir, name) -> name.startsWith("video_"));
Arrays.sort(videoSegments);
String[] audioSegments = segmentDir.list((dir, name) -> name.startsWith("audio_"));
Arrays.sort(audioSegments);
File mp4VideoTrack = new File(segmentDir, "video.mp4");
mergeSegments(videoSegments, mp4VideoTrack);
File mp4AudioTrack = new File(segmentDir, "audio.mp4");
mergeSegments(audioSegments, mp4AudioTrack);
mergeTracks(mp4VideoTrack, mp4AudioTrack, new File(segmentDir, "merged.mp4"));
Files.delete(mp4VideoTrack.toPath());
Files.delete(mp4AudioTrack.toPath());
}
private void mergeSegments(String[] segments, File toFile) throws IOException {
try (FileOutputStream out = new FileOutputStream(toFile)) {
for (String segment : segments) {
try (FileInputStream in = new FileInputStream(new File(segmentDir, segment))) {
byte[] buffer = new byte[1024];
int len = -1;
while ((len = in.read(buffer)) >= 0) {
out.write(buffer, 0, len);
}
}
}
}
}
private void mergeTracks(File mp4VideoTrack, File mp4AudioTrack, File output) throws IOException {
Movie videoMovie = MovieCreator.build(mp4VideoTrack.getCanonicalPath());
Track videoTrack = videoMovie.getTracks().get(0);
Movie audioMovie = MovieCreator.build(mp4AudioTrack.getCanonicalPath());
Track audioTrack = audioMovie.getTracks().get(0);
Movie merged = new Movie();
merged.addTrack(videoTrack);
merged.addTrack(audioTrack);
try (FileOutputStream out = new FileOutputStream(output)) {
DefaultMp4Builder builder = new DefaultMp4Builder();
Container stdMp4 = builder.build(merged);
stdMp4.writeContainer(out.getChannel());
}
}
}