Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Problem with file appending for very big files #97

Open
GoogleCodeExporter opened this issue Jul 13, 2015 · 0 comments
Open

Problem with file appending for very big files #97

GoogleCodeExporter opened this issue Jul 13, 2015 · 0 comments

Comments

@GoogleCodeExporter
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant