无法在C#WebBrowser中播放任何YouTube视频

时间:2016-01-03 01:12:18

标签: c# flash youtube webbrowser-control shockwave

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

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

我真正想要的是能够只在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设置。当我在&#34;完整&#34;浏览器如IE 11或Chrome,但我的应用程序只显示YouTube视频所在的黑色矩形。

1 个答案:

答案 0 :(得分:1)

问题来自最新的Windows更新。无法分辨出问题所在,但故障在于闪存组件。

因此,如果您在html5模式下强制使用youtube视频,它应该可以正常工作。 试试以下

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