百度媒體雲播放器cyberplayer支援M3U8格式的HTML5播放器

天府雲創發表於2016-12-07
我也在某XX 網站看到的。
教大家如何盜用百度網盤的視訊來播放。
登入百度網盤後 點開視訊線上播放,用抓包工具抓 百度網盤的m3u8下載地址
然後將m3u8檔案下載到本地。上傳到自己的空間。

得到m3u8的網址,例:

然後

在網頁裡呼叫 百度網盤的js


再然後插入下面這段js就可以播放了。另外附上百度雲播放器 Web SDK- https://cloud.baidu.com/doc/MCT/Web-SDK.html#.E6.92.AD.E6.94.BE.E5.99.A8.20Web.20SDK.20.E7.AE.80.E4.BB.8B


<div id="playercontainer"></div>

<script type="text/javascript" src="http://resource.bcevod.com/player/cyberplayer.js"></script>
<script type="text/javascript">
    var player = cyberplayer("playercontainer").setup({
        width: 640,
        height: 480,
        file: "http://gdkd6p41ziwjhrgj1zi.exp.bcevod.com/mda-gmgimznr28p1ruuj/mda-gmgimznr28p1ruuj.m3u8",
        image: "http://gdkd6p41ziwjhrgj1zi.exp.bcevod.com/mda-gmgimznr28p1ruuj/mda-gmgimznr28p1ruuj.jpg",
        autostart: false,
        stretching: "uniform",
        repeat: false,
        volume: 100,
        controls: true,
        ak: 'cc94de6803904f2ca7159eedeaced55d'
    });
</script>

哈哈!看下演示效果……


【附錄知識】M3U8格式講解及實際應用分析

M3U8有啥好處 ? 

網上搜尋了一下,大家眾說紛紜,個人理解主要是可以做多位元速率的適配,根據網路頻寬,客戶端會選擇一個適合自己位元速率的檔案進行播放,保證視訊流的流暢。

iOS device和mac上可以用http的方式進行分發,其中playlist標準為由m3u擴充套件而來的m3u8檔案,媒體檔案為MPEG2-TS或者AAC檔案(audio only)。

m3u8檔案有兩種應用場景:

多位元速率適配流,

#EXTM3U

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1280000

http://example.com/low.m3u8

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2560000

http://example.com/mid.m3u8

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=7680000

http://example.com/hi.m3u8

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=65000,CODECS="mp4a.40.5"

http://example.com/audio-only.m3u8

單位元速率適配流

#EXTM3U

#EXT-X-TARGETDURATION:5220

#EXTINF:5220,

http://media.example.com/entire.ts

#EXT-X-ENDLIST


國際標準組織對此的定義 rfc doc:
http://tools.ietf.org/html/draft-pantos-http-live-streaming-06
m3u8 檔案是m3u檔案的擴充套件。在該rfc中定義了擴充套件的關鍵字:
其中:
#EXT-X-TARGETDURATION
定義每個TS的最大的duration。
#EXT-X-MEDIA-SEQUENCE
定義當前m3u8檔案中第一個檔案的序列號,每個ts檔案在m3u8檔案中都有固定唯一的序列號,該序列號用於在MBR時切換位元速率進行對齊。

#EXT-X-KEY

定義加密方式和key檔案的url,用於取得16bytes的key檔案解碼ts檔案。

屬性:
METHOD
URL
#EXT-X-PROGRAM-DATE-TIME

第一個檔案的絕對時間

#EXT-X-ALLOW-CACHE

是否允許cache。
#EXT-X-ENDLIST
表明m3u8檔案的結束。live m3u8沒有該tag。
#EXT-X-STREAM-INF
屬性:
BANDWIDTH              指定位元速率
PROGRAM-ID            唯一ID
CODECS                    指定流的編碼型別
#EXT-X-DISCONTINUITY
當遇到該tag的時候說明以下屬性發生了變化:
file format 
number and type of tracks
encoding parameters
encoding sequence

timestamp sequence

#EXT-X-VERSION             該屬性用不用都可以,可以沒有





M3U8分頂級M3U8和二級M3U8, 頂級M3U8主要是做多位元速率適配的, 二級M3U8才是真正的切片檔案,

客戶端預設會首先選擇位元速率最高的請求,如果發現位元速率達不到,會請求郊低位元速率的流


一個實際使用中的頂級M3U8檔案如下 :

#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=201273221265,BANDWIDTH=358400
11.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=201273221265,BANDWIDTH=972800
22.m3u8


上面頂級M3U8檔案中又定義了 11.m3u8 和 22.m3u8 兩個二級檔案,客戶端會選擇其中一個獲取其內容。

二級M3U8檔案內容如下:


#EXTM3U
#EXT-X-VERSION:1
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:3,
1-4.ts
#EXTINF:8,
1-6.ts
#EXTINF:8,
1-8.ts
#EXTINF:8,
1-10.ts
#EXTINF:8,
1-12.ts
#EXTINF:8,
1-14.ts
#EXTINF:8,
1-16.ts
#EXTINF:9,
1-18.ts
#EXTINF:6,
1-20.ts
#EXTINF:8,
1-22.ts
#EXTINF:9,
1-24.ts
#EXTINF:3,
1-26.ts
#EXT-X-ENDLIST


客戶端拿到上面的二級M3U8檔案後,會繼續請求裡面的檔案,這時就可進行播放了。

上面講解的是點播的情況,直播的情況,M3U8檔案裡面會有屬性告訴是直播,客戶端會定時來請求新的M3U8檔案。


  • 其實m3u8是個列表檔案,所有的原始視訊檔案都被下載到一個隱藏資料夾了。

  • 你點選m3u8檔案就會自動把這些視訊檔案連結在一起播放,可以用notepad++開啟m3u8檔案檢視內容,裡面是一個個本地檔案的連結,這些連結指向一個個小視訊檔案,也就是說你找不到原來下載這個檔案的網址了。

  • 如果想直接播放完整的原始視訊檔案就要找到那個資料夾,裡面的視訊檔案是一段一段的,要把這些小視訊檔案按m3u8檔案裡面的順序用qq影音合併成一個完整的視訊檔案,然後就可以播放了。

  • 當然,如果刪除了那個隱藏資料夾,那這個m3u8檔案也就沒用了,點選播放會提示解析失敗。

  • 那個隱藏資料夾可以直接在m3u8裡面看到位於哪裡,是個.開頭的隱藏資料夾。


相關文章