【问题标题】:uwp youtube player stream mvvmuwp youtube 播放器流 mvvm
【发布时间】:2017-10-03 19:24:07
【问题描述】:

最后解决。

我很难按照 MVVM 模式在 uwp 中找到有关 youtubeplayer 的信息。

  • <MediaElement><WebView> 在这种情况下有什么区别,哪个更好/更容易使用?

  • 如何在我的 VM 中处理播放器的事件?

  • VS2017 告诉我不能使用 MediaPlayerElement

Error Message

我尝试了 VS2017 的其他版本/构建,但得到了同样的错误。

  • 还有其他方法可以做到这一点吗?

TY

编辑:

<WebView> 似乎很容易。使用它有什么缺点吗?

<WebView x:Name="webView" Width="300" 
                              Height="225" Source="https://www.youtube.com/watch?v=2Rg1XmzzrTM" 
                              RelativePanel.AlignHorizontalCenterWithPanel="True"
                              RelativePanel.Below="linkYT"/>

编辑2:

感谢 Aditya Sharma,我走上了正确的道路并找到了this Question

所以我最终得到了以下结果:

查看:

<MediaElement x:Name="ytPlayer"                                     
              AreTransportControlsEnabled="True"
              Source="{Binding Test1, Mode=OneWay}"
              Width="600" 
              AutoPlay="True"
              Height="400"/>  

虚拟机:

public void doSomething()
{
   ...
   test1 = new Uri(convertLink(currentMovie.TrailerSource));
   ...
}

 private string convertLink(string link)
        {
           IEnumerable<VideoInfo> videoInfos = DownloadUrlResolver.GetDownloadUrls(link, false);
           VideoInfo video = videoInfos
               .First(info => info.VideoType == VideoType.Mp4 && info.Resolution == 720
                );
           return video.DownloadUrl;
        }

Test1Uri 类型,currentMovie.TrailerSourcestring

为此,我必须获得 NuGet YouTubeExtractor。 希望这可以帮助某人完成 MVVM。

【问题讨论】:

  • 如果您转到项目的属性,您可以更改 UWP 应用程序的目标版本(在“应用程序”选项卡中)
  • @Florian Moser 如果我将“最低版本”更改为与“目标版本”相同,我会收到 1634 错误(例如缺少 using-Directiv 或程序集参考)。

标签: c# mvvm youtube uwp


【解决方案1】:

事情就是这样,我们有 1.WebView 和 2.MediaElement

让我们深入研究一下:

WebView:基本上是手机应用浏览器。你可以给它一个链接,它会导航到网页。您可以将它用于您的 youtube 筛选,但会有一些缺点:

  1. 您将无法在本地使用本地控件,例如暂停/播放/搜索。所有控件都将由呈现在 WebView 中的网站处理。
  2. 您也无法控制 UI。您会在应用 WebView 中看到基本的嵌入式 youtube UI,它可能会破坏您的 UI,并且在缩放时也可能只是提供像素化视图。
另一方面,

MediaElement 非常方便,它有一个source 属性,它也采用Uri 数据类型,所以最棒的是你可以传入你的@987654330 @ 作为 youtube vid 的嵌入式链接,MediaElement 将为您处理所有事情,此外,它还会为您提供一些额外的优势,例如控制您的 UI、播放/暂停甚至自定义样式和自动播放/播放速率选项。

所以在我看来,我会说使用MediaElement 而不是webView,因为它可以让您更好地控制正在发生的事情,并为用户提供原生体验。

您可以在此处找到有关它的更多信息 in this question 在它的 cmets 部分。

另外,由于您将在 Windows 10 上使用 mvvm,我建议您将 MediaElement 的 x:bind Source 属性改为 oneWay 模式中的 Uri DataType 属性@987654338 @

【讨论】:

  • 哦,我得到了它与 的合作。但据我所知, 内置了控件,所以不需要额外的“播放/暂停”按钮?只是将 xaml 更改为 并没有帮助。有什么建议?泰。
  • MediaPlayerElement 具有内置控件,例如播放暂停以及您在 Windows 10 上的 Groove 音乐应用程序上看到的所有控件。有关如何使用它们的更多信息,请关注 this 和有关 MediaPlayerElement 的更多描述性信息,您可以参考this。我将编辑我的答案我没有阅读 MediaPlayerElement,我以为你在询问 MediaElement。
  • 再次感谢您的帮助!似乎与“ AreTransportControlsEnabled="True" ” MediaPlayer 也支持内置的播放/暂停按钮:/ 所以我想我会这样做。
  • 没错!您可以使用媒体元素以及媒体播放器元素。他们都将从视图模型中获取 uri 作为 x:bind。遵守 mvvm 模式。所以诚实地选择你的选择。坚持媒体元素将帮助您提供向后兼容性,而媒体播放器元素则不会。
  • 是的,我认为 mediaplayerelement 是某种新的/更好的 mediaelement 版本。但我编辑了我的问题,并把对我有用的东西放在那里。再次感谢。
猜你喜欢
  • 2017-11-07
  • 1970-01-01
  • 1970-01-01
  • 2016-08-28
  • 2012-06-03
  • 1970-01-01
  • 2021-11-21
  • 1970-01-01
  • 2014-03-28
相关资源
最近更新 更多