2012-12-12 85 views
0

我試圖在視頻中嵌入一個視頻,具體取決於用戶在呈現列表後選擇哪一個視頻。 在我的網頁我有:當嵌入「普通」網址時,youtube視頻不會播放

 <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中會更容易,但現在看來我必須讓他們粘貼到videoID,因爲它似乎只玩時,我使用www.youtube.com/v/_O7iUiftbKU

任何人都知道這是爲什麼?

回答

1

正如您所指出的那樣,帶有「watch」字樣的網址結構就是Youtube的面向公衆的網頁,其中包括比視頻更多的網頁......它包含您在網頁上看到的所有其他內容以及。實質上,它是一個解析爲HTML頁面的指針,並且不能將HTML頁面作爲嵌入元素的源。

適當的URL結構(即工作的結構)不是指向HTML頁面的指針,而是直接指向播放器本身的指針,因此可以作爲嵌入元素的來源。

這是一個Stack Overflow問題的鏈接,其答案包括一個C#代碼塊,它將一個常規的YouTube網址(以其任何形式)作爲輸入,進行正則表達式匹配,並返回僅Youtube ID是很簡單的修改您的需求...所以你仍然可以繼續有你的用戶在整個視頻網址貼上:

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

2

而不是試圖解析YouTube觀看頁面URL和構建自己嵌入代碼,你可以使用oEmbed service爲你做。

如果你需要回到傳統的嵌入代碼,而不是iframe嵌入代碼,你需要通過iframe=0作爲URL參數的透過oEmbed服務之一,如:http://www.youtube.com/oembed?url=http%3A//www.youtube.com/watch%3Fv%3DbDOYN-6gdRE&format=json&iframe=0

+0

我怎麼不知道這件事服務?這對我來說非常方便......謝謝。爲了文件的目的,我會在下面留下我的答案,但這應該被評爲正確答案。 – jlmcdonald

+0

oEmbed是一個行業標準,但不幸的是,YouTube的oEmbed支持僅記錄在該博客文章中。它確實需要在官方的YouTube API文檔中出現,但一些與內部流程相關的障礙妨礙了這一點。 –

相關問題