嵌入“普通”网址时,youtube视频无法播放

时间:2012-12-12 09:48:01

标签: asp.net youtube youtube-api

我正在尝试在我的页面上嵌入视频,具体取决于用户在显示列表后选择的视频。 在我的页面上我有:

       <div id="vidContent" style="text-align:left">
           <object width="550px" height="350px" >
                 <asp:Literal ID="ltlVideo" runat="server"></asp:Literal>
            </object>
       </div>

在我背后的代码中:

        Dim strVidPath As String = "http://www.youtube.com/v/" & strVidID
        ltlVideo.Text = "<embed src='" & strVidPath & "' type='application/x-shockwave-flash' allowscriptaccess='always' allowfullscreen='true' height='350' width='470'></embed>
        phVideoBanner.Visible = True

...

哪个有效......如果你有“strVidID”

如果您有strVidPath = www.youtube.com/v/_O7iUiftbKU

,它似乎只能显示和播放

但是不能播放strVidPath = www.youtube.com/watch?v=_O7iUiftbKU ....这在观看YouTube视频时似乎是地址栏中的正常网址。

我希望用户能够向页面添加视频,我认为如果粘贴在视频网址中会更容易,但现在看来我必须将它们粘贴到videoID中相反,因为它似乎只在我使用www.youtube.com/v/_O7iUiftbKU时播放

任何人都知道这是为什么?

2 个答案:

答案 0 :(得分:2)

您可以使用oEmbed service为自己制作嵌入代码,而不是尝试解析YouTube观看页面网址并自行构建嵌入代码。

如果您需要取回旧版嵌入代码而不是iframe嵌入代码,则需要将iframe=0作为其中一个网址参数传递给oEmbed服务,例如:http://www.youtube.com/oembed?url=http%3A//www.youtube.com/watch%3Fv%3DbDOYN-6gdRE&format=json&iframe=0

答案 1 :(得分:1)

正如您所指出的,其中包含“watch”一词的网址结构是Youtube的面向公众的网页,其中包含的内容远远超过视频...它包含您在网页上看到的所有其他内容好。从本质上讲,它是一个解析为HTML页面的指针,并且您不能将HTML页面作为嵌入元素的源。

正确的URL结构(即工作的URL结构)不是指向HTML页面的指针,而是直接解析为播放器本身的指针,因此可以作为嵌入元素的源。

这是指向Stack Overflow问题的链接,其答案包括一个C#代码块,它将常规YouTube网址(以任何形式)作为输入,进行正则表达式匹配,并仅返回Youtube ID - 应该是根据您的需要修改它非常简单...因此您仍然可以继续让用户粘贴整个视频网址:

C# regex to get video id from youtube and vimeo by url