富媒体集成与流媒体支持技术解析
1. MediaElement 状态转换与进度报告
MediaElement 在状态转换时,进入播放状态的通知仅在媒体开始播放时触发一次。之后,播放过程中不会再发出额外通知,直至遇到停止或暂停等控制事件。这主要是出于性能考虑,若播放时持续触发细粒度事件,可能影响 MediaElement 的性能。
为了在媒体播放时报告进度,可使用名为 disptimerPlayProgressUpdate 的 DispatcherTimer。在 MediaSource_CurrentStateChanged() 处理播放状态变化时,启动该定时器,它每 50 毫秒触发一次 Tick 事件。此时间间隔可根据需求调整,也可将其设为控件属性。同时,在相同代码块中,将 textDuration 的值格式化为 MediaSource.NaturalDuration ,以显示剪辑的总时长。
在 PlayProgressUpdate_Tick() 方法中,通过将 Thumb 的 Value 设置为 MediaSlider 范围的一定比例,使其与当前位置和 MediaSource.NaturalDuration 的比例相匹配,从而移动 Thumb。同时,按相同比例增加 elemPlayProgressIndicator 的宽度,以跟踪 Thumb 来指示播放进度,并在滑块左下角设置 textPosition 以反映当前位置值。
超级会员免费看
订阅专栏 解锁全文
497

被折叠的 条评论
为什么被折叠?



