Мне нужно добавить I-кадры в середину mp4s в рекламные паузы, чтобы я мог сегментировать HLS и иметь I-кадры, когда видео возвращается. Я знаю, как это сделать при перекодировании всего видео и форсировании ключевых кадров в определенных местах, но я бы предпочел вырезать место (возможно, 1 секунду видео), где нужен ключевой кадр, добавить ключевой кадр, а затем сшить видео Вернуться вместе. Это должно значительно сократить время кодирования, поскольку я могу в основном копировать кодеки, за исключением одной секунды видео, где добавляется I-кадр.
Единственная проблема состоит в том, что профиль видео и настройки меняются, когда я добавляю I-кадр, и я не получаю чистую строчку, когда собираю все это вместе. Я понимаю, что могу выполнить перекодирование с помощью concat
, но я стараюсь избегать этого времени обработки.
Несколько простых примеров того, что я пытаюсь сделать с помощью ffmpeg:
ffmpeg -i input.mp4 -ss 30 -t 1 -c:a copy -y -copyts clipped2.mp4
ffmpeg -i input.mp4 -t 30 -c copy -y -copyts clipped1.mp4
ffmpeg -i "concat:clipped1.mp4|clipped2.mp4" -c copy -y newOutput.mp4
Возможно, мне придется использовать ffprobe
и указать битрейт, профиль и другие параметры для 1-секундного клипа, чтобы он не по умолчанию включал некоторые случайные вещи, но я все еще не могу заставить это работать правильно.
Кто-нибудь достиг этого? Это специально делается для вставки рекламы на стороне сервера.