在 Xamarin UWP 中创建包后,视频只能用语音播放,我看不到视频
After Creating Package in Xamarin UWP, Video is Playing Only With Voice, I am Not able to see Video
我正在使用最新版本的 MediaManager 插件播放视频。当我 运行 应用程序处于调试模式时一切正常,但是当我为 window 创建程序包时,视频不显示,只能听到声音。
我正在使用下面的包
Plugin.MediaManager.Forms
这是我的 XAML 页面
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Digi_Sign.Views.MediaScreen"
xmlns:forms="clr-namespace:MediaManager.Forms;assembly=MediaManager.Forms"
BackgroundColor="Black">
<ContentPage.Content>
<Grid x:Name="stkLayout" VerticalOptions="CenterAndExpand" HorizontalOptions="CenterAndExpand" BackgroundColor="Black">
<forms:VideoView VideoAspect="AspectFill" x:Name="videoPlayer" ShowControls="False" />
</Grid>
</ContentPage.Content>
</ContentPage>
CS 页面
CrossMediaManager.Current.Play(fileName);
包错误日志中没有发现错误,正如我提到的,在调试模式下一切正常,但在发布模式下不工作
从您描述的行为(以及查看您的代码)来看,很可能是因为视频未在 UI 线程上 运行,这会导致应用播放音频但不播放视频。所以将其更改为以下内容:
Device.BeginInvokeOnMainThread(() => { CrossMediaManager.Current.Play(fileName); });
在xamrin.UWP的原生代码中基本上没有办法初始化视频的渲染器,所以我们需要在UWP平台的App.xaml.cs中手动加载渲染程序集来初始化它
下面是我的代码,其中我在 OnLaunched() 中加载程序集文件并替换现有的 Xamarin.Forms.Forms.Init()
protected override void OnLaunched(LaunchActivatedEventArgs e)
{
Windows.UI.Xaml.Controls.Frame rootFrame = Window.Current.Content as Windows.UI.Xaml.Controls.Frame;
if (rootFrame == null)
{
rootFrame = new Windows.UI.Xaml.Controls.Frame();
rootFrame.NavigationFailed += OnNavigationFailed;
List<Assembly> assembliesToAdd = new List<Assembly>();
assembliesToAdd.Add(typeof(VideoViewRenderer).GetTypeInfo().Assembly);
Xamarin.Forms.Forms.Init(e, assembliesToAdd);
// Place the frame in the current Window
Window.Current.Content = rootFrame;
}
if (rootFrame.Content == null)
{
rootFrame.Navigate(typeof(MainPage), e.Arguments);
}
Window.Current.Activate();
}
更多详情,请看这里link。在哪里可以找到更多解释。
我正在使用最新版本的 MediaManager 插件播放视频。当我 运行 应用程序处于调试模式时一切正常,但是当我为 window 创建程序包时,视频不显示,只能听到声音。
我正在使用下面的包
Plugin.MediaManager.Forms
这是我的 XAML 页面
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Digi_Sign.Views.MediaScreen"
xmlns:forms="clr-namespace:MediaManager.Forms;assembly=MediaManager.Forms"
BackgroundColor="Black">
<ContentPage.Content>
<Grid x:Name="stkLayout" VerticalOptions="CenterAndExpand" HorizontalOptions="CenterAndExpand" BackgroundColor="Black">
<forms:VideoView VideoAspect="AspectFill" x:Name="videoPlayer" ShowControls="False" />
</Grid>
</ContentPage.Content>
</ContentPage>
CS 页面
CrossMediaManager.Current.Play(fileName);
包错误日志中没有发现错误,正如我提到的,在调试模式下一切正常,但在发布模式下不工作
从您描述的行为(以及查看您的代码)来看,很可能是因为视频未在 UI 线程上 运行,这会导致应用播放音频但不播放视频。所以将其更改为以下内容:
Device.BeginInvokeOnMainThread(() => { CrossMediaManager.Current.Play(fileName); });
在xamrin.UWP的原生代码中基本上没有办法初始化视频的渲染器,所以我们需要在UWP平台的App.xaml.cs中手动加载渲染程序集来初始化它
下面是我的代码,其中我在 OnLaunched() 中加载程序集文件并替换现有的 Xamarin.Forms.Forms.Init()
protected override void OnLaunched(LaunchActivatedEventArgs e)
{
Windows.UI.Xaml.Controls.Frame rootFrame = Window.Current.Content as Windows.UI.Xaml.Controls.Frame;
if (rootFrame == null)
{
rootFrame = new Windows.UI.Xaml.Controls.Frame();
rootFrame.NavigationFailed += OnNavigationFailed;
List<Assembly> assembliesToAdd = new List<Assembly>();
assembliesToAdd.Add(typeof(VideoViewRenderer).GetTypeInfo().Assembly);
Xamarin.Forms.Forms.Init(e, assembliesToAdd);
// Place the frame in the current Window
Window.Current.Content = rootFrame;
}
if (rootFrame.Content == null)
{
rootFrame.Navigate(typeof(MainPage), e.Arguments);
}
Window.Current.Activate();
}
更多详情,请看这里link。在哪里可以找到更多解释。