如何在Windows应用程序C#上播放YouTube视频

时间:2011-11-10 16:52:36

标签: c# winforms stream youtube webbrowser-control

我创建了一个带有WebBrowser控件的Windows应用程序并试图播放YouTube视频..我已经安装了Adobe Shockwave Player,并尝试在我的Windows应用程序上观看视频,但它没有显示任何视频。当我点击播放按钮时,屏幕看起来像这样 enter image description here

我播放视频的代码是

StreamWriter sw = new StreamWriter("utube.html");
        string PlayString = currentVideoUrl.Trim().Replace("watch?v=", "v/");
        string Finalplaycode = "<embed src=" + PlayString + "&hl=en&fs=1& type=application/x-shockwave-flash allowscriptaccess=always allowfullscreen=true width=425 height=344></embed>";
        sw.Write(Finalplaycode);
        sw.Close();
        string PathToNavigate = Directory.GetParent(Application.ExecutablePath) + @"\utube.html";
        webBrowser1.Navigate(PathToNavigate);

我的示例视频链接是:http://www.youtube.com/watch?v=oZdnezj9Dfg&feature=BFa&list=PLD3E900BFF6534896&lf=plpp_video

任何人都可以帮我解决这个问题吗?我错过了任何插件吗?我正在使用.NetFramework 4.0

1 个答案:

答案 0 :(得分:2)

我看到的一个问题是你没有引用嵌入中的参数。您的嵌入将生成为:

<embed src=http://www.youtube.com/v/video_id...>

您需要引用这些参数:

<embed src="http://www.youtube.com/v/video_id...">

例如,这是一个适用于我的网站的嵌入:

<embed type="application/x-shockwave-flash" width="425" height="344" 
src="http://www.youtube.com/v/UejelYnVI3U&amp;hl=en&amp;fs=1"></embed>

您可能有兴趣阅读官方YouTube文档。他们已经不再使用嵌入,而是使用iframe。这使得他们可以使用HTML5视频播放器(如果可用),或以其他方式回归Flash。有关详细信息,请参阅http://www.google.com/support/youtube/bin/answer.py?answer=171780

更新

下面的HTML文件以两种方式嵌入相同的视频:一次使用iframe,一次使用标准嵌入。当我使用WebBrowser控件导航到它时,它可以找到:

<html>
<body>
<iframe class="youtube-player" type="text/html" width="640" height="385"
 src="http://www.youtube.com/embed/oZdnezj9Dfg" frameborder="0">
</iframe>

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0">
<param name="src" value="http://www.youtube.com/v/oZdnezj9Dfg&amp;hl=en&amp;fs=1" />
<embed type="application/x-shockwave-flash" width="425" height="344" 
  src="http://www.youtube.com/v/oZdnezj9Dfg&amp;hl=en&amp;fs=1">
</embed>
</object>

</body>
<html>

尝试复制并在应用程序中导航到它。确保您的程序正在创建嵌入。

此外,如果您已安装Flash,则可以删除外部<object>标记。然后,Flash嵌入看起来就像我最初显示的那样。

而且,并不要求你有HTML包装器。如果我只包含没有<html>和其他标签的嵌入,它可以正常工作。