前言

最近在公共電視播出的通靈少女非常的紅,雖然學校宿舍仍有電視但對於菸酒生來說還是非常不方便的,多半選擇網路來源來進行觀賞。

但是!! 竟然有賞味期限為 4/9,只好來解析一下是否在過期之後繼續觀賞影片的方式。
賞味期限

分析一下

身為一個網頁開發者,不免俗得還是要打開開發者工具來瞧瞧

由於它的連結中已經有做過一些處理,並無法直接打開連結網頁,只好選擇登入了公視 +7 了。

在登入之後,點擊影片的 icon 之後便會跳出一播放器來進行播放,就可以很開心的用 Console 來 document.getElementsByTagName('video') 取得 video 的來源。

這邊要比較注意的是,它彈出來的畫面是插入一個 HTML5 Frame,我們必須選擇 videojs5.htm 頁面來取得資料,如下圖。

打開該純播放器網址後,會發現到這個連結是不需要登入即可觀賞。在網頁播放器的部份,選擇了開源的 video.js 並使用 plugin
videojs5-hlsjs-source-handler

HTTP Live Streaming(HLS),是因應現在多元化的使用裝置解析度,透過碎片化檔案,讓使用者區讀取到哪一片段在進行下載檔案,而言伸出來的一種協定。

再次開啟開發者工具,Network 頁面,可以查看到 playlist.m3u8 的清單

M3U 是一種播放多媒體列表的檔案格式,它的設計初衷是為了播放音訊檔案,比如 MP3,但是越來越多的軟體現在用來播放影片檔列表,M3U 也可以指定線上串流媒體音訊源。很多播放器和軟體都支援 M3U 檔案格式。--From Wiki

簡單來說,playlist.m3u 定義了

  • 解析度:1920x10801280x720854x480
  • token
  • expires

當解析度為 1920x1080 就會取得 chunklist_b4000000.m3u8 的播放清單,在 chunklist 裡面清楚定義有多少檔案及每個檔案播放長度。

換言之,我們已經知道共有 227 個檔案,而且檔名皆為 media_b4000000_[xx].ts
所以就能撰寫一個小 shell script 來幫我們備份影片了(?

#! /bin/bash

for i in {0..237}
do
   wget "http://plus7hd-pts.cdn.hinet.net/pts-plus7hd/_definst_/smil:mbroutput/169/7_SUN/0402-1_LOGO/0402-1_LOGO.smil/media_b4000000_$i.ts"
done

最後,你只需要一個播放器可以播放 .ts 的影片格式,及我們剛剛的 chunklist.m3u8 的檔案,便可以觀賞影片了。

或是可以透過 ffmpeg -i chunklist_b4000000.m3u -c copy -bsf:a aac_adtstoasc output.mp4 來轉出成 MP4 檔案來觀賞

附註

若要用此方法請注意版權問題記得要刪掉,大家支持正版喔~

然後,通靈少女是一部值得推薦的戲劇,還有瑤瑤好正 XDDDDDDDD