What steps will reproduce the problem?
1. Get a sample file. I used Bick Buck Bunny
(https://peach.blender.org/download/) for this example.
2. Append the file to itself to get a very long file using AppendTrack. Here is
an example of the code I used.
private static void append() throws IOException {
String inputFile = "C:/tmp/big_buck_bunny_720p_nosound.mp4"; // The bick buck bunny video is 9m56s...
int timesToAppend = 50; // So let's say.. 50 times to have a ~8hours video ?
List<Track> tracksToAppend = new ArrayList<Track>(timesToAppend);
Movie resultMovie = new Movie();
for(int i=0; i<timesToAppend; i++) {
// We only consider the video in this example
tracksToAppend.add(MovieCreator.build(inputFile).getTracks().get(0));
}
Track[] tracksAsArray = new Track[tracksToAppend.size()];
resultMovie.addTrack(new AppendTrack(tracksToAppend.toArray(tracksAsArray)));
Container out = new DefaultMp4Builder().build(resultMovie);
FileOutputStream fos = new FileOutputStream(new File(String.format("C:/tmp/big_buck_bunny_appended.mp4")));
out.writeContainer(fos.getChannel());
fos.close();
}
3. Play the result file with VLC or ffplay
What is the expected output? What do you see instead?
The expected file is an about 8 hours long video fully playable. Instead the
content is at first playable and then refuses to play with the following error :
h264 @ 00000000003a0280] no frame!
h264 @ 0000000007170ee0] AVC: nal size -1601875860
If I restrict to a ~1hour video (timesToAppend = 50) however it plays fine.
What version of the product are you using? On what operating system?
Tested with the 1.0-RC37 with the following correction to the AppendTrack (pb
on sample duration).
public synchronized long[] getSampleDurations() {
int numSamples = 0;
for (Track track : tracks) {
numSamples += track.getSampleDurations().length;
}
long[] decodingTimes = new long[numSamples];
int index = 0;
// should use system arraycopy but this works too (yes it's slow ...)
for (Track track : tracks) {
for (long l : track.getSampleDurations()) {
decodingTimes[index] = l;
index++;
}
}
return decodingTimes;
}
Tested with the 1.0.6. The result is not playable at all (incoherent file
descriptor).
Platform is a windows 7 x64 with java 8.
Please provide any additional information below.
Original issue reported on code.google.com by bonnet.n...@gmail.com on 4 Jun 2015 at 8:42
Original issue reported on code.google.com by
bonnet.n...@gmail.com
on 4 Jun 2015 at 8:42