gpt4 book ai didi

c# - 导航到另一帧后如何停止 MediaPlayerElement 播放音频?

转载 作者:行者123 更新时间:2023-11-30 15:18:32 25 4
gpt4 key购买 nike

MediaPlayerElement 在导航到另一个 Frame 后正在播放音频。如果我再次导航到此帧,我可以听到两个音频实例,一个来自当前播放视频的音频,另一个来 self 上次导航至此帧时的音频。导航到另一个框架后如何停止 MediaPlayerElement?

供引用:

我的框架 XAML 部分的完整代码

<Page.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Styles/MediaPlayerDictionary.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Page.Resources>
<Grid Background="Transparent">
<MediaPlayerElement Name="YoutubePlayer" MaxWidth="640" MaxHeight="360" AreTransportControlsEnabled="True">
<MediaPlayerElement.TransportControls>
<video:CustomMediaTransportControls x:Name="CustomMediaControl" IsSkipBackwardButtonVisible="True" IsSkipForwardButtonVisible="True" IsSkipBackwardEnabled="True" IsSkipForwardEnabled="True" IsFullWindowButtonVisible="True" IsFullWindowEnabled="True" QualityChanged="CustomMediaControl_QualityChangedAsync"/>
</MediaPlayerElement.TransportControls>
</MediaPlayerElement>
</Grid>

框架的 C# 部分的完整代码

public sealed partial class VideosPage : Page
{

public VideosPage()
{
this.InitializeComponent();
}

protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
{
base.OnNavigatingFrom(e);
YoutubePlayer.MediaPlayer.Dispose();
}

public async Task setVideoSourceAsync(YouTubeQuality videoQuality)
{

try
{
var youtubeUrl = await YouTube.GetVideoUriAsync("QTYVJhy04rs", YouTubeQuality.Quality144P, videoQuality);
YoutubePlayer.Source = MediaSource.CreateFromUri(youtubeUrl.Uri);
YoutubePlayer.AutoPlay = true;
}
catch (Exception e)
{
//await setVideoSourceAsync();
}
}

private async void Page_LoadedAsync(object sender, RoutedEventArgs e)
{
if (ApplicationView.GetForCurrentView().IsViewModeSupported(ApplicationViewMode.CompactOverlay))
{
CustomMediaControl.IsCompactOverlayButtonVisible = true;
}
await setVideoSourceAsync(YouTubeQuality.Quality360P);
}

private async void CustomMediaControl_QualityChangedAsync(object sender, QualityChangedEventArgs e)
{
await setVideoSourceAsync(e.NewQuality);
}
}

最佳答案

根据您离开页面时希望发生的情况,您可以通过将此方法添加到 MediaPlayer 所在页面的代码隐藏中来处置 MediaPlayer:

protected async override void OnNavigatingFrom(NavigatingCancelEventArgs e)
{
base.OnNavigatingFrom(e);
await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,() =>
{
YoutubePlayer?.MediaPlayer.Dispose();
});
}

您可能还想停止它并在导航回页面时继续,因此您应该覆盖 void OnNavigatedTo(NavigationEventArgs e) 方法。

关于c# - 导航到另一帧后如何停止 MediaPlayerElement 播放音频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43557320/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com