частота покадровых кадров mp4parse - PullRequest
0 голосов
/ 04 июня 2018

Я пытаюсь проглотить файл 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 Ответ

0 голосов
/ 10 июня 2018

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

TLDR;mp4parser не является правильным проектом для редактирования видео (в отличие от метаданных), и то, что вы хотите добиться, звучит так, как будто это выходит за рамки простого возиться с контейнером.

...