如何在单击按钮时设置 MediaElement 的位置?

问题描述 投票:0回答:1

我正在开发 Xamarin Forms 应用程序。现在我正在尝试将自定义视频控件实现到我的 MediaElement 中,但我没能做到这一点,而且谷歌搜索也没有多大帮助。

基本概述,我有一个 MediaElement 正在播放视频,并且视频的每一侧都有两个按钮,我希望用户能够按下并快退或快进 5 秒。这些按钮可以识别被单击,但没有执行我想要的操作,而且我不确定我做错了什么。这是我的代码:

Page.xaml
...
<Grid BackgroundColor="#E5EBEE">

        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="150"/>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="150"/>
        </Grid.ColumnDefinitions>
        <MediaElement x:Name="LessonVideo"
                      Source="ms-appx:///vid_IntroDemo.mp4" 
                      ShowsPlaybackControls="False"
                      IsLooping="True" 
                      Aspect="AspectFill" 
                      AutoPlay="True" 
                      KeepScreenOn="True"
                      HorizontalOptions="FillAndExpand"
                      VerticalOptions="FillAndExpand"
                      Grid.ColumnSpan="3"
                      />
        <BoxView Opacity="0.0" BackgroundColor="#00C2FF"/>
        <Button x:Name="Back" BackgroundColor="Yellow" Grid.Column="0" Opacity="0.2" Clicked="RewindVideo"></Button>
        <Button x:Name="Forward" BackgroundColor="Red" Grid.Column="2" Opacity="0.2"></Button>
    </Grid>

Page.xaml.cs
...
private void RewindVideo(object sender, EventArgs e)
        {
            if (LessonVideo.CanSeek) 
            {
                LessonVideo.Position = TimeSpan.FromSeconds(LessonVideo.Position.TotalSeconds - 5);
            }
            
        }

我尝试过停止和播放视频,但似乎没有任何效果。帮助我并为我指出如何解决这个问题的正确方向。预先感谢您。

xamarin xamarin.forms mediaelement
1个回答
0
投票

借助.NET MAUI社区工具包,我已经能够使用

SeekTo()
方法实现播放位置控制:

MyMediaElement.SeekTo(TimeSpan.FromSeconds(newPositionInSeconds));

我个人实现了一个Slider控件来做到这一点,我必须先暂停音乐才能调用

SeekTo()

如果您有兴趣了解它的实际效果,我已经撰写了一系列有关 MediaElement 的文章。您可以从这里开始。

© www.soinside.com 2019 - 2024. All rights reserved.