В нашем приложении-реактиве, работающем как интеллектуальное веб-приложение Tizen на смартфонах Samsung, мы используем ShakaPlayer 2.5.6 c для воспроизведения прямых трансляций DA SH.
Проблема является то, что иногда поток не запускается. Лицензия DRM получена, сегменты извлекаются, но каким-то образом проигрыватель не показывает никаких кадров. Плеер не регистрирует никаких ошибок. Через несколько часов проблема исчезает. Кроме того, проблема, похоже, не затрагивает все устройства.
Прямые трансляции происходят из пакетов Halo, которые также используются для других клиентов (ExoPlayer, AVplayer & Chromecast ShakaPlayer), без каких-либо проблем. Мы используем титановую DRM-лицензию.
Ниже приведен подробный график того, что происходит с ошибочным потоком. Приложение регистрирует прослушиватели игроков для событий abrstatusaged, адаптации, буферизации, drmsessionupdate, emsg, error, expirationupdated, largegap, загрузки, manifestparsed, onstatechange, onstateidle, потоковой передачи, выгрузки и вариантной замены. Кроме того, каждые 2,5 секунды записывается точка воспроизведения, текущий манифест и информация о буферизации. Для каждой выборки сегмента отображается заголовок даты ответа.
Мы пробовали использовать широкий диапазон конфигураций, включая различные значения параметров буферизации, defaultPresentationDelay jumpLargeGaps и videoRobustness. Все с одинаковым результатом.
Временная шкала ниже показывает, что один и тот же сегмент выбирается несколько раз. Похоже, что проигрыватель пытается извлечь сегменты, хотя ни один из них не получается.
Сначала кажется, что существует проблема DRM, когда проигрыватель не может декодировать фрагменты видео. При успешном воспроизведении мы видим дополнительное «истечение срока действия: произошла смена времени окончания сеанса EME» сразу после «drmsessionupdate: CDM принял событие ответа лицензии», что может поддержать эту теорию. Однако игрок не выдает никаких ошибок.
В чем может быть причина такого поведения? Обратите внимание, что проблема появляется часто, но не всегда.
2020-3-14 11:10:55 loading
2020-3-14 11:10:55 onstatechange "attach"
2020-3-14 11:10:55 onstatechange "media-source"
2020-3-14 11:10:55 onstatechange "manifest-parser"
2020-3-14 11:10:55 onstatechange "manifest"
2020-3-14 11:10:55 networkEngine manifest response
2020-3-14 11:10:55 manifestparsed
2020-3-14 11:10:55 onstatechange "drm-engine"
2020-3-14 11:10:55 onstatechange "load"
2020-3-14 11:10:55 buffering true
2020-3-14 11:10:55 streaming
2020-3-14 11:10:55 abrstatuschanged
2020-3-14 11:10:55 seekRange {"start":266177.98933333333,"end":266197.85233330727}
2020-3-14 11:10:55 onstateidle state: load
2020-3-14 11:10:56 video event: play
2020-3-14 11:10:56 network license request
2020-3-14 11:10:56 networkEngine segment "date":"Sat, 14 Mar 2020 10:10:29 GMT" audio1/Header.m4s
2020-3-14 11:10:56 networkEngine segment "date":"Sat, 14 Mar 2020 10:10:41 GMT" audio1/1388208802880.m4s
2020-3-14 11:10:56 networkEngine segment "date":"Sat, 14 Mar 2020 10:10:55 GMT" video2/Header.m4s
2020-3-14 11:10:56 network license response received
2020-3-14 11:10:56 drmsessionupdate the CDM has accepted the license response
2020-3-14 11:10:56 networkEngine segment "date":"Sat, 14 Mar 2020 10:10:41 GMT" video2/1388208801440.m4s
2020-3-14 11:10:57 abrstatuschanged
2020-3-14 11:10:57 adaptation an automatic adaptation causes the active tracks to change
2020-3-14 11:10:57 networkEngine segment "date":"Sat, 14 Mar 2020 10:10:43 GMT" audio1/1388208981440.m4s
2020-3-14 11:10:57 networkEngine segment "date":"Sat, 14 Mar 2020 10:10:38 GMT" video2/1388208081440.m4s
2020-3-14 11:10:57 networkEngine segment "date":"Sat, 14 Mar 2020 10:10:33 GMT" audio1/1388208082880.m4s
2020-3-14 11:10:57 networkEngine segment "date":"Sat, 14 Mar 2020 10:10:34 GMT" audio1/1388208261440.m4s
2020-3-14 11:10:57 networkEngine segment "date":"Sat, 14 Mar 2020 10:10:56 GMT" video3/Header.m4s
2020-3-14 11:10:57 networkEngine segment "date":"Sat, 14 Mar 2020 10:10:33 GMT" audio1/1388208082880.m4s HIT
2020-3-14 11:10:57 networkEngine segment "date":"Sat, 14 Mar 2020 10:10:33 GMT" audio1/1388208082880.m4s HIT
2020-3-14 11:10:57 networkEngine segment "date":"Sat, 14 Mar 2020 10:10:41 GMT" video3/1388208081440.m4s MISS
2020-3-14 11:10:57 networkEngine segment "date":"Sat, 14 Mar 2020 10:10:41 GMT" video3/1388208081440.m4s HIT
2020-3-14 11:10:57 networkEngine segment "date":"Sat, 14 Mar 2020 10:10:33 GMT" audio1/1388208082880.m4s HIT
2020-3-14 11:10:57 networkEngine segment "date":"Sat, 14 Mar 2020 10:10:33 GMT" audio1/1388208082880.m4s HIT
2020-3-14 11:10:57 networkEngine segment "date":"Sat, 14 Mar 2020 10:10:41 GMT" video3/1388208081440.m4s HIT
2020-3-14 11:10:57 networkEngine segment "date":"Sat, 14 Mar 2020 10:10:33 GMT" audio1/1388208082880.m4s HIT
2020-3-14 11:10:58 networkEngine segment "date":"Sat, 14 Mar 2020 10:10:33 GMT" audio1/1388208082880.m4s HIT
2020-3-14 11:10:58 networkEngine segment "date":"Sat, 14 Mar 2020 10:10:41 GMT" video3/1388208081440.m4s HIT
2020-3-14 11:10:58 current status player.isBuffering(): true; player.isInProgress(): false
2020-3-14 11:10:58 current manifest info delay: 10s; maxSegmentDuration: 2.25s; seekRange: [2020-3-14 11:10:25 - 2020-3-14 11:10:45]; usingPresentationStartTime: false;
2020-3-14 11:10:58 live presentationStartTime 2020-3-11 09:14:05
2020-3-14 11:10:58 live playhead time 2020-3-14 11:10:34
2020-3-14 11:10:58 networkEngine segment "date":"Sat, 14 Mar 2020 10:10:33 GMT" audio1/1388208082880.m4s HIT
2020-3-14 11:10:58 networkEngine segment "date":"Sat, 14 Mar 2020 10:10:41 GMT" video3/1388208081440.m4s HIT
2020-3-14 11:10:58 networkEngine segment "date":"Sat, 14 Mar 2020 10:10:33 GMT" audio1/1388208082880.m4s HIT
2020-3-14 11:10:58 networkEngine segment "date":"Sat, 14 Mar 2020 10:10:41 GMT" video3/1388208081440.m4s HIT
2020-3-14 11:10:58 networkEngine manifest response
2020-3-14 11:10:58 networkEngine segment "date":"Sat, 14 Mar 2020 10:10:33 GMT" audio1/1388208082880.m4s HIT
2020-3-14 11:10:58 networkEngine segment "date":"Sat, 14 Mar 2020 10:10:34 GMT" audio1/1388208261440.m4s HIT
2020-3-14 11:10:59 networkEngine segment "date":"Sat, 14 Mar 2020 10:10:41 GMT" video3/1388208081440.m4s HIT
2020-3-14 11:10:59 networkEngine segment "date":"Sat, 14 Mar 2020 10:10:37 GMT" audio1/1388208441920.m4s HIT
2020-3-14 11:10:59 networkEngine segment "date":"Sat, 14 Mar 2020 10:10:41 GMT" video3/1388208261440.m4s MISS
2020-3-14 11:10:59 networkEngine segment "date":"Sat, 14 Mar 2020 10:10:49 GMT" video3/1388208441440.m4s MISS
2020-3-14 11:10:59 networkEngine segment "date":"Sat, 14 Mar 2020 10:10:51 GMT" video3/1388208621440.m4s MISS
2020-3-14 11:10:59 networkEngine segment "date":"Sat, 14 Mar 2020 10:10:53 GMT" video3/1388208801440.m4s MISS
2020-3-14 11:11:00 networkEngine segment "date":"Sat, 14 Mar 2020 10:10:39 GMT" audio1/1388208622400.m4s HIT
2020-3-14 11:11:00 networkEngine segment "date":"Sat, 14 Mar 2020 10:10:41 GMT" audio1/1388208802880.m4s HIT
2020-3-14 11:11:00 buffering false
2020-3-14 11:11:00 current status player.isBuffering(): false; player.isInProgress(): false
2020-3-14 11:11:00 current manifest info delay: 10s; maxSegmentDuration: 2.25s; seekRange: [2020-3-14 11:10:28 - 2020-3-14 11:10:48]; usingPresentationStartTime: false;
2020-3-14 11:11:00 live presentationStartTime 2020-3-11 09:14:05
2020-3-14 11:11:00 live playhead time 2020-3-14 11:10:34
2020-3-14 11:11:00 buffered time [2020-3-14 11:10:31 to 2020-3-14 11:10:40]
2020-3-14 11:11:01 networkEngine manifest response
2020-3-14 11:11:03 current status player.isBuffering(): false; player.isInProgress(): false
2020-3-14 11:11:03 current manifest info delay: 10s; maxSegmentDuration: 2.25s; seekRange: [2020-3-14 11:10:30 - 2020-3-14 11:10:50]; usingPresentationStartTime: false;
2020-3-14 11:11:03 live presentationStartTime 2020-3-11 09:14:05
2020-3-14 11:11:03 live playhead time 2020-3-14 11:10:34
2020-3-14 11:11:03 buffered time [2020-3-14 11:10:31 to 2020-3-14 11:10:40]
2020-3-14 11:11:04 networkEngine manifest response
2020-3-14 11:11:05 current status player.isBuffering(): false; player.isInProgress(): false
2020-3-14 11:11:05 current manifest info delay: 10s; maxSegmentDuration: 2.25s; seekRange: [2020-3-14 11:10:33 - 2020-3-14 11:10:53]; usingPresentationStartTime: false;
2020-3-14 11:11:05 live presentationStartTime 2020-3-11 09:14:05
2020-3-14 11:11:05 live playhead time 2020-3-14 11:10:34
2020-3-14 11:11:05 buffered time [2020-3-14 11:10:31 to 2020-3-14 11:10:40]
2020-3-14 11:11:07 adaptation an automatic adaptation causes the active tracks to change
2020-3-14 11:11:07 networkEngine segment "date":"Sat, 14 Mar 2020 10:11:04 GMT" video3/1388208981440.m4s MISS
2020-3-14 11:11:07 networkEngine segment "date":"Sat, 14 Mar 2020 10:10:43 GMT" audio1/1388208981440.m4s HIT
2020-3-14 11:11:07 networkEngine segment "date":"Sat, 14 Mar 2020 10:10:45 GMT" audio1/1388209161920.m4s HIT
2020-3-14 11:11:07 networkEngine segment "date":"Sat, 14 Mar 2020 10:10:29 GMT" video7/Header.m4s HIT
2020-3-14 11:11:07 networkEngine segment "date":"Sat, 14 Mar 2020 10:10:47 GMT" audio1/1388209342400.m4s HIT
2020-3-14 11:11:07 networkEngine manifest response
2020-3-14 11:11:08 current status player.isBuffering(): false; player.isInProgress(): false
2020-3-14 11:11:08 current manifest info delay: 10s; maxSegmentDuration: 2.25s; seekRange: [2020-3-14 11:10:35 - 2020-3-14 11:10:55]; usingPresentationStartTime: false;
2020-3-14 11:11:08 live presentationStartTime 2020-3-11 09:14:05
2020-3-14 11:11:08 live playhead time 2020-3-14 11:10:39
2020-3-14 11:11:08 buffered time [2020-3-14 11:10:31 to 2020-3-14 11:10:42]
2020-3-14 11:11:08 networkEngine segment "date":"Sat, 14 Mar 2020 10:10:45 GMT" video7/1388209161440.m4s HIT
2020-3-14 11:11:09 networkEngine segment "date":"Sat, 14 Mar 2020 10:10:47 GMT" video7/1388209341440.m4s HIT
2020-3-14 11:11:10 current status player.isBuffering(): false; player.isInProgress(): false
2020-3-14 11:11:10 current manifest info delay: 10s; maxSegmentDuration: 2.25s; seekRange: [2020-3-14 11:10:38 - 2020-3-14 11:10:58]; usingPresentationStartTime: false;
2020-3-14 11:11:10 live presentationStartTime 2020-3-11 09:14:05
2020-3-14 11:11:10 live playhead time 2020-3-14 11:10:40
2020-3-14 11:11:10 buffered time [2020-3-14 11:10:31 to 2020-3-14 11:10:46]
2020-3-14 11:11:11 networkEngine manifest response
2020-3-14 11:11:12 networkEngine segment "date":"Sat, 14 Mar 2020 10:10:49 GMT" audio1/1388209522880.m4s HIT
2020-3-14 11:11:12 networkEngine segment "date":"Sat, 14 Mar 2020 10:10:51 GMT" audio1/1388209701440.m4s HIT
2020-3-14 11:11:13 current status player.isBuffering(): false; player.isInProgress(): false
2020-3-14 11:11:13 current manifest info delay: 10s; maxSegmentDuration: 2.25s; seekRange: [2020-3-14 11:10:40 - 2020-3-14 11:11:00]; usingPresentationStartTime: false;
2020-3-14 11:11:13 live presentationStartTime 2020-3-11 09:14:05
2020-3-14 11:11:13 live playhead time 2020-3-14 11:10:45
2020-3-14 11:11:13 buffered time [2020-3-14 11:10:31 to 2020-3-14 11:10:46]