You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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
The text was updated successfully, but these errors were encountered:
Original issue reported on code.google.com by
bonnet.n...@gmail.com
on 4 Jun 2015 at 8:42The text was updated successfully, but these errors were encountered: