mediastreamsegmenter прекращает отправку метаданных id3 с использованием HLS
Я использую комбинацию ffmpeg
и Apple mediastreamsegmenter
а также id3taggenerator
создать поток HLS со встроенными в него метаданными (ID3). У меня запущены все приложения, и я могу извлечь метаданные из потока на стороне клиента, но проблема в том, что по истечении случайного промежутка времени клиент перестает получать метаданные в потоке.
Вот что у меня сейчас работает:
Это ffmpeg
а также mediastreamsegmenter
часть:
ffmpeg -i udp://@:5010 -c:v libx264 -crf:v 22 -b:v 500k -preset:v veryfast -c:a libfdk_aac -b:a 64k -f mpegts - | mediastreamsegmenter -b http://localhost/stream -f /usr/local/nginx/html/stream/ -t 10 -s 4 -S 1 -D -y id3 -m -M 4242 -l log.txt
Это принимает поток udp на локальном хосте через порт 5010 и кодирует видео и аудио в H.264 и AAC, соответственно. Он передает сегменты транспортного потока MPEG-2 на mediastreamsegmenter
который в свою очередь генерирует .M3U8
файл и связанный .ts
файлы и размещение их на NGINX
веб сервер. mediastreamsegmenter
также прослушивает порт 4242 для TCP-трафика от id3taggenerator
который я покажу, как я использую это сейчас:
id3taggenerator -text '{"x":"12","y":"36"}' -a localhost:4242
Как видите, я отправляю несколько простых координат xy в формате JSON в виде текста mediastreamsegmenter
прослушивание порта 4242. На самом деле я сейчас использую скрипт Python для отправки некоторых тестовых данных. Вот сценарий:
#!/usr/local/bin/python3
from subprocess import call
from time import sleep
for i in range(0, 10):
for j in range(0, 10):
x = str(20 * i)
y = str(20 * j)
print("X: " + x + " - Y: " + y)
call(["id3taggenerator", "-text", "{\"x\":\"" + x + "\",\"y\":\"" + y + "\"}", "-a", "localhost:4242"])
sleep(1.0)
Этот скрипт просто отправляет кучу координат xy, используя id3taggenerator
CLI. Я поправил sleep
сумма от 0,1 до 15, и это не имеет никакого значения. Клиентское приложение, которое получает метаданные из потока, печатает только от 4 до 35 точек, но никогда не получало все координаты xy.
Мне интересно, есть ли ограничение на количество метаданных, которые могут быть отправлены за кадр, но я не могу найти ничего, что указывало бы жесткое ограничение для любого из этих инструментов...