尝试使用MediaPlayerLauncher播放YouTube视频

时间:2012-01-27 16:07:19

标签: c# webclient windows-phone-7.1

我正在为Windows Phone 7.1应用编码,当用户点击特定按钮时,将使用MediaPlayerLauncher播放YouTube视频。

问题是,MediaPlayerLauncher只能通过提供视频的网址来播放视频;视频的链接本身位于页面的html中。现在,我设法通过使用WebClient()来下载html并从中提取视频的链接,通过将此事件附加到'client',我的WebClient:

        void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
    {
        pageHtml = e.Result;

        stringBuilder = new StringBuilder(pageHtml);
        if (pageHtml != null)
        {
            if (pageHtml.Contains("<html"))
            {
                if (pageHtml.Contains("<script"))
                {
                    stringBuilder.Replace("</script>", string.Format("{0}{1}</script>", NOTIFY_SCRIPT, Environment.NewLine));
                }
                else if (pageHtml.Contains("<head"))
                {
                    stringBuilder.Replace("</head>", string.Format("{0}{1}</head>", NOTIFY_SCRIPT, Environment.NewLine));
                }
                else
                {
                    stringBuilder.Replace("</html>", string.Format("{0}{1}</html>", NOTIFY_SCRIPT, Environment.NewLine));
                }
            }
            else
            {
                    //Just skip it or display an error message or whatever
            }

                rssBrowser.NavigateToString(stringBuilder.ToString());
        }
    }

基本上,我添加了一个'NOTIFY_SCRIPT'脚本来检测youtube视频的存在(如果你想了解更多关于这个的详细信息,那么视频的链接基本上就是一个标签,所以我只需要获取所有标签,找到一个有链接,并获取它的内容(链接))。

但是,这仍然不起作用。我尝试建立一个WebBrowser,并在每次WebBrowser导航时导航并触发事件,以确保它导航到正确的页面。但有时,它没有正确导航;它会卡在中间页面上或转到原始的YouTube页面。所以,我决定看看传入的HTML。由于某种原因,传入的html缺少youtube的脚本。我使用浏览器检查了youtube页面上的脚本(我访问了移动网页并“检查了元素”),并且它有一个脚本,但是当WebClient获取html时脚本丢失了。

所以也许这就是问题所在?有谁知道如何解决这个问题,或者你可能已经以不同的方式做过类似的事情了?

很抱歉这个问题很长,谢谢!

1 个答案:

答案 0 :(得分:2)

您最好使用WebBrowserTaskAPI来获取网址。