FFmpeg низкая точность обрезки - PullRequest
0 голосов
/ 02 февраля 2019

Итак, я пытаюсь разрезать 1-минутное 29-секундное видео на клипы по 30 секунд каждый.Ожидаемый результат - 30 с, 30 с, 29 с.Результат 35сек, 29сек, 23сек.

Это мой код -

 ArrayList<String> commandList = new ArrayList<>();
            commandList.add("-ss");
            commandList.add("00:00:00");
            commandList.add("-i");
            commandList.add(videoPath);
            commandList.add("-c");
            commandList.add("copy");
            commandList.add("-f");
            commandList.add("segment");
            commandList.add("-segment_time");
            commandList.add("00:00:30");
            commandList.add(TEST.getAbsolutePath());
            String[] command  = commandList.toArray(new String[commandList.size()]);
            execFFmpegBinary(command);

Есть идеи, что я делаю неправильно?Я где-то читал, что, если в определенной позиции ключевой кадр не существует, он ищет позицию ближайшего ключевого кадра.

Любое решение или руководство помогут мне.Заранее спасибо.

1 Ответ

0 голосов
/ 03 февраля 2019

FFmpeg запустит сегменты на ключевых кадрах.При использовании -codec copy нет транскодирования, поэтому он должен использовать существующие ключевые кадры.В 30 с ключевой кадр отсутствует, поэтому в следующий раз он сокращается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...