I am trying to merge two mp4 files which are having different frame rates using following code:
public class MergeMP4 {
public static void main(String[] args) throws IOException {
String[] videoUris = new String[]{
"D:/m2.mp4",
"D:/m1.mp4"};
List<Movie> inMovies = new ArrayList<Movie>();
for (String videoUri : videoUris) {
inMovies.add(MovieCreator.build(videoUri));
}
List<Track> videoTracks = new LinkedList<Track>();
List<Track> audioTracks = new LinkedList<Track>();
for (Movie m : inMovies) {
for (Track t : m.getTracks()) {
if (t.getHandler().equals("soun")) {
audioTracks.add(t);
}
if (t.getHandler().equals("vide")) {
videoTracks.add(t);
}
}
}
Movie result = new Movie();
if (!audioTracks.isEmpty()) {
result.addTrack(new AppendTrack(audioTracks.toArray(new Track[audioTracks.size()])));
}
if (!videoTracks.isEmpty()) {
System.out.println("In Video Track");
result.addTrack(new AppendTrack(videoTracks.toArray(new Track[videoTracks.size()])));
}
FileChael fc = new RandomAccessFile(String.format("D:/output.mp4"),"rw").getChael();
new DefaultMp4Builder().build(result).writeContainer(fc);
fc.close();
System.out.println("Success!!");
}
}
But it able to append only audio content but video content is missing and on console it was displaying following warning messages:
Aug 30, 2016 2:25:44 PM com.googlecode.mp4parser.util.JuliLogger logError
SEVERE: BytesPerFrame differ
Aug 30, 2016 2:25:44 PM com.googlecode.mp4parser.util.JuliLogger logError
SEVERE: BytesPerSample differ
Aug 30, 2016 2:25:44 PM com.googlecode.mp4parser.util.JuliLogger logError
SEVERE: ChaelCount differ
Success!!
Please help.
