Убедитесь, что вы используете последнюю версию ffmpeg, загрузив, например, статическую сборку . Некоторое время назад произошли некоторые важные изменения, которые влияют на работу потоковой резки.
Вот важное различие между командами, которые вы выполнили:
При указании
-c copy
ffmpeg будет вырезать видео без изменения фактического потока битов. Другими словами, он будет принимать кадры как есть и копировать их в выходной файл. В некоторых случаях (проще говоря, когда начальное время не соответствует I-кадру ), ffmpeg необходимо включить еще несколько кадров, которые необходимы для правильного декодирования первого отображаемого кадра. Они получат отрицательную метку времени, поэтому они не должны отображаться.Когда вы выходите из
-c copy
, FFmpeg будет перекодировать видео с любым кодером (mpeg4
,libx264
, ...) по умолчанию для выбранного формата вывода (AVI или MP4 в вашем случае). Эти кодировщики могут иметь настройки качества или битрейта по умолчанию, из-за которых выходные данные выглядят плохо. Поэтому при перекодировании вы должны знать, какое целевое качество вы хотите установить.
Если обрезка с помощью потокового копирования не работает для вас, и если вам необходимо перекодировать видео, вы также можете использовать недавний и эффективный видеокодек (H.264) и контейнер (MP4), а также скопировать аудиопоток:
ffmpeg -ss 00:10:45 -i input.avi -c:v libx264 -crf 18 -to 00:11:45 -c:a copy output.mp4
Здесь опция CRF контролирует качество вывода. Значения между 18 и 28 являются «нормальными», более низкие значения лучше. -ss
Опция может быть входным параметром, который делает все быстрее.
Для получения дополнительной информации прочитайте руководство по поиску в FFmpeg Wiki.