uwp youtube播放器流mvvm

时间:2017-05-05 10:36:44

标签: c# mvvm youtube uwp

最后解决方案。

我很难按照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"/>  

VM:

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;
        }

Test1类型为UricurrentMovie.TrailerSourcestring

为了实现这一点,我必须得到NuGet YouTubeExtractor。 希望这有助于有人完成MVVM。

1 个答案:

答案 0 :(得分:0)

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

让我们深入研究这些:

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

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

    MediaElement 非常方便,它有source属性,也需要Uri数据类型,所以最棒的是你可以传递Uri作为youtube vid的嵌入式链接,MediaElement将为您处理所有内容,它还会为您提供一些额外的优势,例如控制您的用户界面,播放/暂停甚至自定义样式和autoplay / playRate选项。

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

    您可以在此处找到更多相关信息  in this question及其评论部分。

    此外,由于您将在Windows 10上使用mvvm,我建议您x:bind MediaElement的Source属性为Uri DataType属性在oneWay

    中以ViewModel模式