花了一些時間解析了一下這個影音平台從影片上右鍵內容是可以解析到影片位址的,下載回來的是一個 index.m3u8
$ wget http://eshare.vod.otvcloud.com/123456/index.m3u8
將 index.m3u8 打開可以看到裡面還包了兩個不同的 m3u8 位址
$ vim index.m3u8
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=500000
500/stream.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=300000
300/stream.m3u8
第一眼的認知是這是分為兩種解析度,然後再次將這兩個 m3u8 載回來看一下
$ wget http://eshare.vod.otvcloud.com/123456/500/stream.m3u8
$ vim stream.m3u8
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:2
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:2.000000,
65189_5000.ts
#EXTINF:2.000000,
65189_5001.ts
#EXTINF:2.000000,
65189_5002.ts
#EXTINF:2.000000,
65189_5003.ts
#EXTINF:2.000000,
65189_5004.ts
#EXTINF:2.000000,
65189_5005.ts
#EXTINF:2.000000,
65189_5006.ts
#EXTINF:2.000000,
65189_5007.ts
發現裡面包了很多個 ts 檔案,原來這個影音平台是將影音分割為很多個 ts 小檔案處理,這個方式目前已經許多影音平台都採用這種方式來增加使用者瀏覽的速度。
那我們就必須將他一一載回來並且合併起來
直接寫一個簡單的 script
#!/bin/bash
#
# Program: ts video more download and merge
# Author: shazi
URL="http://eshare.vod.otvcloud.com/123456/500"
wget ${URL}/65189_500{0..165}.ts &
wait
echo 65189_500{0..165}.ts | tr " " "\n" > tslist
while read line; do cat $line >> combined.ts; done < tslist
由於所有的檔案共有 165 個,所以批次把它載回來並且使用 cat 合併成 combined.ts
以上也分享於 github
Orignal From: 從影音平台上下載被分割的 *.ts 影片並合併起來
Cat是哪個軟體
回覆刪除