在播放我们自己的一些受 DASH+widevine 保护的直播流时,在 Askey Android 电视盒 (Android 9) 上,视频几秒钟后就会冻结,而音频仍在继续。我还看到视频块仍在获取中。到目前为止,我们使用的所有其他 Android 设备上都可以成功播放相同的流。
在尝试了几个 ExoPlayer 版本(v2.7.3、v2.9.x)之后,我将播放代码集成到了 github 上的 ExoPlayer 演示播放器(v2.10.5)中。这里会出现同样的问题:视频冻结,音频继续。
由于其他直播流在 Askey AndroidTV 盒子上运行没有问题,因此结论可能是该流的配置以某种方式触发了此问题。但是流配置对于工作/失败的流来说是相同的,并且播放器日志没有显示任何关于为什么会发生这种情况的线索。除了这个经常出现的错误之外,当玩家不活跃时也是如此:
E libc : Access denied finding property "persist.vaudio.debug.search"
W HwBinder:3034_1: type=1400 audit(0.0:285045): avc: denied { read } for name="u:object_r:default_prop:s0" dev="tmpfs" ino=13267 scontext=u:r:hal_audio_default:s0 tcontext=u:object_r:default_prop:s0 tclass=file permissive=0
以下是视频冻结的播放日志。冻结发生在时间线更改的时间戳 4.34 之后。
该流有 4 个视频轨道:
400x224,0.40 Mbps
600x360,0.80 Mbps
704x396,1.10 Mbps
1024x576,1.60 Mbps
除了 0.40Mpbs 之外,所有轨道都会出现冻结问题。视频在这里继续,但非常断断续续。在这种情况下,日志显示帧被丢弃:
D/EventLogger: state [773.80, -4.02, window=0, period=0, true, READY]
D/EventLogger: timelineChanged [775.48, -4.45, window=0, period=0, periodCount=1, windowCount=1, reason=DYNAMIC
period [?]
D/EventLogger: window [29.99, true, true]
]
D/EventLogger: droppedFrames [776.74, -3.19, window=0, period=0, 50]
D/EventLogger: timelineChanged [777.49, -4.45, window=0, period=0, periodCount=1, windowCount=1, reason=DYNAMIC
period [?]
window [29.99, true, true]
]
D/EventLogger: timelineChanged [779.49, -4.46, window=0, period=0, periodCount=1, windowCount=1, reason=DYNAMIC
period [?]
D/EventLogger: window [29.98, true, true]
]
D/EventLogger: droppedFrames [779.90, -4.03, window=0, period=0, 50]
D/EventLogger: timelineChanged [781.48, -4.47, window=0, period=0, periodCount=1, windowCount=1, reason=DYNAMIC
D/EventLogger: period [?]
window [29.98, true, true]
]
那么我应该如何继续调查这个问题呢?
森栏
相关分类