我正在开发 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);
}
}
我尝试过停止和播放视频,但似乎没有任何效果。帮助我并为我指出如何解决这个问题的正确方向。预先感谢您。
借助.NET MAUI社区工具包,我已经能够使用
SeekTo()
方法实现播放位置控制:
MyMediaElement.SeekTo(TimeSpan.FromSeconds(newPositionInSeconds));
我个人实现了一个Slider控件来做到这一点,我必须先暂停音乐才能调用
SeekTo()
如果您有兴趣了解它的实际效果,我已经撰写了一系列有关 MediaElement 的文章。您可以从这里开始。