はじめに
Youtubeのライセンス無し動画のみ取得できます。
kitoko552さんのこちらの記事を参考にしました。
本当にありがとうございます。
YouTube動画のm3u8URLを取得する
.m3u8とは
.m3uとは『マルチメディアプレイリストのファイルフォーマット』である。 ... m3u8は、UTF-8(BOMB無し)で作成する事を明示的にした形式。 根本的にはm3uとm3u8は同じ物。 このファイルに分割されたtsファイルのパスを記述していくことで、複数のファイルを一つのファイルとして再生する事が出来る。
要は動画そのものではなく、動画にアクセスするために必要な情報が含まれているファイルみたいです。
Youtube動画の.m3u8ファイルには解像度ごとのデータも含まれていました。
手動で取得する
ほしいYoutubeのリンクを持ってくる
ライセンス無しの動画を見つけましょう。
とりあえず著作権フリーの動画があったので今回はそれを使います。
https://www.youtube.com/watch?v=rvkxtVkvawc
URL内の最後のv=
の部分が動画IDになります。
rvkxtVkvawc
infoファイルを取得する
まず.m3u8ファイル含めて動画の情報が記載されてるinfoファイルを取得します。
infoファイルは以下のリンクで取得できます。
https://www.youtube.com/get_video_info?video_id={videoId}
この{videoId}
の部分を欲しい動画の動画IDに書き換えてアクセスします。
このとき、ブラウザによっては必要な情報が入ってないので注意してください。
SafariはいけましたがChromeはダメでした。
https://www.youtube.com/get_video_info?video_id=rvkxtVkvawc
するとこんなテキストファイルがダウンロードされたかと思います。
length_seconds=25&cr=JP&player_response=%7B%22playabilityStatus%22%3A%7B%22status%22%3A%22OK%22%2C%22playableInEmbed%22%3Atrue%7D%2C%22streamingData%22%3A%7B%22expiresInSeconds%22%3A%2221540%22%2C%22formats%22%3A%5B%7B%22itag%22%3A17%2C%22url%22%3A%22https%3A%2F%2Fr3---sn-nvoxu-ioqe7.googlevideo.com%2Fvideoplayback%3Fmv%3Dm%5Cu0026mt%3D1547889191%5Cu0026ms%3Dau%252Crdu%5Cu0026signature%3D86F9BEA143E241DB3AF5F7CDBEAAF7362632A37D.D8925F7E22B2F281598EE57BBB3DA284954ACC7B%5Cu0026mn%3Dsn-nvoxu-ioqe7%252Csn-oguesnze%5Cu0026mm%3D31%252C29%5Cu0026c%3DWEB%5Cu0026fvip%3D3%5Cu0026expire%3D1547910870%5Cu0026key%3Dyt6%5Cu0026mime%3Dvideo%252F3gpp%5Cu0026ipbits%3D0%5Cu0026lmt%3D1542168296623039%5Cu0026itag%3D17%5Cu0026dur%3D25.123%5Cu0026pl%3D27%5Cu0026initcwndbps%3D1838750%5Cu0026source%3Dyoutube%5Cu0026requiressl%3Dyes%5Cu0026gir%3Dyes%5Cu0026txp%3D5431432%5Cu0026id%3Do-
...
この中から.m3u8
で終わってhttps%3A%2F%2Fmanifest.googlevideo.com
で始まる部分を抜き取ります。
正規表現: https%3A%2F%2Fmanifest.googlevideo.com.+\.m3u8
https%3A%2F%2Fmanifest.googlevideo.com%2Fapi%2Fmanifest%2Fhls_variant%2Fdover%2F11%2Fmv%2Fm%2Fmt%2F1547889191%2Fms%2Fau%252Crdu%2Fsignature%2F2844BAE6D0C4EB720447365A65CCE859CBB08A97.23AE1BFBF229BD768AD8C97BA6029A7790E3E19F%2Fmn%2Fsn-nvoxu-ioqe7%252Csn-oguesnze%2Fmm%2F31%252C29%2Ffvip%2F3%2Fhfr%2F1%2Fexpire%2F1547910870%2Ftts_caps%2F1%2Fkey%2Fyt6%2Fipbits%2F0%2Fhls_chunk_host%2Fr3---sn-nvoxu-ioqe7.googlevideo.com%2Fitag%2F0%2Fpl%2F27%2Finitcwndbps%2F1838750%2Fratebypass%2Fyes%2Fsource%2Fyoutube%2Frequiressl%2Fyes%2Ftx%2F23728348%2Fplaylist_type%2FDVR%2Fgo%2F1%2Fkeepalive%2Fyes%2Ftxs%2F9474469%252C23724088%252C23728348%252C23728352%2Fid%2Faef931b5592f6b07%2Fip%2F240d%253A1a%253Abb%253A2100%253A29a9%253A68a4%253A734a%253A199f%2Fsparams%2Fei%252Cgo%252Chfr%252Chls_chunk_host%252Cid%252Cinitcwndbps%252Cip%252Cipbits%252Citag%252Cmaudio%252Cmm%252Cmn%252Cms%252Cmv%252Cpl%252Cplaylist_type%252Cratebypass%252Crequiressl%252Csource%252Ctts_caps%252Ctx%252Ctxs%252Cexpire%2Fmaudio%2F1%2Fei%2FdupCXPbzCsj6qQHhi57IDA%2Ffile%2Findex.m3u8
まだ16進数化されてる文字コードが混じってしまっているので、必要なもののみ変換します。
こことか使うと楽です。
%3A -> :
%2F -> /
%25 -> %
%2C -> ,
これが欲しい動画の.m3u8
ファイルのURLになります。
詳しく検証していませんが、数時間経つとこのリンクは使えなくなるので再度上記infoファイル取得の処理が必要になります。
なのでこの記事を上げる頃には 上記リンクだと403エラーが出るはずです。
さいごに
次はこのリンクを使って動画読み込んでみます。