Частота кадров в mp4parse

Я пытаюсь загрузить файл mp4 и сделать его временным. Он работает с приведенным ниже кодом. Однако выходной файл имеет частоту кадров 16*originalFrameRate. Поскольку я не собираюсь воспроизводить его как видео с slow motion я бы предпочел сбросить эти избыточные кадры, чтобы уменьшить выходной файл.

Movie inputMovie = MovieCreator.build(fileUri);

List<Track> videoTracks = new LinkedList<>();

for (Track track : inputMovie.getTracks()) {
    if (track.getHandler().equals("vide")) {
        videoTracks.add(track);
    }
}

final int speedByFactorOf = 16;

Movie outputMovie = new Movie();

AppendTrack appendedTracks = new AppendTrack(videoTracks.toArray(new Track[videoTracks.size()]));
outputMovie.addTrack(new WrappingTrack(appendedTracks) {
    @Override
    public long[] getSampleDurations() {
        long[] l = super.getSampleDurations();
        for (int i = 0; i < l.length; i++) {
            l[i] /= speedByFactorOf;
        }
        return l;
    }
});

BasicContainer out = (BasicContainer) new DefaultMp4Builder().build(outputMovie);

FileChannel fc = new RandomAccessFile("timelapse.mp4", "rw").getChannel();
out.writeContainer(fc);
fc.close();
out.close();

Мне не удалось найти примеры того, как изменить частоту кадров вывода.

Ответы

Ответ 1

Как указано в @tarun-lalwani, если проект, на который вы ссылаетесь, это https://github.com/sannies/mp4parser, тогда он может редактировать контейнер MP4 и НЕ видео/аудио/медиа и т.д., Хранящиеся в контейнер. Даже если вы могли бы использовать метаданные для ускорения FPS шестнадцать раз, размер файла не стал бы меньше, потому что все кадры все равно были бы внутри файла (как показано на более короткое время). Вам нужно будет использовать что-то вроде FFmpeg (например, через https://github.com/bramp/ffmpeg-cli-wrapper) или какой-либо другой программный видеоредактор, чтобы делать то, что вы описываете, таким образом, сохраняя каждый шестнадцатый кадр видео, чтобы видеофайл фактически становится меньше.

TL;DR; mp4parser не является правильным проектом для редактирования видео (в отличие от метаданных), и то, что вы хотите достичь, похоже на то, что оно выходит за рамки просто возиться с контейнером.