无法在C#网络浏览器中播放任何YouTube视频



我正在Windows 7 64位上用C#.NET(Windows窗体)开发一个轻量级桌面应用程序,可以搜索和播放YouTube视频。

我花了整整一个晚上和一天的时间试图让应用程序以各种可能的方式播放视频(我尝试过WebBrowser和Shockwave ActiveX控件),但我无法在应用程序中播放任何视频,除非我强制WebBrowser通过URL导航到完整的YouTube视频页面https://www.youtube.com/watch?v={VIDEO_ID}。

我真正想要的是能够在WebBrowser中只嵌入播放器本身,而不是整个YT视频页面。以下是我迄今为止所尝试的:

确实有效,但不是我需要的:

WebBrowser.Navigate("https://www.youtube.com/watch?v=" + video.Id);

不工作:

WebBrowser.Navigate("https://www.youtube.com/embed/" + video.Id);

Browser.Navigate("about:blank");
Browser.Document.OpenNew(true);
Browser.DocumentText =
    "<html><body>" +
        "<iframe width='420' height='315' src='https://www.youtube.com/embed/" + video.Id + "&html5=1' frameborder='0' allowfullscreen></iframe>" +
    "</body></html>";

Browser.DocumentText = 
    "<object width='640' height='390'>" +
        "<param name='movie' value='https://www.youtube.com/v/" + video.Id + "?version=3&autoplay=1'></param>" +
        "<param name='allowScriptAccess' value='always'></param>" +
        "<embed src='https://www.youtube.com/v/" + video.Id + "?version=3&autoplay=1' " +
            "type='application/x-shockwave-flash' allowscriptaccess='always' width='640' height='390'></embed>" +
    "</object>";

AxShockwaveCtl.GotoMovie("https://www.youtube.com/v/" + video.Id);
AxShockwaveCtl.Play();

AxVideo.SRC = "https://www.youtube.com/v/" + video.Id;
AxVideo.swURL = "https://www.youtube.com/v/" + video.Id;
AxVideo.Play();

我相信我也尝试过其他东西,比如WebBrowser.Document.Write,但都不起作用。我在这里看到了关于这个问题的其他问题,但他们似乎最终都以某种方式解决了他们的问题,我试着做了他们所做的,但在我的情况下,什么都不起作用。还尝试更改所有Internet Explorer设置。当我在IE 11或Chrome等"完整"浏览器上时,一切都可以工作,但我的应用程序只在YouTube视频所在的位置显示一个黑色矩形。

问题来自最新的windows更新。无法判断问题出在哪里,但故障出在闪存组件上。

因此,如果你强制youtube视频在html5模式下,它应该可以工作。尝试以下

WebBrowser.Navigate("https://www.youtube.com/embed/" + video.Id + "?html5=1");

最新更新