HLS. js / Wowza / Cloudfront Browser не загружает мультимедиа после перезапуска энкодера - PullRequest
0 голосов
/ 25 апреля 2020

Мой рабочий процесс:

  • С помощью ffmpeg я отправляю поток RTMP в WOWZA App1.
  • Приложение 1 отправляет поток во внутреннее второе приложение (Приложение 2).
  • App2 транскодирует и пакетирует в hls и является источником распространения Cloudfront.
  • Cloudfront обслуживает потоки для пользователей.
  • Плеер на пользователях основан на HLS. js.

Чтобы подготовиться к другому сценарию ios Я принудительно перезапустил App2 во время тестовой передачи, в данном случае App1 все еще получает поток от ffmpeg и пытается отправить его в App2, после того как app2 будет готово, эта ссылка снова устанавливается, и App1 продолжает отправку потока в App2, но на стороне клиента нет видео.

  • Перед перезапуском chunklist.m3u8 перечисляет много фрагментов до 17-го числа: media-u3510ez40_17.ts
  • Затем, пока App2 перезапускает, chunklist.m3u8 не существует и Cloudfront отправляет ошибку 404.
  • И затем, когда App2 возвращается, chunklist.m3u8 выводит новый список чанков, начинающийся с 1, с новым идентификатором: media-u1ofkjj9w_1.ts

Проблема в том, что нет видео и сетевой трафик c показывают, что браузер не загружает новые перечисленные чанки.

chunklist.m3u8 продолжает добавлять новые чанки, но браузер не загружает ничего из этого ... пока не появится 18-й чанк ... и перезапуск видео.

Я пробую много раз, и проблема та же, до перезапуска последний чанк имеет номер N, а после перезапуска нет видео до достижения де N+1 Чанк, но идентификаторы разные.

Я не знаю, есть ли эта проблема на Wowza, Cloudfront или HLS. js player: /

chunklist.m3u8 Перед перезагрузкой:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:9
#EXT-X-MEDIA-SEQUENCE:1
#EXT-X-DISCONTINUITY-SEQUENCE:0
#EXTINF:8.333,
media-u3510ez40_1.ts
#EXTINF:8.333,
media-u3510ez40_2.ts
#EXTINF:8.334,
.
.
. 
media-u3510ez40_16.ts
#EXTINF:8.333,
media-u3510ez40_17.ts

chunklist.m3u8 После перезагрузки:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:17
#EXT-X-MEDIA-SEQUENCE:1
#EXT-X-DISCONTINUITY-SEQUENCE:0
#EXTINF:16.396,
media-u1ofkjj9w_1.ts
#EXTINF:8.333,
media-u1ofkjj9w_2.ts
.
.
.
media-u1ofkjj9w_16.ts
#EXTINF:8.333,
media-u1ofkjj9w_17.ts
#EXTINF:8.333,
media-u1ofkjj9w_18.ts

1 Ответ

0 голосов
/ 29 апреля 2020

Необходимо установить для свойства cupertinoCalculateChunkIDBasedOnTimecode значение true в разделе Добавить пользовательское свойство приложения Wowza Streaming Engine. См. Это: https://www.wowza.com/docs/how-to-configure-apple-hls-packetization-cupertinostreaming

Также обратите внимание, что это поможет в случае кодеров, отправляющих синхронизированные временные коды в Wowza. Для кодировщика, который не отправляет синхронизированные временные коды, я предлагаю использовать абсолютный временной код независимо от того, отправляет его кодировщик или нет. Это поможет приложению восстановиться с номера чанка N + 1 после перезапуска.

Следующая страница поможет вам правильно настроить его. http://thewowza.guru/how-to-set-stream-timecodes-to-absolute-time/

Об части изменения идентификатора сеанса. При использовании Wowza в качестве источника для распространения Cloudfront необходимо включить httpOriginMode и отключить httpRandomizeMediaName , чтобы заставить его работать правильно. Ниже Wowza do c поможет вам правильно его настроить, https://www.wowza.com/docs/how-to-configure-a-wowza-server-as-an-http-caching-origin

...