質問

セクションからセクションへの遷移ビデオとして巨大なFLVを使用する大きなフラッシュサイト(AS3)を構築しています。 FLVは1280x800で、1680x1050にスケーリングされています(その多くは、画面が小さいユーザーには表示されません)、それぞれ約5〜8秒です。 On2のHI-DEFコーデック、VP6-S、および再生を使用してビデオをエンコードしています。ネイティブFLVプレーヤー、PERIANが搭載したクイックタイム、AS3に組み込まれたシンプルな概念FLV再生アプリではかなり良いです。

私が抱えている問題は、実際のサイトのコンテキストでは、再生がスムーズではないということです。フレームレートは本来あるべきほど良いものではなく、より問題のあるほど、時折のゆっくりとドロップされたフレームがあります(時には1秒ほどの間ビデオを一時停止します)。私の推測では、これはフラッシュプレーヤーのゴミコレクションによって引き起こされていると思います。これは、無決定論的に発生し、したがってテストと制御が困難です。

私はビデオを再生するためにflvplaybackの単一のインスタンスを使用しています。私はもともとNetStreamオブジェクトなどを直接使用していましたが、FlvPlaybackに切り替えました この理由. 。誰もがflvplayback(またはより一般的には、hi-def flashビデオで)でこの種のぎくしさを経験しましたか? GCがここで犯人であることについて私は正しいですか、もしそうなら、これらのシステム集約的な移行の再生中にそれを防ぐ方法はありますか?

役に立ちましたか?

解決

FLV/F4Vの再生のぎくしさはごみ収集の結果ではありません - ビデオは完全にアンロードされるまでメモリに保持されているため、ガベージコレクションはまったく行われません(何かをしていない限り 非正統派 CACHEASBITMAPがtrueに設定されたコンテナにビデオを配置するように)。

特定のFLV機能が必要ない場合はF4Vに切り替える( Daidaiが投稿したリンクは示唆しています - 免責事項、それは私のブログです)が役立ちますが、全体として、画面上のビデオの合成に影響を与えるものは何でも注意する必要があります。大きなサイズのビデオは、それを重複させているすべてのものを再レンダリングするように強制するため、小さなオブジェクトはパフォーマンスに大きな影響を与える可能性があります。

ビデオの上に何かがありますか?可能であれば、それらを取り除くか、cacheasbitmapをtrueに設定してみてください(アニメーション化されていない場合)。これは、複雑なベクトル図面またはテキストに特に適しています(ビットマップ/画像は、描画するのがはるかに高速です)。それらが異なるブレンドモードを持っている場合、あなたは一種のねじ込みです - 代わりに通常のブレンドモードを使用できますか?

ビデオの下に何かありますか?もしそうなら、ビデオが再生されている間にそれらを取り除きます(虚偽に可視性を設定します)。

不必要なレンダリングを確認するには、何らかの形でビデオを一時停止し、右クリックして、「再描画領域を表示する」(デバッグプレーヤー)をオンにします。レッドスクエアが継続的に描かれているのを見ますか?それから、バックグラウンドで何かが起こっているので、それを取り除く方が良いでしょう。

enenterframeまたはタイマー/間隔でバックグラウンドで何かが起こっていますか?一時停止してみてください。

あなたのビデオは30fpsですか、CGレンダリング(たとえば、モーションブラーを使用できます)?はいの場合は、代わりに24fpsでレンダリングを試してみてください - またはその間に - まだ良質ですが、デコードして描画するデータははるかに少なくなります。

小さなビデオを使用できますか?同じ大きさのサイズでそれらをレンダリングしている場合でも、デコードとレンダリングのピクセルデータが少なくなります。

それはほとんどすべてをまとめています。ただし、画面上の他のすべてを取り除くことは、通常、最優先事項です。

他のヒント

代わりにH.264でビデオをエンコードしてみましたか?フラッシュプレーヤーはしばらくの間それらをサポートしていますが、最終的にはうまく機能する可能性があります。これが、ほとんどの人がフラッシュでHDビデオを使用していることです(YouTube、Vimeoなど)。

テストとして、YouTubeで1080p HDビデオをプレーして、それが一時停止しているかどうかを確認してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top