На этот вопрос уже есть ответ здесь:
У меня 30 минут видеофайла, но я хочу извлечь видео с 00:09:23 до 00:25:33.
Я могу определить начальную позицию с помощью -ss
, но я не смог найти одну для конечной позиции. Любая помощь, пожалуйста?
На этот вопрос уже есть ответ здесь:
У меня 30 минут видеофайла, но я хочу извлечь видео с 00:09:23 до 00:25:33.
Я могу определить начальную позицию с помощью -ss
, но я не смог найти одну для конечной позиции. Любая помощь, пожалуйста?
Ответы:
Убедитесь, что вы скачали последнюю версиюffmpeg
и не используете ту, которая входит в ваш дистрибутив (например, Ubuntu). Пакетные версии из разных дистрибутивов часто устарели и ведут себя не так, как ожидалось.
Или скомпилируйте это самостоятельно .
Используйте это, чтобы вырезать видео [start]
для [duration]
:
ffmpeg -ss [start] -i in.mp4 -t [duration] -c copy out.mp4
Здесь параметры означают следующее:
-ss
указывает время начала, например 00:01:23.000
или 83
(в секундах)-t
указывает продолжительность клипа (в том же формате). ffmpeg
также имеет флаг для предоставления времени окончания -to
.-c copy
копирует первый битовый поток видео, аудио и субтитров из входного в выходной файл без их перекодирования. Это не повредит качеству и заставит команду работать в течение нескольких секунд.Если вы не включите эту -c copy
опцию, ffmpeg
автоматически перекодирует выходные видео и аудио в соответствии с выбранным форматом. Для получения высококачественного видео и аудио прочитайте Руководство по кодированию x264 и Руководство по кодированию AAC соответственно.
Например:
ffmpeg -ss [start] -i in.mp4 -t [duration] -c:v libx264 -c:a aac -strict experimental -b:a 128k out.mp4
Я думаю, что вы можете использовать следующую команду сейчас.
ffmpeg -i inputFile -vcodec copy -acodec copy -ss 00:09:23 -to 00:25:33 outputFile
Взгляните также на документ ffmpeg или на эту вики-страницу .
ffmpeg -i inputFile -c copy -ss 00:09:23 -to 00:25:33 outputFile
более простая версия
ffmpeg -ss 00:01:00 -i video.mp4 -to 00:02:00 -c copy -copyts cut.mp4
версию (с -copyts
), в противном случае она была обрезана неправильно (с черным экраном в начале). Спасибо за вторую ссылку, хотя.
Странно, что никто не предложил trim
фильтр .
Отбросьте все, кроме второй минуты ввода:
ffmpeg -i INPUT -vf trim=60:120
Оставьте только первую секунду:
ffmpeg -i INPUT -vf trim=duration=1
Отбросьте все, кроме второго 13 на второе 58:
ffmpeg -i INPUT -vf trim=13:58 OUTPUT
trim
и atrim
. Я обычно использую их при фильтрации, но пользователи должны заметить, что фильтрация требует перекодирования .
Вы можете использовать эти два метода, которые работают для Windows и Linux.
Есть два способа разделить видео файлы с помощью ffmpeg. Первый хорош сам по себе, более того - он быстрее, но иногда создает выходные файлы с определенными недостатками. Таким образом, для этих случаев существует второй способ разделения видеофайлов: он значительно медленнее, выходные файлы больше, но кажется, что они всегда имеют тот же уровень качества, что и входные файлы.
Способ 1:
ffmpeg -ss <start> -i in1.avi -t <duration> -c copy out1.avi
Способ 2:
ffmpeg -ss <start> -i in1.avi -t <duration> out1.avi
<start>
- начало части видео ffmpeg должно быть вырезано. Формат:00:00:00.0000
означает часы: минуты: секунды: миллисекунды.
<duration>
- продолжительность части видео ffmpeg должна быть вырезана. Тот же формат, что и выше.Примеры:
ffmpeg -ss 01:19:00 -i in1.avi -t 00:05:00 -c copy out1.avi ffmpeg -ss 01:19:00 -i in1.avi -t 00:05:00 out1.avi
ffmpeg вырезает часть видеофайла, начиная с 1 часа 19 минут 0 секунд. Продолжительность вырезанной видеопоследовательности составляет 5 минут 0 секунд.
-sameq
не означает "то же качество" и был удален из ffmpeg. Используйте -codec copy
вместо этого. Также не забывайте об этом -to
варианте.
Вы можете использовать это
ffmpeg -sameq -ss clip_start -t duration -i original.ogg clip.ogg
Здесь вы должны указать продолжительность видео. то есть. 00: 25: 33-00: 09: 23
Я использую следующий синтаксис, чтобы вырезать видео с помощью ffmpef:
ffmpeg -sameq -ss [start_seconds] -t [duration_seconds] -i [input_file] [outputfile]
-t используется для установки длительности в секундах - вы не можете указать время окончания, но это должно работать для вас.
-sameq
вовсе не означает «то же качество».