使用XamarinMediaManager暂停直播后如何跳转回直播实时点位?
解决方案
问题原因
你用SeekTo(TimeSpan.FromHours(9999))不生效是因为直播流的时长元数据多为动态值,大部分直播流不会上报固定总时长,XamarinMediaManager会自动截断超出可播放范围的seek参数,所以传入超大时间值不会触发到实时点的跳转。
可用实现方案
方法1:调用官方内置的直播跳转API(推荐)
XamarinMediaManager v1.0及以上版本已经针对直播场景提供了专属的跳转实时点位的方法,直接调用即可:
await CrossMediaManager.Current.SeekToLivePosition();
这个方法是官方专门适配直播流场景开发的,会自动识别当前直播的实时边缘位置完成跳转,无需自行计算时间参数。
方法2:旧版本兼容方案
如果你使用的是低于v1.0的旧版本,没有上述API,可以通过读取当前直播流的最大缓冲位置实现跳转:
// 先校验当前播放的是直播流,避免对点播文件调用出错 if (CrossMediaManager.Current.IsLive) { var liveLatestPosition = CrossMediaManager.Current.PlaybackManager.CurrentBuffer.MaxPosition; await CrossMediaManager.Current.SeekTo(liveLatestPosition); }
注意事项
- 加载直播流时,建议主动给MediaItem标记
MediaType = MediaType.LiveStream,不要使用默认的Video/Audio类型,否则组件内部不会启用直播专属逻辑,可能导致跳转实时点失效 - 确认你的直播流没有追加
#EXT-X-ENDLIST标记(HLS场景),加了该标记的流会被组件识别为普通点播文件,无法使用直播相关能力
内容的提问来源于stack exchange,提问作者Chris Kooken
相关产品推荐
相关产品推荐

