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.

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

0 ответов

Другие вопросы по тегам