0

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

       <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 视频时地址栏中的正常 URL,则不播放。

我希望用户能够将视频添加到页面,我想如果粘贴到视频的 URL 中会更容易,但现在看来我必须让他们粘贴到 videoID 中,而不是似乎只有在我使用 www.youtube.com/v/_O7iUiftbKU 时才能播放

有谁知道这是为什么?

4

2 回答 2

2

与其尝试解析 YouTube 观看页面 URL 并自己构建嵌入代码,不如使用oEmbed 服务为您完成。

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

于 2012-12-12T17:39:52.980 回答
1

正如您所指出的,其中包含“观看”一词的 URL 结构是 Youtube 面向公众的网页,其中包含的内容远不止视频……它还包括您在页面上看到的所有其他内容。本质上,它是一个解析为 HTML 页面的指针,您不能将 HTML 页面作为嵌入元素的来源。

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

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

C# 正则表达式通过 url 从 youtube 和 vimeo 获取视频 ID

于 2012-12-12T17:19:00.947 回答