AVPlayer を使用して、2 つの品質形式で配信されるオーディオ コンテンツをストリーミングしています。
問題は、下位のフォーマットから上位のフォーマットに移行するとき (wi-fi が利用可能なときにフレームワークによって自動的に行われる)、再生中に遅延が発生することです。
その遅延を防ぐために、希望する品質を手動で選択する方法はありますか?
AVPlayer を使用して、2 つの品質形式で配信されるオーディオ コンテンツをストリーミングしています。
問題は、下位のフォーマットから上位のフォーマットに移行するとき (wi-fi が利用可能なときにフレームワークによって自動的に行われる)、再生中に遅延が発生することです。
その遅延を防ぐために、希望する品質を手動で選択する方法はありますか?
iOS8でできるようになりました。
AVPlayerItem の preferredPeakBitRate をチェックアウトします。
以下は、Apple のドキュメントからコピーされたものです。
このアイテムのネットワーク帯域幅消費量の望ましい制限 (ビット/秒)。
SWIFT: var preferredPeakBitRate: Double
OBJECTIVE-C: @property(nonatomic) double preferredPeakBitRate
preferredPeakBitRate をゼロ以外に設定して、プレーヤーがアイテムの再生をビット/秒で表されるビット レートに制限しようとすることを示します。
ネットワーク帯域幅の消費をpreferredPeakBitRateに合わせて下げることができない場合は、アイテムの再生を続けながら可能な限り削減します。
更新:これに反対票を投じる前に、iOS 4の時点で正確で受け入れられた回答であったことに注意してください。更新されたiOS8の回答については、こちらを参照してください。
私はこの質問を自分で調べましたが、答えが見つかりませんでした。これは、これを行う方法がないことをかなり確信していることを意味します。Appleのドキュメントには、物事でできることのすべての詳細が常に記載されているわけではありませんが、利用可能なすべてのプロパティ、メソッドなどを見ると、ストリームを微調整できるものが何もないことがわかります。
これがHLSの要点だと思います。Appleは、iPhoneユーザーに可能な限り最高のストリーミング体験を提供することを望んでいます。彼らが開発者にどのストリームが使用されているかを微調整するためのコントロールを与えた場合、それは目的を無効にします。ストリームの切り替えに関しては、システムが最もよく知っています。電話が追加の帯域幅を処理できない場合、それはより高いストリームに切り替わりません(または切り替えるべきではありません)。あなたが見たいと思うかもしれないと私が見つけたいくつかのこと...
ファイルは10秒単位でチャンク化されていますか?それ以上の場合は、短くすることをお勧めします。
一部のファイル変換プログラムはビットレートを正確に取得しません。その場合、電話は、たとえば96 kbpsフィードの帯域幅を持っていると考えるかもしれませんが、実際にはフィードは115kbpsです。この投稿で受け入れられた回答を見てください:iPhone-アプリは再び拒否されました、HTTPライブストリーミング64kbpsベースラインフィード