1

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

我花了整整一夜的时间试图让应用程序以所有可能的方式播放视频(我尝试过 WebBrowser 和 Shockwave ActiveX Control),但我无法在应用程序中播放任何视频,除非我强制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 设置。当我使用 IE 11 或 Chrome 等“完整”浏览器时,一切正常,但我的应用程序只显示一个黑色矩形,该矩形应该是 YouTube 视频所在的位置。

4

1 回答 1

1

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

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

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

于 2016-01-05T10:42:28.143 回答