Вставка метаданных в потоковое видео - PullRequest
6 голосов
/ 17 апреля 2020

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


Текущий сценарий:

Кто-то в потоковом режиме видео со звуком через OBS на медиа-сервер, клиенты подключаются через веб-сайт.

[Поток OBS / Поток видео] -> [Сервис AWS / External Streaming] -> Клиенты


Требуемый сценарий:

захватить этот поток через пользовательский медиа-сервер и манипулировать им, вводя определенные метаданные в определенные моменты во время прямой трансляции . Обратите внимание на важность live .

[OBS Stream / Video Stream] -> [My Custom Node.js Сервер для вставки метаданных] -> [AWS / External Потоковая служба] -> Клиенты


Идея:

Идея состоит в том, что я хочу синхронизировать поток, например, с некоторым всплывающим окном. Поток протокола по умолчанию кажется RTMP от OBS, но, возможно, это можно изменить. В определенный момент времени в прямом эфире видеоплеер html5 на веб-сайте может считывать эти теги из прямого эфира (через некоторую дополнительную библиотеку, такую ​​как video. js) и давать указание приложению JS показать некоторый текст. В конце концов, он сводится к синхронизации видеопотока с текстовым потоком (например, через соединение с веб-сокетом)

Потенциальные решения:

  • теги ID3 . Я читал о тегах ID3 в файлах MP3, но, похоже, это не то, что я ищу, поскольку ему нужен полный файл .mp3 upfront и он не используется для потоков ( Динамически вводить ID3 в FFMPEG Live Stream ). Я хочу динамически внедрять метаданные в этот поток. Например, в любое время введите идентификатор (динамически выбранный), который, например, должен ссылаться на базу данных.

  • LTC / линейный временной код / ​​SMPTE возможно ли это как-то встроить в видеопоток с node.js? это позволило бы мне сопоставить тайминги с идентификатором на клиенте.

Возможно ли это сделать при наличии входящего видеопотока со звуком? и если да, то каков формат потока и как вводить метаданные?


EDIT : кажется, что RTMP не поддерживается без fla sh в браузере. Это не go, поэтому мне нужно будет использовать другой формат потока, такой как HLS / FLV?

1 Ответ

4 голосов
/ 22 апреля 2020

Звучит так, будто вы используете что-то вроде Liquid soap, так как ваш потоковый сервер сделает то же самое для вставки метаданных в поток. Множество опций для манипулирования метаданными, которые вы можете исследовать.

Что касается декодирования на стороне клиента, вы, возможно, могли бы использовать читаемый поток javascript внутри сервисного работника, чтобы разделить вывод сервера на метаданные / видео и обработать, как вы видите fit.

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

...