0

私は(やっとのことで)VOD プロジェクトの最終段階にいます。Androidを除いて、それは完全に機能します。基本的に、Android ではビデオ全体がダウンロードされるまでビデオは再生されません。メディア サーバーは範囲外だったので、AWS S3 からビデオを提供しているだけです。iOS で素晴らしく動作します。ビデオのストリーミングとダウンロードの両方が、期待どおりに機能します。Android では、ダウンロードが完了する前に再生したくないようです。ローカルネットワークでサーバーを使用している場合はうまく機能しますが(時々バッファが表示されるので、ダウンロードが速いだけではないことがわかります)、リモートでは何もありません.

私の唯一の推測は、iOS と Android のビデオ ストリーミング方法の違いに関係しているということです。iOS では、動画はバイト範囲リクエストを介してストリーミングされます。数秒ごとにタイムアウトになり、ファイルの別の範囲のバイトが要求されます。Android では、ファイル全体に対して単一のリクエストのみを送信します。ただし、それをどのように修正できるかはわかりません。

ここにヒントや指針がある人はいますか? ここで何か助けていただければ幸いです。

  • Android 4.4 および 4.3 で発生します。
  • 私たちが所有するリモート prod サーバーと AWS S3 の両方を使用します。
  • AIR 3.9 と Flex 4.11
  • 活用しStageVideoNetStream
  • テスト端末は Nexus 5 と Nexus 4 です
4

1 に答える 1

3

問題はビデオ自体にありました。AIR for Android は、ファイル全体が要求され、ビットごとに読み取られるストリーミングに標準的なアプローチを使用します (特定のバイト範囲を繰り返し要求する iOS とは対照的です)。

ここでの問題は、ビデオのメタデータが読み取られるまでプレーヤーが再生を開始できないことです。標準の h.264 エンコードでは、ファイルの最後にあるメタデータ (moov アトム) が認識されるため、ビデオ全体がダウンロードされるまでビデオは開始されません。

これを修正する最も簡単な方法は、「Web 最適化」オプションを選択して Handbrake を介してビデオを再エンコードすることです。これにより、メタデータが最初 (バイト 24 だと思います) に配置されるため、ビデオの再生がすぐに開始されます。

アドビからの説明

「Web最適化」オプションを使用するアイデアを与えてくれたスレッド

于 2013-11-13T16:23:03.310 に答える