Spotifyを聴いていたところ、インターネット接続がダウンしました。驚かなかったのですが、それでも曲が完成しました(バッファリングのため)が、次の曲に進んで数分間再生し続けると、私はだった驚いた(そしてインターネットに戻った)。
接続が失われた後、Spotifyはどのくらい再生を続けることができますか? 「オフラインで有効」になっているファイルはないと仮定します。
タスクは、単に「時間を計る」よりも分析が難しい場合があります
Spotifyは以前に再生された曲をキャッシュするので、回線がダウンしたときにそれらの1つが再生されている場合、それはすでにデバイス上にあるので、気付くことさえありません。
バッファが常にどのくらいの大きさであるかについては、自動調整され、ソース、ピア、またはサーバーに応じて、15秒から曲全体までの範囲になります[以下を参照]
私はこれらの記事をさらに読むためだけに含めました-ここで説明するには多すぎますが、かなり簡単な説明をします。
Spotify For Dummies キャッシュとそのサイズの調整方法に関する優れた記事があります
Spotifyテクノロジー:Spotifyの仕組み ストリーミングテクノロジーの仕組みに関する簡単な情報があります。
Gunnar Kreitz &FredrikNiemeläによって書かれた、この主題に関する権威ある文書を見つけました。
Spotify –大規模、低遅延、P2Pミュージックオンデマンドストリーミング
抽出:
特定のトラックは、サーバーと複数の異なるピアから同時にダウンロードできます。ピアが要求を満たすのに遅すぎる場合、要求は別のピアに再送信されます。データの取得が緊急になりすぎた場合は、サーバーに再送信されます。
サーバーからストリーミングしている間、クライアントは、トラックに使用可能なピアがある場合、現在の再生ポイントより約15秒以上進んでいないように要求を抑制します。ピアツーピアネットワークからダウンロードする場合、そのようなスロットリングは発生せず、クライアントは現在再生中のトラック全体をダウンロードしようとします。ユーザーがトラックを変更すると、現在のトラックに関連するリクエストは中止されます。
ピアツーピアネットワーク内で提供されるファイルは、16kBのチャンクに分割されます。チャンクを要求するピアを決定するとき、クライアントは予想されるダウンロード時間(ピアからの未処理の要求のバイト数をそのピアから受信した平均ダウンロード速度で割ったものとして計算)でピアをソートし、最も緊急のチャンクを貪欲に要求します推定ダウンロード時間が最も短いピアから(そして、予想ダウンロード時間を更新します)。これは、トラックのチャンクが順番に要求されることを意味します。ファイルを提供するすべてのピアはファイル全体を持っているため、ブロックを順番に要求しても、可用性やダウンロード速度には影響しません。
クライアントは、ピアが2秒以内に配信できると信じているデータに対して、最大で特定のピアからの未処理の要求を持つことができます。これの例外は、ピアからの未処理の32kBの要求を常に許可されることです。ブロックの推定ダウンロード時間がブロックが必要な時点を超える場合、そのブロックは要求されません。…
Spotifyクライアントはバッファサイズを制限しないため、問題の核心はチャネルの適切なモデリングとその情報を使用した初期再生レイテンシの調整です。簡略化として、クライアントは遅延調整のためにサーバーへのチャネルのみを考慮します。
Spotifyクライアントは、クライアントによって観察されたスループットにマルコフモデルを使用します(つまり、パック遅延変動、パケット損失、およびTCP輻輳制御)の影響を受けます)。クライアントはスループットを観察します。マルコフ連鎖を推定するためにサーバーからダウンロードしている間に達成されます。ダウンロードの最後の15分間に収集されたデータのみが保持され、使用されます。マルコフ連鎖の状態は1秒間のスループットであり、0との間の33の異なるレベルに離散化されます。 153 kBps(スループットが低いほど細かくなります)。
このモデルは、明示的な再生待ち時間の計算には使用されません。代わりに、再生が開始される前に、クライアントは定期的にマルコフ連鎖を使用して、現在のバッファリングされたデータの量と現在のデータスループットから始めて、トラックの再生をシミュレートします。このような各シミュレーションは、アンダーランが発生したかどうかに応じて、失敗または合格と見なされます。クライアントは100のシミュレーションを実行し、それらの複数が失敗した場合、再生を開始する前により長く待機します。これらのシミュレーション中に、クライアントは、使用されるコーデックのビットレートエンコーディングが可変であるにもかかわらず、データが一定のレートで消費されるという単純化した仮定を立てます。