在我们的 react-native-web 应用程序中,作为 Tizen 智能网络应用程序在三星智能电视上运行,我们使用 ShakaPlayer 2.5.6c 播放 DASH 直播流。
问题是有时流无法启动。已收到 DRM 许可证,正在获取片段,但不知何故,播放器没有显示任何帧。播放器不会记录任何错误。数小时后问题消失。此外,该问题似乎并不影响所有设备。
直播流来自 Halo 包,该包也用于其他客户端(ExoPlayer、AVplayer 和 Chromecast ShakaPlayer),没有任何问题。我们使用钛 DRM 许可证包装。
以下是失败流的详细时间表。该应用程序为事件 abrstatuschanged、adaptation、buffering、drmsessionupdate、emsg、error、expirationupdated、largegap、loading、manifestparsed、onstatechange、onstateidle、streaming、unloading 和 variantchanged 注册播放器侦听器。此外,每 2.5 秒写入一次播放头、当前清单和缓冲信息。对于每个段提取,都会显示响应日期标题。
我们尝试了多种配置,包括不同的缓冲参数值、defaultPresentationDelay jumpLargeGaps 和 videoRobustness。所有的结果都是一样的。
下面的时间线显示同一段被多次提取。看起来播放器正在重试获取片段,但没有一个失败。
起初看起来存在 DRM 问题,播放器无法解码视频块。当播放成功时,我们会在“drmsessionupdate:CDM 已接受许可响应”事件之后立即看到额外的“expirationupdated:EME 会话的到期时间发生变化”事件,这可以支持这一理论。但是,播放器不会引发错误。
这种行为的原因可能是什么?请注意,该问题经常出现,但并非总是如此。
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]