Сохраняйте ffmpeg, конвертируя изображения в видео при поступлении новых изображений - PullRequest
0 голосов
/ 19 сентября 2019

Есть ли способ сохранить ffmpeg преобразовывать изображения, поступающие в HLS, и останавливать, когда я захочу?

Я использую ffmpeg для преобразования изображений в m3u8 / ts для потоковой передачи.Устройство камеры будет отправлять изображения 24/7, и ffmpeg преобразует их, когда пользователи запрашивают, пока они не перестанут смотреть.

Пока я получаю изображения с устройства камеры по сети Java, а затем перемещаю эти изображения на вход ffmpeg.каталог и конвертировать те с C ++.Это цикл, который выполняет эту работу, поэтому новый ffmpeg выполняется при каждом перемещении изображений.

Проблема в том, что слишком много оставшихся файлов ts, и они занимают много места на сервере.Поэтому я попытался удалить их с помощью опции delete_segments, но поскольку ffmpeg выполняется каждый раз, он не может удалить сегменты, сделанные из ffmpeg, прямо перед ним.

Вот несколько способов, которые я рассмотрю:

  1. Чтобы удалить файлы с помощью другой функции, без ffmpeg.
  2. Может быть, передавать изображения непосредственно на вход ffmpeg и каким-то образом заставить ffmpeg продолжать преобразовывать эти изображения в ts.(И я не мог придумать как-нибудь)
  3. Или, возможно, изменить всю структуру.

Было бы намного проще с вариантом 1, но было бы здорово, если бы я могсделать это с помощью собственных функций ffmpeg.

1 Ответ

0 голосов
/ 23 сентября 2019

Вы можете использовать список входных файлов, который может быть специальным файлом (например, каналом FIFO).

Тогда ваша команда может выглядеть следующим образом:

mkfifo mylist.pipe
ffmpeg -f concat -safe 0 -i mylist.pipe output.mkv

И вы можете добавитькаждое изображение в mylist.pipe выглядит следующим образом:

echo "file '/path/to/image.png'"  >mylist.pipe
echo "file '/path/to/image2.png'" >mylist.pipe

Если пути относительные, вам не нужна деталь -safe 0.

См. https://trac.ffmpeg.org/wiki/Concatenate#Automaticallyappendingtothelistfile

...