私はStarboardでメディアハンドラを実装しています。私はCobaltのクライアントアプリケーションがコンテンツを積極的にバッファリングしていない状況に陥っています。この結果、空のバッファでアイドル状態になります。プラットフォームのバッファが使い果たされたときに起動する適切なStarboardイベントは何ですか?何らかのエラーが発生した場合、またはクライアントアプリケーションにさらにデータを要求する旨の信号がありますか?バッファアンダーランを処理する最良の方法は?
答えて
アンダーランがある場合、プレーヤーの実装はビデオの再生を内部的に一時停止することによってそれを処理する必要があります。エンドユーザには、メディアスタックの状態が「再生中」と見なされている間、メディア再生が一時停止されます。これにより、再生を再開する前に、ビデオデータを受信する機会がプレーヤーに与えられます。リファレンス実装では、PlayerWorkerはオーディオ再生を一時停止することでこれを実現します。メディアの時間とビデオの再生がオーディオ時間にリンクされると、プレーヤー全体が一時停止されます。
新しいデータが来たら、プレイヤーは自動的に再生を再開する必要があります。プレイヤーの実装は、将来のアンダーランを避けるために、プリロール/レジュームに必要なバッファー量を増やすことも選択できますが、これは通常は必要ありません。
あなたのアプリは常にアンダーランになると述べました。アンダーランが適切に処理できる場合でも、これを解決してより良いユーザーエクスペリエンスを実現することは素晴らしいことです。
最初に確認するのは、テスト環境には要求されたビデオ品質に十分なネットワーク帯域幅があるということです。アプリが非常に貧弱なネットワークの市場をターゲットにしている場合、より多くのメディアデータをバッファリングすることを検討してください。
ネットワーク帯域幅が十分にある場合にアプリケーションの実行がアンダーランすると、メディアデータが十分に高速に処理されないことが示されます。良い方法は、kSbPlayerDecoderStateNeedsDataが頻繁に起動され、SbPlayerWriteSample()がStarBoardの境界を越えてメディアデータを移動する唯一の場所であるため、あまり遅れなく呼び出されるかどうかを確認することです。
- 1. api.aiの範囲を処理する最も良い方法は?
- 2. ZeroDivisonErrorを処理する最良の方法は?
- 3. リアルタイムクロックを処理する最良の方法は?
- 4. Emberjs:ArrayProxyコンテンツを反復処理する最良の方法は?
- 5. SQLパラメータを処理する最良の方法は?
- 6. ReactJSでnull値を処理する最も良い方法は?
- 7. Magento - フォームをブロックで処理する最も良い方法は?
- 8. Scalaのループスタイルのプログラムを処理する最良の方法
- 9. エンティティフレームワークとの並行性を処理する最良の方法
- 10. Symfony2の大きなフォームコレクションを処理する最良の方法
- 11. PDOクエリの例外を処理する最良の方法
- 12. 'this'の変更を処理する最良の方法
- 13. 多くの受信パケットを処理する最良の方法
- 14. フラスコのPOSTユニットテストを処理する最良の方法
- 15. Braintreeのタイムアウトを処理する最良の方法
- 16. テーブルの更新を処理する最良の方法
- 17. テキストボックスの時間検証を処理する最良の方法
- 18. .Netの電子メールリストを処理する最良の方法
- 19. Djangoの要求変数を処理する最良の方法
- 20. JavaのSetを反復処理する最良の方法
- 21. Zend Frameworkでレコードフォームを処理する最良の方法
- 22. 同期呼び出しを処理する最良の方法
- 23. Cでバルクメールを処理する最良の方法
- 24. 条件文を処理する最良の方法
- 25. レールアプリでダイナミックCSSを処理する最良の方法
- 26. twitterをソートして処理する最良の方法 - Twitter API
- 27. アンドロイドでランタイムアクセス許可を処理する最良の方法
- 28. AsyncControllerでタイムアウトを処理する最良の方法
- 29. ドキュメントアプリケーションで多言語を処理する最良の方法
- 30. WCFで巨大なリクエストを処理する最良の方法