Чтобы обрезать видео с помощью FFmpeg, сначала определите, насколько точной должна быть граница. Копирование потоков выполняется быстро, поскольку позволяет избежать повторного кодирования, но может сохранить материал вблизи точки поиска. Повторное кодирование занимает больше времени и является более безопасным вариантом, когда первый видимый кадр должен соответствовать запрошенной временной метке.
Большинство операций редактирования сводится к указанию времени начала и либо длительности, либо времени окончания. Приведённые ниже команды демонстрируют оба варианта и позволяют понять компромисс между скоростью и точностью до их запуска.
Проверьте длительность исходного файла перед выбором конечной точки
Используйте ffprobe, чтобы вывести длительность контейнера в секундах:
ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 input.mp4Это полезно, когда в задании на монтаж указано: «удалите последние 20 секунд». Вычтите 20 из указанной длительности, затем используйте результат в качестве длительности выходного клипа. Вместо того чтобы полагаться на отображение времени на экране проигрывателя, проверьте готовый файл той же командой.
Укажите диапазон времени начала и продолжительности.
Эта команда начинается с одной минуты и записывает 30 секунд:
ffmpeg -ss 00:01:00 -i input.mp4 -t 00:00:30 -c copy output.mp4-ss задаёт позицию поиска. -t задаёт длительность выходного файла. -c copy копирует существующие потоки вместо их повторного кодирования, поэтому этот способ обычно работает быстро и позволяет избежать нового кодирования. При копировании потоков точная видимая граница может зависеть от точек поиска в исходном файле.
Указывайте метку времени окончания, если в процессе редактирования есть точка начала и окончания.
Если в задании указаны обе точки, используйте -to для позиции остановки:
ffmpeg -ss 00:01:00 -i input.mp4 -to 00:02:30 -c copy output.mp4При этом сохраняется диапазон, начинающийся в 1:00 и заканчивающийся в 2:30. Не сочетайте -t и -to как конкурирующие способы задать один выходной файл. Используйте длительность, если знаете продолжительность клипа. Используйте конечную временную метку, если в примечаниях к проверке указана точка выхода.
Перекодируйте, когда обрезка должна быть точной
Поместите поиск после входного файла и перекодируйте выходной файл, если первый видимый кадр должен совпадать с запрошенным временем:
ffmpeg -i input.mp4 -ss 00:01:00 -t 00:00:30 -c:v libx264 -c:a aac output.mp4FFmpeg рассматривает -ss как поиск по входному файлу, если он указан перед -i. При копировании потоков материал до запрошенной точки может остаться в выходном файле. При декодировании и перекодировании FFmpeg может отбросить декодированный материал до этой точки. Вы жертвуете скоростью ради контролируемой границы обрезки и нового кодирования видео.
Для длинного файла двухэтапный поиск может сократить объём материала, который необходимо декодировать, сохраняя контроль над окончательной границей:
ffmpeg -ss 00:00:58 -i input.mp4 -ss 00:00:02 -t 00:00:30 -c:v libx264 -c:a aac output.mp4Первый шаг поиска приближается к цели. Второй поиск осуществляется относительно этой точки и пропускает последние две секунды перед кодированием FFmpeg выходного сигнала 30-секунды.
Разделите более длинное видео на регулярные сегменты
Мультиплексор сегментов может записывать серию файлов. В этом примере запрашиваются сегменты длительностью 60 секунд, и для каждого выходного сигнала сбрасываются метки времени:
ffmpeg -i input.mp4 -map 0 -c copy -f segment -segment_time 60 -reset_timestamps 1 clip_%03d.mp4При копировании потоков границы сегментов также определяются доступными в исходном файле точками поиска. Если каждый сегмент должен начинаться с точного кадра, выполните перекодирование или создайте ключевые кадры на предполагаемых границах.
Проверьте результат.
Запустите ffprobe для output.mp4 после важной обрезки. Если клип начинается раньше ожидаемого, вероятно, при копировании потоков была выбрана ближайшая точка поиска. Для этой правки повторно выполните точную команду с кодированием видео и аудио. Сохраняйте исходный файл, пока не проверите длительность выходного файла, начальный кадр, звук и ожидаемый диапазон.
Продолжите с OdiRouter
FFmpeg выполняет этот локальный этап подготовки медиаданных. Если клип становится частью рабочего процесса разработчика, использующего модели ИИ, ознакомьтесь с OdiRouter documentation или explore OdiRouter models. Официальный сайт OdiRouter предоставляет каталог моделей и документацию для разработчиков. Это руководство не описывает обрезку видео как функцию OdiRouter.