質問: stream; video.play(); }, err => { throw err; }; ``` とまあこのような感じでgetUserMediaを使えばaudioとvideoの許可をしたらstreamが受け取れてvideoタグ内に埋め込んで再生してくれるというコードかと思います。 ここで疑問なのは、受け取ったstreamを元に音声と映像を再生させる関数がなぜ、成功時(アクセス許可時)に一度だけハンドリングされる関数の中に書くのか、ということです。 これでは、アクセスを許可したタイミングで取得したvideoとaudioのstreamしか再生されないのではないでしょうか。 自分のイメージとしては、一定時間ごとにstreamを取得して、そのstreamを都度strObjectとして再生させるのが正しいのではないかと思っていて、このコードでなぜ永遠にvideoとaudioを再生できるのかの仕組みがわかりません。 拙い文ですが、回答よろしくお願いします。
回答: streamを直訳すると小川ですよね。 動画や音声は時間軸を持っていて、時間の経過でデータが流れていきます。川のようなの流れです。 ここで大事なのはstreamは川全体の流れを表しているのである特定の時間の水(静止画)を表しているわけではありません。 質問者様は 静止画を受け取ってアニメーションのように静止画を更新することを想像しているのだと思いますが、 そういう意味ではないです。 videoタグのsrcに動画のURLを指定すると自動的に動画をダウンロードしつつ再生してくれます。 play()をすれば動画が流れますし pause()をすれば動画を止めます 該当のソースはデバイスのカメラが撮影しているリアルタイムの動画の流れを指定しています。