ffmpeg -i http://n.bwzybf.com/20171126/qtPkXl6h/index.m3u8 -c copy Kingsman2.mkv
使用上述指令,能夠在下載的同時,即可觀看,慢個十分鐘看,就比在瀏覽器上看還順。
曾碰到的問題是,下載到一半,就停了,重新下載,又沒辦法指定開始時間,必須重頭開始。這問題,也許能找到解決方法吧。
另外,使用 VLC 播放器,也可以將影片 [轉換/儲存],但是必須在儲存後,才能觀看,比較麻煩。
假如你使用 Linux 的話,也懂 PHP 的話,請參考這作法 d93921012/Download-HLS-Files,在中斷之後,可以重新下載,比較方便。
並且,在下載的同時,將已下載的檔串起來i成一個大的 ts 檔,因此可以邊下載邊看。我在 Linux 下,是以 mpv 來觀看,算蠻方便的。
併行下載
有時候伺服器反應很慢,久久才下載一個 segment,使用 PHP 的 curl_multi_func 功能,改進程式,可以同時下載 5 個 segment。當然,只要修改變數值,即可更多個 thread 同時下載。另外,在 curl 的連線參數加上 keep-alive,不關閉 connection,可以進一步提升下載速度。
原本一次下載一個 ts 檔案,有些網站反應較慢,會來不及即時觀看。經過改進後,短短 10 幾分鐘就可以下載完一個檔案,可以很舒服的觀看。
檔案簡要說明
從小鴨影音找到影片的連結,長得像這樣http://youku163.zuida-bofang.com/20180505/4747_5bd4685f/index.m3u8
用 mpv 或 vlc 程式可以直接播放。用 curl 取得的內容如下
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=800000,RESOLUTION=1080x608
800k/hls/index.m3u8
這代表它只有一個解析度的影片,自己組合新的 url 如下
http://youku163.zuida-bofang.com/20180505/4747_5bd4685f/800k/hls/index.m3u8用 curl 取得的內容
#EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:9 #EXT-X-MEDIA-SEQUENCE:0 #EXTINF:4.170000, 9aaa1ce7281000.ts #EXTINF:4.170000, 9aaa1ce7281001.ts .... #EXTINF:4.128300, 9aaa1ce72812015.ts #EXTINF:4.170000, 9aaa1ce72812016.ts #EXTINF:2.126700, 9aaa1ce72812017.ts
#EXT-X-ENDLIST
每一段影片的 url 長得這樣下
把這些資料一段一段接回去,就成為完整的影音檔了。
http://youku163.zuida-bofang.com/20180505/4747_5bd4685f/800k/hls/9aaa1ce7281001.ts
把這些資料一段一段接回去,就成為完整的影音檔了。
沒有留言:
張貼留言