Как синхронизировать видео HLS и / или MPEG-DASH на нескольких клиентах с помощью ExoPlayer? - PullRequest
0 голосов
/ 21 мая 2019

Я пытаюсь гарантировать синхронизацию между несколькими клиентами, использующими DASH и / или HLS.Синхронизация между каждым клиентом должна находиться в пределах 40 миллисекунд.

Прямая трансляция кажется очевидным выбором.Тем не менее, единственный способ действительно попасть в небольшие временные рамки синхронизации - это уменьшить время сегмента.Это единственное жизнеспособное решение?Существуют ли какие-либо теги, которые помогли бы мне удерживать клиентов в течение 40 миллисекунд до времени в реальном времени?

В настоящее время я использую FFMPEG для кодирования видео и аудио в живой контент.

1 Ответ

0 голосов
/ 22 мая 2019

Здесь есть несколько отдельных вопросов:

  • «Время в реальном времени» - если предположить, что в режиме реального времени происходит событие, которое транслируется, например, фактическое время удара по мячу в игре, а затем достижение полной сквозной доставки к Конечный экран в течение 40 миллисекунд расширяет границы любой возможной технологии доставки. Конечно, потоки HLS и DASH не дадут вам этого.

  • Ваша цель может состоять в том, чтобы каждый конечный пользователь отличался не более чем на 40 мс от каждого другого конечного пользователя - например, каждый пользователь получает широковещательную рассылку с 10-секундной задержкой, но эта задержка для каждого пользователя равна плюс-минус 40 мс. Это все еще довольно сложная проблема, поскольку, если у вас нет общих часов, к которым синхронизируются все устройства, вы будете полагаться на какой-то механизм, чтобы сигнализировать о положении в потоке между каждым устройством и некоторым центральным или распределенным механизмом управления, и, опять же, 40 мс - это не много времени, чтобы даже небольшие сообщения могли перемещаться туда-сюда вместе с любой обработкой, необходимой для вычисления любой разницы во времени и корректировки.

Синхронизация потоков мультимедиа, доставляемых через Интернет, - непростая проблема, но есть некоторая работа, на которую вы можете посмотреть, чтобы помочь вам получить некоторые идеи - см. Здесь несколько примеров: https://stackoverflow.com/a/51819066/334402

...