如何下載某些 flash 在線視頻 並使用ffmpeg下載分段並加密的m3u8視頻流

有些網站使用 flash 在線播放視頻,不方便進行下載。html

能夠使用 Chrome 的 Developer Tools 模擬成 iOS 設備(經過修改 User Agent),而後取得 h.264 視頻流的地址。html5

 

取得 h.264 視頻流的地址瀏覽器

1. 在頁面上打開 Developer Tools (開發者工具),點擊坐上的"手機"按鈕(以下圖)。cookie

 

2. 在左邊 "Device" 選擇 "Apple iPhone" 或 "Apple iPad" 等設備,刷新頁面。工具

3. 這時頁面應該會提供 html5 的視頻播放支持,定位到播放器元素,找到數據源連接(一般是一個 m3u8 文件)。網站

 

如何下載分段並加密的 .m3u8 視頻流加密

1. 下載一個編譯好的 ffmpeg 可執行文件(http://ffmpeg.org)。插件

2. 使用命令 ffmpeg -i http://...m3u8 -c copy out.mkv 將視頻流下載併合併成 out.mkv。視頻

4. 若是視頻流並未加密,或者加密密鑰(URI 存在於 m3u8 中)能夠直接經過 http 訪問到,一般能夠正常下載(這種狀況通常也能夠用各類瀏覽器視頻下載插件下載),但若是 URI 經過 https 協議,或者有 cookies 驗證等機制,則須要手動下載密鑰。htm

5. m3u8 中的密鑰一般是這樣的:#EXT-X-KEY:METHOD=AES-128,URI="https://xxx" 這時須要用可以在線觀看到這個視頻的瀏覽器會話去訪問這個 URI (經過 cookies 驗證),並保存到本地,把 m3u8 也保存到本地,密鑰的 URI 改成下載好的本地路徑(一個 m3u8 中可能有多個密鑰,須要一一處理)。

6. 再次執行 ffmpeg 的命令,便可正常下載。

 

注:

使用 ffmpeg 沒法直接下載 m3u8 內容的狀況:

1. m3u8 中的密鑰的 URI 是走 https 協議的(這時 ffmpeg 通常會提示不支持 https 協議,但能夠經過本身編譯一個 ffmpeg 來打開 https 的支持)。

2. URI 有 cookies 認證(這種狀況應該只能用瀏覽器先下載密鑰了)。

相關文章
相關標籤/搜索