Как обрезать, разделить и склеить видео без перекодирования
Обновлено:
Кажется, что отрезать несколько секунд от видео можно мгновенно и без потерь, и иногда так и есть. А иногда инструмент декодирует и заново сжимает весь клип, что занимает больше времени и стоит немного качества. Вся разница — в двух техниках, копировании потоков и перекодировании, и в том, как сжатое видео строится из ключевых кадров.
В этом руководстве объясняются обе техники, показывается, когда обрезка без потерь возможна, и честно говорится, какие из наших инструментов копируют потоки, а какие перекодируют.
Копирование потоков и перекодирование
Копирование потоков (его также называют ремуксингом, перепаковкой или passthrough) берёт уже сжатые пакеты видео и звука и записывает их в новый файл, не декодируя. Это очень быстро, потому что сжатия не происходит, и без потерь, потому что пакеты побитово идентичны оригиналу. Ограничение в том, что можно только оставлять или отбрасывать целые пакеты; изменить кодек, разрешение, битрейт или ориентацию пикселей нельзя.
Перекодирование декодирует видео в отдельные кадры и сжимает их заново. Оно медленнее, и при кодеках с потерями каждое перекодирование отбрасывает ещё немного деталей, зато может начинаться и заканчиваться на любом кадре и способно изменить в видео что угодно.
Почему обрезка без потерь привязывается к ключевым кадрам
Современные кодеки хранят не каждый кадр как полное изображение. Ключевой кадр (I-кадр) — это полное изображение; кадры после него в основном хранят только изменения, ссылаясь на предыдущие кадры. Группа кадров, начинающаяся с ключевого кадра, называется GOP, и в видео с телефона и камеры ключевой кадр обычно появляется раз в одну-несколько секунд.
Кадр из середины GOP нельзя показать без кадров, от которых он зависит. Поэтому обрезка с копированием потоков может чисто начинаться только с ключевого кадра. Инструменты, которые режут без потерь, либо сдвигают вашу точку начала к ближайшему ключевому кадру — поэтому обрезка может оказаться на секунду-другую в стороне от заданного места, — либо включают предшествующие кадры и скрывают их, что некоторые плееры игнорируют. С концом клипа проще: остановиться можно после любого кадра.
Некоторые редакторы используют умный рендеринг (smart rendering): они перекодируют только несколько кадров между точкой обрезки и следующим ключевым кадром, а остальное копируют потоком. Это даёт точность до кадра практически без потери качества, но требует тщательного согласования настроек кодировщика с оригиналом.
Склейка без перекодирования
Склейка файлов копированием потоков работает, только если у всех клипов одинаковые кодек, разрешение, частота кадров, формат пикселей и формат звука — например, когда несколько клипов записаны подряд на одну и ту же камеру. Если что-то отличается — скажем, клип с телефона склеивается с записью экрана, — части приходится перекодировать в общий формат, и инструмент должен решить, что делать с разными размерами; обычно он добавляет чёрные полосы.
Что делают наши инструменты
Все они работают в вашем браузере, поэтому файл никуда не загружается. Вот как каждый из них обращается с перекодированием на основном движке, который использует встроенную в браузер поддержку WebCodecs. Если браузер не может обработать конкретный файл таким способом, инструменты переходят на запасной вариант — сборку ffmpeg на WebAssembly, которая перекодирует видео.
- Обрезка видео, режим «Обрезать»: если оставляемая часть начинается в самом начале видео, а выходной формат поддерживает исходные кодеки, видео и звук копируются потоком. Если оставляемая часть начинается позже, видео перекодируется — благодаря этому обрезка точна до кадра, а не привязана к ключевому кадру; звук тоже перекодируется.
- «Обрезка видео», режим «Вырезать» (удаление фрагмента из середины): обе оставшиеся части перекодируются с одинаковыми настройками, а затем соединяются без повторного перекодирования. Если удаляемый фрагмент касается начала или конца, всё работает как обычная обрезка.
- Разделение видео: каждая часть создаётся как отдельная обрезка, поэтому первую часть можно скопировать потоком, а все последующие перекодируются. Делить можно на заданное число частей, по длительности или в своих точках, с выводом в MP4, MOV, MKV или WebM.
- Склейка: инструмент «Объединение видео» открывает видеоредактор, где вы расставляете клипы на таймлайне. При экспорте всегда создаётся новое видео с выбранными вами разрешением, частотой кадров и битрейтом, поэтому можно объединять клипы разных размеров и с разными кодеками.
- Поворот видео: в классическом инструменте для поворота поворот MP4 или MOV, кодек которого поддерживается этим контейнером, выполняется без перекодирования — с помощью флага поворота, который считывает плеер. Отражение, поворот с выводом в MKV или WebM и любой поворот, выполненный ИИ-ассистентом, перекодируют пиксели.
Как сохранить качество, если перекодирования не избежать
Однократное перекодирование с разумным битрейтом очень трудно заметить. Проблемы с качеством возникают из-за повторения процесса или слишком сильного снижения битрейта.
- Режьте исходный файл, а не экспорт экспорта.
- По возможности выполняйте всю обрезку за один проход, а не обрезайте, потом делите, потом снова обрезайте.
- Сохраняйте выходное разрешение таким же, как у исходника, если только вам не нужен ещё и файл поменьше.
- Выбирайте тот же контейнер, что и у исходника, если другой не нужен: так у инструмента больше шансов скопировать потоки там, где это возможно.
Когда нужна полностью беспотерьная обрезка по ключевым кадрам
Если у вас очень длинная запись и нужно отрезать начало, не трогая остальное, правильный выбор — программа для компьютера, которая работает исключительно копированием потоков. Для этого создано приложение с открытым исходным кодом LosslessCut, а в командной строке ffmpeg то же самое делается с параметром копирования, например: ffmpeg -ss 00:01:00 -i input.mp4 -t 30 -c copy output.mp4. Учтите, что начало сдвинется к ближайшему ключевому кадру перед указанным временем.
Для повседневных клипов, где точность до кадра важнее, чем избежать одного перекодирования, инструментом для обрезки видео пользоваться быстрее, и его не нужно устанавливать. Чтобы заодно уменьшить размер, завершите обработку в компрессоре видео.
Инструменты из этого руководства
Частые вопросы
01
02
03