sannies / mp4parser

A Java API to read, write and create MP4 files
Apache License 2.0
2.76k stars 566 forks source link

MPG format - A cast to int has gone wrong Please contact the mp4parser discussion group #247

Open sabobba opened 7 years ago

sabobba commented 7 years ago

While merging the .mpg files, we are getting the below mentioned error.

Is mp4parser supports merging mpg format files? Please correct my below logic to support the mpg files.

Exception in thread "main" java.lang.RuntimeException: A cast to int has gone wrong. Please contact the mp4parser discussion group (3652969073) at com.googlecode.mp4parser.util.CastUtils.l2i(CastUtils.java:30) at com.googlecode.mp4parser.AbstractBox.parse(AbstractBox.java:110) at com.coremedia.iso.AbstractBoxParser.parseBox(AbstractBoxParser.java:107) at com.googlecode.mp4parser.BasicContainer.next(BasicContainer.java:185) at com.googlecode.mp4parser.BasicContainer.hasNext(BasicContainer.java:161) at com.googlecode.mp4parser.util.LazyList$1.hasNext(LazyList.java:55) at com.coremedia.iso.IsoFile.getMovieBox(IsoFile.java:102) at com.googlecode.mp4parser.authoring.container.mp4.MovieCreator.build(MovieCreator.java:51) at com.googlecode.mp4parser.authoring.container.mp4.MovieCreator.build(MovieCreator.java:38) at merge.Test.main(Test.java:23)

Code

String video1 = "D:\v\" + "DELTA.mpg"; String video2 = "D:\v\" + "FORM.mpg"; String outputVideo = "D:\v\" + "output.mpg";

Movie[] inMovies = new Movie[]{ MovieCreator.build(video1), MovieCreator.build(video2), };

List vedioTracks = new LinkedList(); List audioTracks = new LinkedList();

for (Movie m : inMovies) { for (Track t : m.getTracks()) { if (t.getHandler().equals("vide")) { vedioTracks.add(t); } if (t.getHandler().equals("soun")) { audioTracks.add(t); } } }

Movie result = new Movie(); if (vedioTracks.size() > 0) { result.addTrack(new AppendTrack(vedioTracks.toArray(new Track[vedioTracks.size()]))); } if (audioTracks.size() > 0) { result.addTrack(new AppendTrack(audioTracks.toArray(new Track[audioTracks.size()]))); }

Container out = new DefaultMp4Builder().build(result); out.writeContainer(new FileOutputStream(outputVideo).getChannel());

Please suggest a solution to my problem. I need to merge MPG files. The above program is throwing an at MovieCreator.build(video1), ?Whereas the same logic is working fine for mp4 files. we are getting a problem with mpg files.

Please provide sample program to merge mp4 files.

sabobba commented 7 years ago

Please help on this issue and also sent an email. Please check.