【问题标题】:Track start and end position of seek in mediaelement [UWP]在 mediaelement [UWP] 中跟踪搜索的开始和结束位置
【发布时间】:2017-03-07 21:14:26
【问题描述】:

我有一个基于 XAML 的 Windows 10 UWP 应用程序,它使用 MediaElement 播放视频。出于分析目的,当用户播放视频时,我想跟踪搜索操作的开始和结束位置。

我能找到的唯一事件是SeekCompleted,在其中我可以使用mediaElement.Position 获得结束位置,但我看不到任何识别开始位置的方法。当搜索操作开始时,CurrentStateChanged 事件也不会被触发。如何获得起始位置?

我正在使用的代码:

mediaElement.CurrentStateChanged += MediaElement_StateChanged;
mediaElement.SeekCompleted += MediaElement_SeekCompleted;

//Play the video
var mediaSource = MediaSource.CreateFromUri(new Uri(streamUrl));
var mediaPlaybackItem = new MediaPlaybackItem(mediaSource);
mediaElement.SetPlaybackSource(mediaSource);

public void MediaElement_StateChanged(object sender, RoutedEventArgs e)
{
    var mediaElement = sender as MediaElement;
    var state = mediaElement.CurrentState;
    var position = mediaElement.Position; 
}

public void MediaElement_SeekCompleted(object sender, RoutedEventArgs e)
{
    var position = mediaElement.Position; 
}

只有在查找操作完成后才会调用这两种方法,因此我只能获得结束位置。我也需要起始位置。

【问题讨论】:

  • 你能添加你的源代码吗?因为CurrentStateChanged 正在为我开火。从那里您可以使用mediaElement.Position 获得起始位置
  • @Arcana:我已经添加了我正在使用的代码。但是里面没有多少。这仅给出结束位置而不给出开始位置。我在这里错过了什么吗?
  • 你从哪里开始播放音乐?
  • @Arcana:我只需单击一个按钮即可播放视频。我也包含了那段代码
  • 希望你调用 play() 方法。当你开始玩CurrentStateChanged 事件应该触发。暂停音乐时至少会触发吗?

标签: c# uwp uwp-xaml


【解决方案1】:

当您开始搜索时,默认传输控件不会引发任何事件。为此,您可以修改它们以引发此类事件。

https://docs.microsoft.com/en-us/windows/uwp/controls-and-patterns/custom-transport-controls 有关于自定义传输控件的文档
这些展示了如何以编程方式访问用于搜索的Slider。您可以为合适的事件添加处理程序(可能是DragStartingHoldingManipulationStarted?),然后记录当前位置。

【讨论】:

  • 感谢您的回复。我尝试了相同的方法,但是在搜索时不会调用 DragStarting、Holding 和 ManipulationStarted。我能找到的唯一事件是 ValueChanged,它给出了开始和结束位置。但是即使在播放视频时也会调用此事件。如何区分搜索和视频播放?
  • @Ferdin 你能结合 ValueChanged 和 Touch Up/Down 事件来获得你的逻辑吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多