分析優酷/土豆/pptv/樂視 HTML5、m3u8地址

轉載:http://blog.sina.com.cn/s/blog_4ae178ba01015hx1.html
http://blog.sina.com.cn/s/blog_4ae178ba01015hwz.html
YouTube已經支持HTML5嵌入。YouKu目前全站支持HTML5,不過嵌入代碼還是Flash的。抽空分析了下HTML5下的播放地址,很簡單。
優酷
大男當婚 第1集 (看紅色文字,應該看的明白)
網頁地址:http://v.youku.com/v_show/id_XNDU1NjE4Nzg0.html
查看源文件,在上面的JS內容中,大概在源文件40行左右,找到:
var videoId2 = ‘XNDU1NjE4Nzg0’;
轉換獲取m3u8 地址(以下兩地址都可以播放):
mp4:
http://v.youku.com/player/getRealM3U8/vid/XNDU1NjE4Nzg0/type/mp4/v.m3u8
flv:
http://v.youku.com/player/getRealM3U8/vid/XNDU1NjE4Nzg0/type/video.m3u8
其中“XNDU1NjE4Nzg0”爲視頻videoId2
土豆
在土豆頁面源碼中找到這個 js 文件: http://js.tudouui.com/js/page/play/ios/iosplayer_14.js 從中分析土豆 .m3u8 文件地址應該是 http://m3u8.tdimg.com“,u,r,q,t+”.m3u8 而 u,r,q,t 這四個值如何取得就不知道了,跟土豆視頻的頁面地址 http://www.tudou.com/programs/view/xxxx/ 毫無關係。
然後我隨便找了一個首頁視頻:http://www.tudou.com/programs/view/GXVRIlaM2dM 看它源碼大概15行左右找到,
頁頭有一段:

……

從上面得到視頻縮略圖地址是:http://i2.tdimg.com/140/638/149/w.jpg 發現土豆的 .m3u8 文件地址是
http://m3u8.tdimg.com/140/638/149/2.m3u8(現在不是2,是3了) 測試多個也是這樣。
估計要能在煎蛋支持 iOS 切換到 HTML5 方式播放的話,
有兩種方式:
1、用curl方式,抓取土豆視頻頁面的縮略圖地址,再替換爲.m3u8 文件地址
2、獲取土豆的 api 做個專門插件,獲取土豆視頻的縮略圖地址,再替換爲.m3u8 文件地址 總之很坑爹。
聯繫了土豆的技術人員,他們給了我土豆 html5 兼容的視頻代碼:
其中代碼與土豆視頻網址的
http://www.tudou.com/programs/view/xxxx/
對應搜索
http://api.tudou.com/v3/gw?method=item.search&appKey=myKey&format=xml&kw=畢業季&pageNo=1&pageSize=20&inDays=1&media=v http://api.tudou.com/v3/gw?method=item.info.get&appKey=myKey&format=xml&itemCodes=VpjNU2qwMUw得到視頻詳情,和縮略圖 http://i2.tdimg.com/147/806/921/m25.jpg
根據縮略圖, 得到視頻的m3u8地址 http://m3u8.tdimg.com/147/806/921/3.m3u8
樂視
網頁網址: http://www.letv.com/ptv/pplay/81971/6.html
查看源代碼:大概 28行 左右可以找到 pid:81971,//專輯ID,vid:1742809,//視頻ID得到
http://www.letv.com/ptv/pplay/81971/6.html 對應的手機視頻網址:
http://ipad.letv.com/play.php?type=1&id=81971&vid=1742809
從上面網址的源代碼中找到下面一視頻代碼大概158行左右:

B: http://gslb.m.letv.com/gslb?s=7/7/113/2071162320.9.m3u8&br=292&vtype=m3u8&ptype=s2&level=350&t=1300069752 注意,這個是一個包含m3u8的文件
3)從B地址可以得到格式爲mp4的視頻流文件地址,如下 C: http://gslb.m.letv.com/gslb?s=7/7/113/2071162320.9.m3u8
技術含量: 常用的流媒體協議主要有 HTTP 漸進下載和基於 RTSP/RTP 的實時流媒體協議,這二種基本是完全不同的東西,目前比較方便又好用的我建議使用 HTTP 漸進下載的方法。在這個中 apple 公司的 HTTP Live Streaming 是這個方面的代表。它最初是蘋果公司針對iPhone、iPod、iTouch和iPad等移動設備而開發的流.現在見到在桌面也有很多應用了, HTML5 是直接支持這個。 我們可以看看 HTTP Live Streaming 是怎麼樣工作的。平時的直播技術中,播放模式中必須等待整個文件下載完才行,在 HLS 技術中 Web 服務器向客戶端提供接近實時的音視頻流。但在使用的過程中是使用的標準的 HTTP 協議,所以這時,只要使用 HLS 的技術,就能在普通的 HTTP 的應用上直接提供點播和直播。 要詳細瞭解原理,我們先看看這個所需要的步驟。 視頻採集 ->編碼器 -> 流分割 -> 普通 web 服務(索引文件和視頻文件) -> 客戶端 內 容準備的過程大約二種,一是視頻採集,編碼器首先將攝像機實時採集的音視頻數據壓縮編碼爲符合特定標準的音視頻基本流,也可以拿編碼完了的文件,有一點必 須保證,就是一定要使用H.264視頻和AAC音頻,因爲發明這個的是蘋果公司,只支持這個。然後給這些封裝成成爲符合MPEG-2(MPEG 2 TS、MPEG2 PS之所以使用這個,主要是因爲聲音和視頻會交織在一起,也會有關鍵幀來讓視頻可以直接播放). 流分割部分在這個中, 比起 RTSP 之類和普通點播的最大不同,就是他會給 MPEG-2 分割成很多個 ts 的文件。分割過程大多是按時間來切,根據國外的資料,建議切 10s 一個的文件,如果碼流高可以 5 秒一次。在分割還有一點不同,就是這時流分割器會生成一個含有指向這些小TS文件指針的索引文件 所以這個文件也必須在 web 服務器上,不能少。每多 10s 時,就會多一個 ts 文件,所以索引也會根着修改成最新的幾段視頻。 最後,這些切分了的小的一系列的 ts 文件,放到普通的 web 服務器中就行了。這時在 CDN 中也是一樣,因爲請求這些文件會使用標準的 HTTP 協議。索引文件後綴是.m3u8 ,索引文件採用擴展的M3U播放列表格式,其實就一文本。 內部的視頻的地址會是如下 http://media.example.com/s_96ksegment1.ts http://media.example.com/s_96ksegment2.ts http://media.example.com/s_96ksegment3.ts 所以這時可以直接做 Cache 和直接放到 Web 服務器中,簡單方便。 如果 MIME 的信息輸出不對的話,記的要修改這加入 ts 和 m3u8 的後綴支持 .m3u8 application/x-mpegURL .ts video/MP2T 最後就是客戶端,如果是 HTML 直接在 HTML5 中直接支持這種視頻可以使用如下標籤



如果是應用客戶端(Safari QuickTime之類),就得裝軟件來支持,客戶端會根據選擇的流的索引來下載文件,當下載了最少二段後開始播放。直接 m3u8 的索引結束。另外,HTTP可以設計成的自適應比特率流,在不同網絡環境,選擇下載不同碼流的視頻。 所以整個 HTTP Live Streaming 無論是直播還是點播,都能做到近似實時的方式來進行流播放。理論的最小時延是每個切片的長. 目前本協議加入了 IETF 的草案建議 http://tools.ietf.org/id/draft-pantos-http-live-streaming-01.txt 如果網站也想使用這種來做視頻請看 iPhone HTTP 流與 FFMpeg 和開放的源 Segmenter http://www.ioncannon.net/programming/452/iphone-http-streaming-with-ffmpeg-and-an-open-source-segmenter/ Akamai http://iphone.akamai.com/ 白皮書 (http://www.akamai.com/dl/akamai/iphone_wp.pdf)

PPTV
pptv是html5裏盜版電影最全的.都是MP4格式 主頁地址 http://ipad.pptv.com/
一、取id 如正常觀看地址爲 http://ikan.pptv.com/p/10055638 那麼MP4格式的需要轉換成http://ipad.pptv.com/play_10055638.htm 由於pptv做了瀏覽器限制 所有需要用curl模擬iPad。
以下代碼是 curl的函數
function curl(url) { curl = curl_init();
curl_setopt(curl,CURLOPTURL, url);
curl_setopt(curl,CURLOPTHEADER,0);curlsetopt( curl,CURLOPT_RETURNTRANSFER,1);
curl_setopt(curl,CURLOPT_USERAGENT,”Mozilla/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; zh-cn) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5”);   
 //模擬蘋果設備
data = curl_exec(curl);curlclose( curl);
return $data;
}
二、取PlayList信息 這個是MD5加密的 具體是怎麼加密的 沒去研究 查看源文件 找到如此代碼 var PlayList = [“ed132f42c1a386b26871a81914278920”];
三、合併鏈接取播放地址 合併成如下地址 http://ipad.pptv.com/api/ipad/list.js?cb=load.cbs.cb_1&md5=ed132f42c1a386b26871a81914278920 取得json 可以看到一個m3u的列表地址 嵌入到網頁裏就可以
四、小實例
五、總結 沒什麼技術含量 主要是爲了支持本站的分享電影 如有錯誤 歡迎指正。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章