Вырежьте видеофайл с помощью FFmpeg

Это командная строка, которую вы используете для извлечения части видеофайла (первые 30 секунд) без перекодирования и сохранения выбора в файл.

 ffmpeg.exe -ss 00:00:00 -to 00:00:30 -i "D: \ media \ sample.mp4" -c копия "d: \ media \ sample_cut.mp4"

Приведенная выше команда извлекает первые 30 секунд видео и сохраняет его в отдельный файл с именем sample_cut.mp4 .

  • -ss обозначает время начала
  • -to обозначает время окончания; FFmpeg прекращает вывод в указанной позиции.
  • -i это входной файл.
  • -c указывает используемый кодек. В этом случае кодирование не выполняется, поскольку мы использовали copy .

Совет: вместо -to вы также можете использовать -t который обозначает продолжительность, а не конечную точку. Например, указание -s 00:00:10 -t 50 выбирает от 10 секунд до 60 секунд аудио / видео.

$config[ads_text6] not found

Кадры видео отсутствуют? Попробуйте метод кодирования

Во время воспроизведения, если в видеофайле (созданном с помощью последней команды) отсутствуют видеокадры в начале или в конце, вы можете использовать метод перекодирования . Однако кодирование – это медленный процесс. Запустите эту команду:

 ffmpeg.exe -ss 00:00:00 -to: 00:00:30 -i "D: \ media \ sample.mp4" -c: v libx264 -c: копия "d: \ media \ sample_cut.mp4"

Он кодирует видео (используя кодировщик libx264 ), но использует тот же аудиопоток (обозначается аргументом copy .), Извлекает первые 30 секунд видео и сохраняет его в отдельный файл с именем sample_cut.mp4 .

Разделите видеофайл на несколько равных частей, используя FFmpeg

Теперь вы знаете, как вырезать часть аудио / видео файла и сохранить выделенный файл в файл. Что если вы хотите разделить видео на несколько частей с определенной продолжительностью или продолжительностью? Вы можете использовать следующую командную строку для каждого сегмента, который вы хотите вырезать:

 ffmpeg.exe -ss 00:00:00 -to 00:00:30 -i "D: \ media \ sample.mp4" -c: копировать "d: \ media \ sample_part_1.mp4" ffmpeg.exe -ss 00: 00:30 - 00:01:00 -i «D: \ media \ sample.mp4» -c: копировать «d: \ media \ sample_part_2.mp4» ffmpeg.exe -ss 00:01:00 -to 00: 01:30 -i "D: \ media \ sample.mp4" -c: копия "d: \ media \ sample_part_3.mp4" ffmpeg.exe -ss 00:02:00 -в 00:02:30 -i "D : \ media \ sample.mp4 "-c: copy" d: \ media \ sample_part_4.mp4 "

Это будет сложно, если вам нужно разделить несколько файлов, верно? Есть легкая альтернатива!

Давайте использовать аргумент командной строки -segment файла FFmpeg.exe. Этот аргумент командной строки разбивает видеофайл на несколько частей, каждая из которых содержит указанную длину / длительность (например, 60 секунд каждая):

 ffmpeg.exe -i "D: \ media \ sample.mp4" -f сегмент -segment_time 60 -c копия -reset_timestamps 1 "d: \ media \ sample_% 03d.mp4"

Имена выходных файлов будут называться sample_001.mp4, sample_002.mp4, sample_003.mp4 и т. Д.

 

 

Однако при использовании метода copy при разделении видео разделение может быть неточным. Вы можете видеть, что каждая часть / файл имеет длину не более 60 секунд. Некоторые из них 57 секунд, а некоторые более 60 секунд в длину.

Метод перекодирования (для более точных сокращений)

Если вы хотите точно вырезать видео (каждая часть с фиксированной длительностью), вам нужно перекодировать видео во время разделения. Вот аргумент командной строки, который вы используете:

 ffmpeg -i "D: \ Media \ sample.mp4" -c: v libx264 -segment_time 60 -g 9 -sc_threshold 0 -force_key_frames "expr: gte (t, n_forced * 9)" -f сегмент -reset_timestamps 1 "D: \ Media \ sample_% 03d.mp4"

Ну вот! Все части имеют одинаковую длину (максимум вариации 1 секунда), кроме, конечно, последнего клипа.

 

(c)https://ru.desktopsupportpanel.com/

Scroll to top