我想知道Exoplayer如何将android设备的系统时间与通过实时流播放的DASH段进行匹配。我们已经模拟了实时流的环境(使用Dektek),并且已经修改了DashUtil和DashMediaSource的getNowUnixTimeUs以启动具有MPD AvailabilityStartTime的播放(也就是说,当前时间从流开始时的该MPD时间开始。我们仅将此代码用于模拟实时流媒体)。在这种情况下,我们观察到许多流在正常播放,只有在调整了android STB盒时间后,才有很少的流在播放。似乎,尽管我们重写了getNowUnixTimeUs方法的逻辑,如DashUtil和DashMediaSource类的以下代码片段所示,但这些流已针对源代码中其他位置的android STB盒时间进行了验证。有没有人对此有想法并可以帮助我们?
试用过Exo播放器2.4和2.10。
我的代码:
/* DashUtil.java and DashMediaSource.java both use
the below code for getNowUnixTimeUs.*/
public static long getNowUnixTimeUs(DashManifest manifest) {
if (availabilitySTMs == -1) {
availabilitySTMs = manifest.availabilityStartTimeMs;
}
long tempMs = System.currentTimeMillis();
currentTimeOffestMs = tempMs-currentTimeMs;
currentTimeMs = tempMs;
availabilitySTMs = availabilitySTMs + currentTimeOffestMs;
return C.msToUs(availabilitySTMs);
}