streamingの仕組みを調べてみた
ストリーミングの仕組みについて勉強したいので調べてみました。
ストリーミングプロトコルの種類
HLS (HTTP Live Streaming)
.m3u8のプレイリストと.tsというセグメントファイルで構成される。
m3u8でtsの順番を指定。
MPEG-DASH
.mpdのプレイリストと.m4sまたは.tsというセグメントファイル。
MSE (Media Source Extensions)
MPDというXMLファイルに情報が書かれており、セグメントはバイナリファイル。
実際のサイトでは
ニコニコ動画
ニコニコ動画の動画を再生するとm3u8とtsファイルがダウンロードされるため、HLSを採用していることがわかる。
ニコ生
m3u8とmp4だが、mp4はそのままでは再生できない。
YouTube
videoplaybackとかいうセグメントファイルらしきものがダウンロードされているが、プレイリストが見当たらなく、videoplaybackもそのままでは再生できないため形式がよくわからない。
追記:
動画はmp4、音声はweba。
最初以外単体で再生できないのはヘッダーが最初のセグメントにしか存在しないため。
YouTube Live
videoplaybackというセグメントファイル。
動画と音声が別々であり、動画はwebm、音声はm4a。
ツイッター
ツイッター上の動画はm3u8とm4sだがm4sはそのままでは再生できない。
ツイキャス
viewer?token=で始まる配信のタイトルやカテゴリーが書かれたデータが送られてくる。しかし動画の本体のデータが見当たらない。
その代わりコンソールにllfmp4 player is enabled. と表記されていた。
llfmp4で検索すると、
pythonのコードが見つかった。
これを読み取れれば理解が深まりそう。
少し読んでみるとwss:とかいうプロトコルのURLがあった。
これにブラウザからアクセスしてもアクセスできなかった。
調べてみるとwebsocketのsecure版らしい。
Devtoolsをよく見てみるとWSという分類があり、そこのfmp4のメッセージにバイナリメッセージが連なっていた。
サイトによってデータのやり取りに特徴があって面白い。
TikTok
?a=から始まるファイルだがmime_type=video_mp4とあり、mp4である。
TikTok Live
?aidというidに関するデータとbatch/というデータが送られてくる。
tiktok githubで検索すると解析しているコードが見つかった。
githubのコードを読んで勉強する!
少し読んでみるとなんかflvファイルのあるリンクを作っているらしい?
あんまよくわからなかったけれど、ツイキャスを踏まえてdevtoolsで見るとやっぱりwebsocketだった。
websocketとか使ったことがないから、今度なにかに使ってみたい。
radiko
aacがある。
コメント
0 件のコメント :
コメントを投稿