在 WPF 中使用 MediaElement 创建一个简单的搜索媒体播放器

发布于 2024-09-05 09:36:03 字数 1719 浏览 6 评论 0原文

我还在 MSDN 论坛上发布了此内容 - 我希望这不是问题。

我基本上试图创建一个基于 WPF 的视频播放器,它允许您在媒体中进行搜索。我正在尝试使用 MediaTimeline 来实现它(我知道我可以更改 Position 属性,但我遇到了其他问题,我将在单独的问题中发布)。 XAML 和代码隐藏如下。

感谢您的查看...

MainWindow.xaml

<Window x:Class="WpfApplication5.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" SizeToContent="WidthAndHeight">
  <Grid>
    <Grid.RowDefinitions>
      <RowDefinition Height="Auto"/>
      <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    <MediaElement x:Name="mediaElement" Width="320" Height="240" Margin="4" LoadedBehavior="Manual"/>
    <Slider x:Name="slider" Grid.Row="1" Margin="4"/>
  </Grid>
</Window>

MainWindow.xaml.cs

using System;
using System.Windows;
using System.Windows.Media;
using System.Windows.Media.Animation;

namespace WpfApplication5
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            var tl = new MediaTimeline(new Uri(@"c:\temp\!numa.wmv"));

            mediaElement.Clock = tl.CreateClock(true) as MediaClock;


            mediaElement.MediaOpened += (o, e) =>
            {
                slider.Maximum = mediaElement.NaturalDuration.TimeSpan.Seconds;
                mediaElement.Clock.Controller.Pause();
            };

            slider.ValueChanged += (o, e) =>
            {
                mediaElement.Clock.Controller.Seek(TimeSpan.FromSeconds(slider.Value), TimeSeekOrigin.BeginTime);
            };

        }
    }
}

I have also posted this on MSDN forums - i hope its not a problem.

I am basically trying to create a WPF based video player which allows you to seek within media. I'm trying to implement it using MediaTimeline (i know i can change the Position property, but i had other issues which i'll post in a separate question). XAML and code-behind are below.

Thanks for looking...

MainWindow.xaml

<Window x:Class="WpfApplication5.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" SizeToContent="WidthAndHeight">
  <Grid>
    <Grid.RowDefinitions>
      <RowDefinition Height="Auto"/>
      <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    <MediaElement x:Name="mediaElement" Width="320" Height="240" Margin="4" LoadedBehavior="Manual"/>
    <Slider x:Name="slider" Grid.Row="1" Margin="4"/>
  </Grid>
</Window>

MainWindow.xaml.cs

using System;
using System.Windows;
using System.Windows.Media;
using System.Windows.Media.Animation;

namespace WpfApplication5
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            var tl = new MediaTimeline(new Uri(@"c:\temp\!numa.wmv"));

            mediaElement.Clock = tl.CreateClock(true) as MediaClock;


            mediaElement.MediaOpened += (o, e) =>
            {
                slider.Maximum = mediaElement.NaturalDuration.TimeSpan.Seconds;
                mediaElement.Clock.Controller.Pause();
            };

            slider.ValueChanged += (o, e) =>
            {
                mediaElement.Clock.Controller.Seek(TimeSpan.FromSeconds(slider.Value), TimeSeekOrigin.BeginTime);
            };

        }
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

余罪 2024-09-12 09:36:03

您需要在 MediaElement 上设置 ScrubbingEnabled="True" 才能在搜索期间更新它。

You need to set ScrubbingEnabled="True" on MediaElement to have it update during seeks.

忆沫 2024-09-12 09:36:03

MediaOpened 事件实际上应该将最大值设置为 .TotalSeconds,并且您还应该将 ScrubbingEnabled 设置为 True,正如 jesperll 指出的那样。

the MediaOpened event should actually be setting the maximum value to .TotalSeconds, and you should also set ScrubbingEnabled to True as jesperll pointed out.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文