開発中のビデオ オン デマンド iOS アプリで、遅延の大きいネットワーク上で HLS のパフォーマンスが非常に低いことに気付き、ダウンロードの発生方法を手動で調整したいと考えていました。
ファイル (完全にエンコードされた最初から最後までの TS/M3U8 ファイル) は既に CloudFront から提供されているため、これを最適化するためにサーバー側でできることは限られています (私はそう思います)。
もう 1 つの希望は、iOS アプリで localhost サーバーを実行することでした。この「サーバー」は、より頻繁で小さいセグメントのダウンロードよりも、少数で大きいセグメントのダウンロードを優先してダウンロードを管理します。したがって、利用可能な適切な帯域幅を引き続き使用しながら、ネットワークの高い遅延を回避できることを願っています.
ここでのアイデアは、ベース "index.m3u8" とそれが説明するすべてのビットレートの知識を自分たちだけで保持し、TS ファイルの単純な "プレイリスト" (ビットレート情報なし) のみを iOS に公開することでした。
しかし、私が立ち往生しているのは、iOS が実際に TS ファイルをどのように要求するかを理解しようとすることです。つまり、iOS が「ストレートな」M3U8 ファイル (複数のビットレートを持たないファイル) を再生しようとしても、TS ファイルの範囲要求を送信しようとするだろうと私は信じています。しかし、これらのファイルのビットレートがわからない場合、iOS はどのバイト範囲を localhost に要求するのでしょうか? 特定のバイト範囲を要求したとしても、どうしてそれが正しいのでしょうか? 以前にローカルホストから iOS に提供したファイルは、ビットレートが 1 Mbps の「5.ts」であり、次のファイルはビットレートが 500 Kbps の「6.ts」である可能性があります。iOS は、次のファイルの正しいバイト範囲を推定できない可能性があります??
私が概説したアプローチ (各 TS ファイルのビットレートを切り替え、iOS に対して透過的) は機能しますか? それとも、M3U8 で指定されたすべての TS ファイルは、私が読んでいない HLS 仕様の一部と同じビットレートを強制的に持つ必要がありますか?
いくつかのことを混乱させているか、iOS が基本的なストリーミングで一般的にどのように機能するかを正しく理解していない可能性があると思います。これに関するいくつかの実際の知識は非常に役立ちます。
ありがとう!