ネットワーク通信の強化機能

Flash Player 10.1 および AIR 2.5 には、すべてのプラットフォームを対象に、ネットワークを最適化する一連の新機能(循環バッファー、スマートシークなど)が導入されています。

循環バッファー

モバイルデバイスにメディアコンテンツをロードする際、デスクトップコンピューターではほとんど発生しない問題に遭遇する可能性があります。例えば、ディスク容量不足やメモリ不足が発生しやすくなります。デスクトップ用の Flash Player 10.1 および AIR 2.5 では、ビデオのロード時に FLV ファイル(または MP4 ファイル)全体をハードドライブにダウンロードしてキャッシュします。その後、ランタイムはこのキャッシュファイルからビデオを再生します。ディスク容量が不足することは滅多にありません。容量不足が発生すると、デスクトップランタイムはビデオの再生を停止します。

モバイルデバイスでは、ディスク容量が容易に不足する可能性があります。モバイルデバイスのディスク容量が不足しても、デスクトップランタイムとは異なり、モバイルランタイムが再生を停止することはありません。その代わり、モバイルランタイムはキャッシュファイルの再利用を開始して、ファイルの先頭から再書き込みを行います。これにより、ユーザーはビデオを視聴し続けることができます。再書き込みが行われたビデオの領域はシークできません。ただし、ファイルの先頭へのシークは可能です。循環バッファーはデフォルトでは開始されません。再生中、または、ムービーがディスク容量または RAM のサイズを超える場合は再生の最初から開始することができます。ランタイムで循環バッファーを使用するには、4 MB 以上の RAM または 20 MB 以上のディスク容量が必要です。

注意: デバイスに十分なディスク容量がある場合、モバイル用のランタイムはデスクトップと同じように動作します。デバイスにディスクが実装されていないかディスクが一杯になっている場合は、RAM のバッファーが代替利用されることに注意してください。キャッシュファイルと RAM バッファーのサイズ制限は、コンパイル時に設定できます。一部の MP4 ファイルは、構造上、再生を開始する前にファイル全体がダウンロードされている必要があります。ランタイムはこのようなファイルを検出し、十分なディスク容量がない場合はダウンロードを行いません。したがって、MP4 ファイルは再生できません。最善策は、このようなファイルのダウンロードを要求しないことだと言えます。

開発者は、キャッシュされたストリームの境界内でのみシークが機能することに注意する必要があります。オフセットが範囲外の場合、 NetStream.seek() は失敗することがあります。このとき、 NetStream.Seek.InvalidTime イベントが送出されます。

スマートシーク

注意: スマートシーク機能には、Adobe® Flash® Media Server 3.5.3 が必要です。

Flash Player 10.1 および AIR 2.5 には、スマートシークと呼ばれる新機能が導入されています。この機能により、ストリーミング配信のビデオを再生する際のユーザーエクスペリエンスが向上します。ユーザーがバッファー境界内をシークする場合、ランタイムはバッファーを再利用して高速なシーク機能を提供します。以前のバージョンのランタイムでは、バッファーは再利用されませんでした。例えば、バッファー時間( NetStream.bufferTime )が 20 秒に設定されている状態でストリーミングサーバーからビデオを再生中に、ユーザーが 10 秒先をシークすると、ランタイムはロード済みの 10 秒間を再利用せずに、すべてのバッファーデータを破棄していました。この動作では、ランタイムがサーバーに新しいデータを要求する頻度が増加し、低速接続環境では再生パフォーマンスが低下します。

次の図は、前のリリースのランタイムでのバッファーの動作を示しています。 bufferTime プロパティでは、バッファーにプリロードする秒数を指定します。接続が切断された場合、この期間はビデオを停止せずにバッファーを使用できます。

スマートシーク機能導入前のバッファーの動作

スマートシーク機能の導入により、ユーザーがビデオをスクラブしたときに、バッファーを使った瞬時の後方シークまたは前方シークが可能になりました。次の図は、この新しい動作を示しています。

スマートシーク機能を使用した前方シーク

スマートシーク機能を使用した後方シーク

スマートシーク機能では、ユーザーが前方または後方シークを実行したときにバッファーを再利用するので、より高速でスムーズな再生エクスペリエンスを実現できます。この新機能のメリットは、ビデオ配信者側の帯域幅を節約できることです。ただし、バッファー境界外でシークを実行すると、通常の動作が行われ、ランタイムはサーバーに新しいデータを要求します。

注意: この動作は、プログレッシブビデオのダウンロードには適用されません。

スマートシークを使用するには、 NetStream.inBufferSeek true に設定します。