
最近、WEBアプリの仕組みについて気になっています。
Youtubeなどの動画配信ソフトなどはRestAPIでクライアントとサーバで通信されていますか。
例えば、Youtubeで検索したら
①ブラウザからリクエストを投げる APIでGET?認証していたら、認証情報も一緒に送る。
②レスポンスとして、ユーザにおすすめの検索一覧の動画が出てくる。
Bodyには、画像情報が入っている。
③サムネをクリック(ここも、APIでリクエスト)
④レスポンスで動画ファイルが送られてくる。
⑤動画が再生
というAPIですべてやり取りされていると思っています。
そもそも、YoutubeなどのWEBってAPIでやり取りしていますか
サーバに直接行って、サーバ側でそのユーザ情報を持っていると、サーバがパンクしそうなので、
RESTAPIでやり取りしてるのかなっと思っています。。
また、APIでやり取りしている場合に、動画などのサイズがでかいファイルなどを返すことって可能なんですか?4Kなどあり、テキストしか返せないイメージがあります。
No.1ベストアンサー
- 回答日時:
YouTubeの仕様については公開されておらず、Webページのソースコードや公開情報を基に確認した内容を回答します。
これは2022年2月現在の時点での仕様であり、変更前の仕様や、非対応ブラウザでの挙動は確認していません。
①YouTubeがREST APIを用いて通信しているか。
REST APIを用いているのは間違いありません。例えばシークバーの操作や早送り、リアルタイムのコメント送受信等、ユーザがリクエスト(要求)した操作に対してレスポンス(結果)が即座に画面に反映されるものは、すべてRESTを用いたものです。(昔はFlash Playerを使用していました)
②動画データの配信をREST APIで行っているか
YouTubeの場合はRESTを使用しています。
が、使用しなくても動画の配信は可能です。
・使用しない場合
近年の動画再生においてはHTTP Live Streaming(HLS)という技術を用いています。バージョンの新しい、主要ブラウザでのみ使用可能です。
「主要ブラウザ」と言ったのは、古いバージョンのブラウザなどはHTML5に対応しておらず、HLSを使用することができません。
これはHTML5の標準機能です。videoタグを解析してサーバ上の動画ファイルを指定し、ストリーミングを行います。
以下のようなHTMLソースで記述ができます。
<video controlslist="nodownload" src="hoge.mp4"></video>
これは、imgタグと同じように「サーバ上のhoge.mp4をここに映し出せ」という命令です。つまりサーバはRESTなどとは関係なく、ブラウザがHTMLを解析した時点で動画を配信しています。ここで重要なのは、データの配信は中断できない、ということです。
気になるようであれば、以下リンクが詳しいです。
https://developer.mozilla.org/ja/docs/Web/HTML/E …
・YouTubeの場合
ソースコードを見ていると、上述のvideoタグでこのような記述がありました。
<video controlslist="nodownload" src="blob:https://www.youtube.com/難解な文字列"></video>
blobとは、バイナリデータ(ファイルを0と1で表したもの)を構造化した、データの集まりのことです。
YouTubeはこのblobをvideoタグで解析させています。このblobにはデータを分割するポイントや、4KやUHDなどの各フォーマット、字幕などの設定が含まれています。
すなわち、RESTによって操作しやすい効率的な動画を配信しています。
動画の分割ポイントなどの情報があれば、動画を止めてブラウザを閉じても分割ポイントまでのデータしか配信されないわけです。
③テキスト以外の巨大なデータをHTTP(あるいはREST)で送受信できるか
可能です。
上述しましたが、どのようなデータでも、バイナリ、すなわち1と0の文字列で表すことができます。そして、分割して送ることができます。
これを理解するためには、HTTPヘッダなどの知識が多少必要になってきます。
HTTP通信では、MIMEタイプというものを使用してデータの形式を指定します。
詳しくは以下リンクをご覧ください。
https://developer.mozilla.org/ja/docs/Web/HTTP/B …
Webアプリケーションは奥が深く、進化も早いものです。
理解するためには時間がかかると思います。また、勉強してもすぐに新しい技術が生まれるので生涯学習することだらけです。
ぜひ、勉強を頑張ってください。
色々知らない世界が詰まってました。
やはり、Restが主流のようですね。
今まで、文字列をjson形式で返すようなイメージしかなく4k動画などの膨大な01の羅列もBodyで返していくのは想像もつきません。。
めちゃくちゃ詳しく説明いただきありがとうございました!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- YouTube SEGAの「デイトナUSA 2」の違法配信?らしい動画について 3 2021/12/01 01:57
- YouTube YahooからYouTubeの動画が見れなくなってしまいました。 1 2021/11/04 20:30
- Safari(サファリ) iPhoneで適当にサイトを見ていたら変なボタンを押してしまいました。 そうしたら自分のファイルアプ 1 2021/11/16 23:20
- YouTube YouTubeでの収益化について 2 2021/10/31 11:58
- Android(アンドロイド) いま3台のAndroidを使っています。 AndroidってiPhoneには無いmicroSDXCが 1 2022/05/06 11:42
- ノートパソコン パソコン初心者です。ビデオエディタにビデオカメラから動画を取り込んだのですが、音が消えてしまいます、 3 2021/10/28 10:14
- 事件・犯罪 違法漫画サイトに広告を載せていた広告代理店が裁判で負けました。YouTubeの広告は大丈夫か? 3 2021/12/28 10:10
- その他(動画サービス) 高校生です。最近、私の通っている高校が、テレビ番組で全国放送されました。せっかくなので、別の高校に通 2 2021/11/11 13:40
- Instagram インスタで一度見た動画を探す方法は? 先日インスタでみた動画?ストーリー?で、もう一度どうしても見た 3 2021/11/15 23:34
- YouTube youtube動画をダウンロードするAudials one以外のお勧めのソフト 4 2021/12/17 22:38
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
サーバーというのとメインフレ...
-
DNSサーバを設定したのですがns...
-
”Tortoise SVN” と ”Subversio...
-
「DNSサーバーを自動的に取得す...
-
HULFTのコード変換について
-
複数IPアドレスによるサーバ運...
-
ワークグループ設定のPCの名前解決
-
ファイルサーバ容量を増やす方法
-
モニターなしのサーバとはどん...
-
\\\\IPアドレス指定で共有一覧...
-
掲示板に投稿する際に投稿時刻...
-
プリントサーバーのCAL
-
Mail Distributorの使い方を教...
-
APサーバーは具体的にはアプリ...
-
別サーバに構築したApache+Tomc...
-
ホットスタンバイとロードバラ...
-
pingは通るけどサーバに繋がら...
-
ADサーバのスキーマ拡張の影響...
-
マネージャ・エージェントモデ...
-
リモートデスクトップ接続でパ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
サーバーというのとメインフレ...
-
「DNSサーバーを自動的に取得す...
-
DNSサーバを設定したのですがns...
-
”Tortoise SVN” と ”Subversio...
-
ワークグループ設定のPCの名前解決
-
同じ独自ドメインを2つのサーバ...
-
掲示板に投稿する際に投稿時刻...
-
notes のメールがループし送れ...
-
複数IPアドレスによるサーバ運...
-
マネージャ・エージェントモデ...
-
サーバルームの空気を換気したい
-
pingは通るけどサーバに繋がら...
-
プロキシサーバとDNSサーバにつ...
-
社内でプロキシサーバ(Squid)の...
-
HULFTのコード変換について
-
ホットスタンバイとロードバラ...
-
gitとgiteaの違いについて
-
ntpサーバの置き方
-
Linux の NTPクライアント設定...
-
FTPサーバの構成について
おすすめ情報