Добавьте два видео без дублирования FFMPEG

#ffmpeg #video-processing #h.264 #video-capture #mkv

Вопрос:

Допустим,у нас есть 2 видеофайла (X, Y) в одном формате, кодеке и размерах.

X-это более длинное видео с размером в несколько гигабайт. Y-короткое 10-секундное видео. Я хочу добавить Y в конец X, не создавая еще одну копию X (потому что она большая по размеру)

Мне приходится повторять этот процесс в течение нескольких часов, когда одно за другим появляется множество 10-секундных видеороликов.

В настоящее время я объединяю файлы с помощью ffmpeg.

ffmpeg -f concat -safe 0 -i chunk.list -c copy final-video.mkv

chunk.list содержит имена файлов X и несколько 10-секундных видео. После этого X будет удален и заменен на final-video.mkv . Затем повторите.

Но для этого требуется вдвое больший объем памяти и операций ввода-вывода. Как это сделать, не создавая дубликатов?

Это нормально-дублировать эти 10-секундные видео. Но дублирование этого большего файла X действительно снижает производительность.

Дополнительная информация :

Все эти видео будут закодированы с помощью H264, H265, VP8 или VP9 и будут содержаться в формате MKV или MP4, как они есть codec copy friendly . Будет использоваться только один из этих форматов.

Это для специального регистратора экрана, который должен работать на облачных и упреждающих удаленных рабочих столах (Linux). Интерфейс браузера HTML/JS захватывает экран и отправляет на серверную часть (Golang) в виде фрагментов через HTTP. Сетевой маршрут не определен и ненадежен, так как между внешним и внутренним интерфейсом могут быть брандмауэры/прокси-серверы. Поэтому мы не можем использовать такие соединения, как UDP. Поэтому единственный вариант-отправлять фрагменты видео по протоколу HTTP.

Это ОКАМЕНЕЛОСТЬ на https://github.com/HasinduLanka/screencorder

Комментарии:

1. а) ffmpeg не редактирует файлы на месте, б) даже если бы это было так, файлы MP4 и MKV не подходят для редактирования. Вам понадобится место для временного файла.

2. Существует ли «удобный для добавления» видеоформат?

3. MPEG-TS, но вам все равно понадобится временный файл.