Помещение двух видеофайлов встык звучит как самая дешевая операция в мире, и около пяти минут я в это поверил. Затем я присоединился к клипу 1280x720 со скоростью 30 кадров в секунду до клипа 640x480 со скоростью 25 кадров в секунду, используя самый быстрый доступный метод, который копирует потоки и ничего не переписывает. он создал файл. Файл утверждал, что одиннадцать пунктов девять девять девять шесть секунд, когда два клипа в сумме составляют одиннадцать, в контейнере указано 1280x720, а вторая половина потока составляла 640x480, а MUXER печатал предупреждение о переписанных временных метках для каждого кадра второго клипа. Все, что касается присоединения к видео, следует из того, почему это происходит.
TL;DR: Дешевое соединение работает только тогда, когда оба файла уже согласуются с кодеком, разрешением, частотой кадров и базой времени, чего отснято не с двух устройств. Честный маршрут декодирует оба и кодирует один новый файл, который медленнее и создает что-то, что воспроизводит. Измерен здесь: метод копирования сообщил 11,996 секунды в течение 11 секунд отснятого материала и объявил неверное разрешение; 11.000 секунды повторно выдавали ровно 11,000 секунд при одном согласованном 1280x720 за 0,63 секунды. Зажимы разных размеров должны быть сначала вставлены в одну раму, иначе соединение полностью отказывается. выше видеоредактор Все это делает в браузере, до восьми клипов и тридцати минут.
Почему два клипа не могут просто склеиваться?
Потому что видеофайл не является потоком изображений с заголовком на нем. Это контейнер, содержащий закодированные потоки, и кодирование несет состояние.
H.264 сжимает, описывая большинство кадров как отличия от других кадров. Ключевой кадр стоит один, все после него определяется относительно того, что было раньше, до следующего ключевого кадра. Декодеру также нужны наборы параметров потока, которые описывают разрешение, цветовой формат и профиль, и он содержит временную базу, которая преобразует числа каждого пакета в секунды.
Два файла, созданные двумя устройствами, ни в чем не согласны. Разное разрешение означает разные наборы параметров. Разная частота кадров обычно означает другое время. Даже два клипа с одного и того же телефона, записанные с разницей в год, могут отличаться, потому что приложение камеры изменило настройки энкодера.
Конкатенирование байтов дает вам поток, декодер которого указан в заголовке и передает другую на полпути. Иногда игрок справляется. Часто он показывает первый клип и останавливается, или воспроизводит второй как цветной шум.
Что дает быстрый метод?
Файл, куча предупреждений и продолжительность, которая неверна.
ffmpeg's Конкат Демуксер С помощью копирования потока — это метод, который каждый «присоединяется к ним» «Просто в Интернете», и это действительно правильный инструмент, когда входные данные совпадают. Направил на два моих несоответствующих клипа, он успешно выходит, и вот что он сдает назад:
| Мера | ожидаемый | произведенный |
|---|---|---|
| длительность | 11.000 с | 11.996 с |
| заявленная резолюция | одно значение, правильно | 1280x720 для потока, который становится 640x480 |
| Предупреждения о временной метке | нет | по одному на кадр второго клипа |
Все предупреждения говорят одно и то же:
Non-monotonic DTS; previous: 90981, current: 76133; changing to 90982.
This may result in incorrect timestamps in the output file.
Вторые метки клипа перезапускаются с нуля, как и в своем собственном файле, и муксатор не будет записывать поток, чьи временные метки уходят в обратном направлении. Таким образом, он изобретает новые, по одному кадру за раз, и накопленная разница между реальным временем и изобретенным временем — это то, откуда берется дополнительная секунда.
После этого ffmpeg может декодировать обе половины, потому что ffmpeg необычайно терпим. браузера нет. Это файл, который отлично играет на вашем компьютере и показывает черный прямоугольник для зрителя.
Сколько стоит присоединение через фильтр фильтра и что он покупает?
Это стоит полного декодирования и кодирования. Он покупает правильный файл.
Вместо копирования потоков каждый вход декодируется в кадры, кадры обрезаются и соединяются внутри графа фильтра, и один новый поток закодирован из результата. Каждый кадр проходит через декодер и кодер, что является настоящей работой.
Он покупает то, что на выходе есть один кодек, одно разрешение, один частота кадров и один непрерывный набор временных меток, потому что все это было закодировано сразу с нуля. На одних и тех же двух клипах:
| Мера | Метод копирования | График фильтра |
|---|---|---|
| длительность | 11.996 с | 11.000 с |
| Резолюция | Заявлено 1280x720, становится 640x480 | 1280x720 по всему |
| строение | 305 | 305 |
| Время экспорта | мгновение | 0,63 с |
| Размер | меньший | 2,1 МБ |
0,63 секунды работы в течение 11 секунд вывода на рабочем столе, работающий под управлением ffmpeg. На вкладке браузера через WebAssembly она в несколько раз медленнее, что является честным обменом и причиной ограничений количества клипов.
Почему каждый клип нуждается в пересчете на метки времени?
Поскольку конкатенация в графе фильтра соединяет потоки, а метки времени потока являются абсолютными.
Каждые кадры приходят, измеряемые от начала собственного файла. Обрежьте сечение от середины клипа, и эти кадры все еще говорят «Это происходит через 42 секунды». Присоединяйтесь к клипу, который заканчивается через 6 секунд, и у вас будет поток, который прыгает с 6 до 42, с 36 секундами ничего между ними.
setpts=PTS-STARTPTS Вычитает собственный запуск каждого клипа из каждого кадра, поэтому каждый клип начинается с нуля до того, как он будет соединен. аудиоэквивалент asetpts, йо- Без них вывод проигрывает первый клип, потом длительное зависание, потом второй. Это самая распространенная ошибка в рукописных командах ffmpeg, и она молчит: файл действителен, а продолжительность просто неверна.
Что происходит, когда клипсы разные?
В присоединении отказывают, и до недавнего времени этот отказ был здесь всей историей.
выше Конкат фильтр Сравнивает свои входные данные и не будет работать, если размеры видео или пропорция образца не согласны:
Input link in0:v0 parameters (size 640x480, SAR 1:1) do not match the
corresponding output link in0:v0 parameters (1280x720, SAR 1:1)
Failed to configure output pad on Parsed_concat_8
Это прервано, а не предупреждение: файл не производится. Два телефона или телефонный клип и запись экрана — это именно тот случай, который его вызывает, и это обычная причина, по которой кто-то вообще присоединяется к клипам.
Аудио не нуждается в такой помощи, о чем стоит знать, потому что она нелогична. Тот же график соединил монодорожку 44,1 кГц к стереофонии 48 кГц без жалоб и дал точно 11.000 секунд. Только видео сторона строгая.
Исправление состоит в том, чтобы установить один кадр для всей хроники и вставить в нее каждый клип перед соединением. Высота исходит из выбранного выходного разрешения или от первого клипа, когда вы сохраняете разрешение источника, а ширина соответствует соотношению сторон клипа, поэтому временная шкала портретной записи остается портретной. Затем каждый клип масштабируется так, чтобы он помещался внутри этой рамки и заполнял его:
scale=1280:720:force_original_aspect_ratio=decrease,
pad=1280:720:(ow-iw)/2:(oh-ih)/2,setsar=1
Подгонка означает, что клип другой формы, а не растянутый, а меньшее из двух зол, когда клип 4:3 соответствует временной шкале 16:9. setsar=1 Не является украшением: фильтр сравнивает соотношение сторон образца, а также размеры пикселей, поэтому два клипа могут быть одинакового размера и при этом быть отвергнуты.
Оба измерения округлены до четных чисел, так как H.264 в 4:2:0 сохраняет цвет в половине разрешения в каждом направлении и не может закодировать нечетную ширину или высоту.
Почему только восемь клипов и тридцать минут?
Поскольку каждый клип стоит декодирования, проход внутри вкладки браузера, а вкладка имеет фиксированный объем памяти.
Восемь входов означают восемь декодеров, работающих на одном и том же графе фильтров, плюс кодер, а также каждый исходный файл, хранящийся в памяти, поскольку нет диска для потоковой передачи. Тридцать минут вывода — это точка, которую код занимает достаточно много времени, чтобы люди предполагают, что страница повесила.
Ни один из пределов не является законом формата. Оба являются тем, что билд, который сборка браузера перестает быть приятным, и они указаны заранее, а не обнаруживаются, когда вкладка вылетает сорок минут в экспорт. Отклоняется также клип, короче десятой секунды, потому что ниже он не вносит никаких кадров и ошибок ffmpeg, а не предупреждает.
Для всего большего, это не тот инструмент, а рабочий стол для настольных компьютеров — правильный.
Чем обрезка здесь отличается от триммера?
Обрезка внутри соединения точная, и это ничего не стоит лишнего.
посвященный видеотриммер Предлагает быстрый режим, который копирует поток и может вырезать только на ключевом кадре, поэтому начало обрезки иногда приземляется на десять секунд раньше. его руководство Подробно расскажет почему.
Здесь не существует этой торговли, потому что экспорт все равно перекодирует все. Обрезка происходит внутри графа фильтра, на декодированных кадрах, поэтому разрез в 4,3 секунды — это сокращение на 4,3 секунды. Вы получаете точность кадра бесплатно, как побочный эффект от стоимости, которую вы уже платите.
Так что, если вы хотите обрезать один клип и ничего больше, режим быстрого триммера намного быстрее. Если вы что-то присоединяетесь, обрезайте здесь.
Что делает изменение скорости со звуком?
С этим нужно обрабатывать отдельно, а арифметика не такая, как для видео.
Скорость видео — это операция метки времени: setpts=PTS/2 Вдвое время презентации каждого кадра и сами кадры нетронуты. Аудио не может работать таким образом, потому что воспроизведение семплов в два раза быстрее повышает высоту тона на октаву. выше atempo Вместо этого фильтруйте повторные выборки, сохраняя высоту тона и изменяя продолжительность.
atempo Принимается всего 0,5 до 2,0 за один проход большую часть своей жизни, поэтому 4-кратное изменение построено как два 2-х прохода и 0,25x смены как два 0,5-кратных прохода. Текущие сборки подняли потолок, а FFmpeg 8.1 сообщает о диапазоне от 0,5 до 100. измеряется на одном клипе, один atempo=4 и цепной atempo=2,atempo=2 Приземлился на 11 миллисекунд.
Цепочка по-прежнему строится, потому что ядро WebAssembly извлекается во время выполнения, а не прикрепляется к версии, и умножение проходов правильно для каждой сборки, которая когда-либо отправляла фильтр. Предлагаемый диапазон скорости от 0,25x до 4x, где результат все еще редактируется, а не новинка.
MP4 или WebM?
MP4 Если у вас нет конкретной причины, и причина почти всегда является лицензией, а не аргументом качества.
| MP4 | webm | |
|---|---|---|
| видеокодек | H.264 | вп9 |
| аудиокодек | воздушное заключение | опус |
| играет в | все | Браузеры, большинство современных игроков |
| Кодировать скорость на вкладке | более энергичный | значительно медленнее |
| Размер аналогичного качества | более крупный | меньший |
VP9 производит файлы меньшего размера для того же воспринимаемого качества, и это бесплатные, что важно для одних проектов, а не для других. Собственный ffmpeg Руководство по кодированию VP9 Тупо про скорость. Чем не является быстро. Путь WebM здесь работает с более высоким CRF с дедлайном в реальном времени и cpu-used 5, которые являются настройками, которые код настольного компьютера будет считаться небрежным, потому что без них код VP9 на вкладке занимает достаточно много времени, чтобы почувствовать себя сломанным.
Путь MP4 использует -preset veryfast В CRF 23 с yuv420p, плюс -movflags +faststart, который перемещает индекс в переднюю часть файла, чтобы он воспроизводился при загрузке, а не только после.
Насколько большим будет экспорт и сколько времени он займет?
Размер предсказуем по разрешению. Время ни от чего не предсказуемо.
Поскольку экспорт всегда перекодируется, размер исходного файла говорит вам очень мало о результатах. Показанная оценка исходит из выходной высоты: примерно 5 Мбит/с при 1080p, 2,5 при 720p, 1,2 ниже, при этом WebM попадает около 70% фигурки MP4, а звуко- до 128 кбит/с, если не приглушены.
Это оценка и обозначается как единая, потому что содержание важнее любой формулы. Статический снимок интервью и ручка с помощью ручного панорамирования через деревья с одним и тем же разрешением и одним и тем же CRF различаются в несколько раз, поскольку CRF нацелена на уровень качества и тратит любой битрейт, который принимает.
Время зависит от вашей машины, разрешения, количества клипов и того, есть ли на вкладке что-либо еще. Собственный ffmpeg выше 11 секунд вывода вывода за 0,63 секунды; ожидайте, что браузер будет несколько раз медленнее, и ожидайте, что WebM снова будет медленнее.
Что это не делает
Он присоединяется, обрезает, меняет заказы, масштабируется, меняет скорость и падает звук. Это весь набор функций, и пробел между ним и видеоредактором стоит уточнить.
Нет ни переходов, ни заголовков, ни музыкального трека, ни коррекции цвета, ни кадрирования, ни тома для каждого клипа, ни чего-либо ключевого кадра, ни предварительной настройки готовой временной шкалы. Каждый клип обрезается и помещается, ко всем применяется один набор выходных настроек, и результат закодирован.
Это охватывает реальную и общую работу: несколько записей, которые должны стать одним файлом, обрезанными до полезных частей, в правильном порядке, при размерах что-то примет. Для всего, что связано с творческим решением, используйте редактор.
В каком порядке идут клипы, и можно ли их изменить?
Порядок, который вы добавили, и да, с кнопками вверх и вниз на каждом клипе.
Переупорядочение — это операция списка, а не видео: перемещение клипа меняет, какой индекс он занимает в графе фильтра, и ничего не перечитывается или перекодируется до тех пор, пока экспорт не запустится. Таким образом, движение происходит мгновенно, как бы ни были большие файлы, и вы можете бесплатно переставлять временную шкалу столько раз, сколько захотите.
Кнопки, а не перетаскивание, — это осознанный выбор для списка из восьми предметов. Каждый из них содержит метку, именующую клип, который она перемещает, поэтому порядок можно изменять с помощью клавиатуры и читаемо с помощью считывателя экрана, ни один из которых ручка перетаскивания не дает вам лишней работы.
Стоит проверить перед экспортом направление последовательности. Несколько записей одного и того же события обычно приходят от сборщика файлов в алфавитном порядке, который является заказом, который имена файлов камеры производят, и не всегда в порядке, в котором были сделаны записи.
Почему это работает в браузере?
Потому что кадры обычно такие, которые вы бы предпочли не загружать, а работа не нуждается в сервере.
Каждая операция здесь - ffmpeg и ffmpeg Компиляционная в WebAssembly, йо- Файлы читаются с вашего диска на вкладку, декодируются туда, присоединяются туда, закодируются и возвращаются обратно в качестве загрузки. Ничего не загружается, очереди не вмещают ваши кадры, а копия на машине, которой вы не управляете, нет.
Клипы, присоединившиеся к клипам, — это интервью, консультации, семейные записи, снимки экрана внутреннего программного обеспечения, черновики под эмбарго. Обычная альтернатива загружает несколько сотен мегабайт в бесплатный сервис, преобразует ее на аппаратное обеспечение, о котором вы ничего не знаете, и держит его в условиях, которые никто не читает.
Стоимость составляет восемь клипов и тридцатиминутные потолки, а код, который медленнее, чем настольный. Оба указаны до того, как вы начнете, на что стоит сделка.



