У вас, вероятно, нет ключевого кадра на отметке 3 секунды. Поскольку не ключевые кадры кодируют отличия от других кадров, им требуются все данные, начиная с предыдущего ключевого кадра.
С контейнером mp4 можно вырезать не ключевой кадр без перекодирования с использованием списка редактирования. Другими словами, если ближайший ключевой кадр до 3 с равен 0, то он скопирует видео, начинающееся с 0, и использует список редактирования, чтобы указать игроку начать воспроизведение через 3 секунды.
Если вы используете последнюю версию ffmpeg из git master, она сделает это с помощью списка редактирования при вызове с помощью предоставленной вами команды. Если это не работает для вас, то вы, вероятно, используете старую версию ffmpeg, или ваш плеер не поддерживает редактирование списков. Некоторые проигрыватели игнорируют список редактирования и всегда воспроизводят все файлы в файле от начала до конца.
Если вы хотите точно вырезать, начиная с не ключевого кадра, и хотите, чтобы он воспроизводился, начиная с нужной точки на проигрывателе, который не поддерживает списки редактирования, или хотите убедиться, что вырезанная часть фактически не находится в выходном файле (например, если он содержит конфиденциальную информацию), то вы можете сделать это путем перекодирования, чтобы ключевой кадр был точно в желаемое время начала. Перекодировка используется по умолчанию, если вы не укажете copy
. Например:
ffmpeg -i movie.mp4 -ss 00:00:03 -t 00:00:08 -async 1 cut.mp4
При перекодировании вы также можете включить дополнительные параметры, связанные с качеством, или конкретный кодер AAC. Для получения дополнительной информации см. Руководство по кодированию xf64 ffmpeg для видео и Руководство по кодированию AAC для аудио.
Кроме того, -t
опция указывает продолжительность, а не время окончания. Приведенная выше команда будет кодировать 8 секунд видео, начиная с 3 секунд. Для начала в 3с и конца в 8с используйте -t 5
. Если вы используете последнюю версию FFmpeg можно также заменить -t
с -to
в вышеприведенной команде до конца в заданное время.