2009-12-10 55 views
2

我正在寫FLV媒體播放器,並想知道是否存在通過URL訪問YouTube使用的底層FLV文件的方式嗎?過去有很多種方式,但YouTube已經改變了一些事情,我現在找不到任何方式去做它...在.NET中從YouTube獲取FLV

從我迄今看到的情況來看,YouTube API不會看起來也不能進入。有沒有人找到一種方法呢?

乾杯!

+0

假設性地說,即使你找到了方法,也不會持續很長時間。 – Sampson 2009-12-10 20:22:37

+0

我認爲可能是這種情況,但我仍然有興趣看看是否有可能 – 2009-12-10 20:23:54

回答

6

有兩種與YouTube視頻相關的值:ID和簽名。該ID很容易獲得,因爲它在URI本身。簽名有點棘手。它嵌入在每個視頻頁面的源代碼中的Javascript語句中。

例如,我們拍下Numa Numa視頻。

它有一個ID爲KmtzQCSh6xk,可以從URI中看到。

爲了得到簽名,我們必須深入研究HTML的源代碼。要在Firefox中輕鬆完成此操作,請右鍵單擊頁面上的任意位置並單擊「查看頁面源」來加載頁面的源代碼。之後,按Ctrl + F,然後輸入"t":。它會帶你到頁面的簽名:在引號後面的值就是簽名。

在沼沼舞的情況下,它的簽名是vjVQa1PpcFOSvCcjdAYSc3ZQgK-6EG9yQM7RLSYqJk4%3D

獲得實際的FLV,你進入這個網址:

http://www.youtube.com/get_video?fmt=5&video_id={ID}&t={SIGNATURE}

完整的URI來獲取FLV視頻:

http://www.youtube.com/get_video?fmt=5&video_id=KmtzQCSh6xk&t=vjVQa1PpcFOSvCcjdAYSc3ZQgK-6EG9yQM7RLSYqJk4%3D

您可以使用這些信息來幫助你摹以及您需要以編程方式下載FLV的簽名和ID。無論是對值"t":執行簡單的String.Find還是使用RegEx,都應該很容易找到,直到他們改變爲止。

+0

我試過這個在IE8中,但無法在源代碼中找到簽名。我可能做錯了什麼,但是你在那裏得到的URI也恰好給了我一個403--也許這是YouTube關閉的另一種方法... – 2009-12-10 20:57:51

+0

忽略!我找到了簽名......謝謝! – 2009-12-10 21:08:30

+0

有沒有辦法從頁面以編程方式解析這些信息?當我用WebRequest請求頁面時,即使設置了引用鏈接和用戶代理,我也會得到與瀏覽器完全不同的版本(沒有簽名)。 – 2010-03-22 19:07:49