Remove dependency to isoparser library
This commit is contained in:
parent
f91a0d27eb
commit
5d2d5145b9
|
@ -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>
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue