問題タブ [frame-rate]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - HTML5 Canvas のパフォーマンス - 1 秒あたりのループ/フレームの計算
以前にもこのような質問がいくつかあったことは知っています。たとえば、JS で FPS を確認しますか? -これはある程度機能しましたが、各ループが完了するまでにかかる時間を知ることができました。
私が探しているのは、より読みやすく、制御可能なものです。FPS カウンターのリフレッシュ レートを設定して遅くし、人間が読めるようにしたり、アプリケーションが実行できる速度にしたりして、ある種の速度計で使用できるようにしたいと考えています。
とにかく、ここに私が今持っているコードがあります:
setTimeout 関数を 1 ミリ秒の速度に設定するのは正しいですか? これにより、可能な限り高速にループできるようになると考えていました。
100 フレームごとに数える必要がありますか? この計算はどうなりますか?
結果をより正確にするために、1 つのフレームが大幅に異なる可能性があるため、平均を表示する必要があると推測しています。これを行うにはどうすればよいですか?
どんなヒントでも大歓迎です。
ありがとう。
iphone - UIImageView のパフォーマンス
Wi-Fi 経由で jpeg 画像を制御できるレートで取得し、uiimageview を使用して表示する iPhone アプリがあります。私が得ることができる最高のパフォーマンスは約2fpsのようです。uiimageview は [uiimageview setimage:image] をすばやく処理できないようです。
より良いフレームレートを可能にする uiimageview を使用する以外のより良い解決策はありますか?
android - lockCanvas() は本当に遅い
低速のデバイス (Orange San Francisco 別名 ZTE Blade) でゲームをテストすると、フレーム レートが非常に高くなりました。
描画ループにデバッグ コードを挿入したところ、次の行が 100 ミリ秒以上かかっていることがわかりました。
他の誰かがこの動作を見ましたか? View を拡張して onDraw() を実装することで SurfaceView を一時的に置き換えたところ、はるかに優れたフレームレートが得られました。
一般的には、私の HTC Desire では surfaceView の方がはるかに高速です。これは Android 2.1 の問題であると思われます。電話をルート化して、可能であれば 2.2 にアップグレードすることを考えていますが、2.1 で動作するデバイスが欲しかったので、長期的には逆効果になる可能性があります。
** アップデート **
私はこれにもう少し取り組んでおり、さらに不可解な側面を発見しました。
電話をルート化して 2.2 をインストールしましたが、まだ問題が発生します。アプリが最初に起動されたとき、lockCanvas は期待どおりに動作しています (0 ~ 1 ミリ秒)。その後、初期化中のある時点で、lockCanvas が突然約 100 ミリ秒かかり始めます。
ロード画面を表示できるように、アセットを Async タスクでロードしていることを指摘しておく価値があるかもしれません。
速度低下が発生したときにプログラムが実際に何をしているのかを突き止めようと最善を尽くしたにもかかわらず、そうすることができませんでした。実際、デバッグ モードでシングル ステップで実行すると、高速に動作します。
ここで、SurfaceView のコンストラクターに遅延 (約 10 秒) を追加すると、速度低下が発生せず、すべて正常に動作することがわかりました。
ただし、ホームを押してから元に戻すと、速度が低下します。
私は、このばかげた非論理的な問題について、ほぼ限界に達しています。私はそれをデバイス固有の問題に置くことを心に留めています。
メモリ使用量と関係があると思います。何かがスワップアウトされており、ビデオ RAM に影響している可能性がありますか?
少なくとも理論には興味があります。
android - Android:ビデオエンコーディングH.264とフレームレートの設定が機能しない
HTC MyTouch 3G Slide(Android 2.1、APIレベル7)を持っています。15fpsで320x240h.264ビデオを録画するプログラムを作成しようとしていますが、2つの大きな問題があります。どちらの問題も解決していただければ幸いです。これが私がしていることです:
問題1) H263とMPEG_4_SPは正常に機能しますが、H264は機能しません。prepare()を呼び出すと、logcatは以下のエラーで埋められます。
H.263(動作します)を使用する場合、エラーログには次のもののみが含まれます。
問題2)フレームレートを明示的に15 fpsに設定していますが、クリップの事後分析では、21.xxや25.xxfpsなどの奇妙なフレームレートが示されています。
H264が機能しないのはなぜですか?また、MediaRecorderが要求されたフレームレートに従わないのはなぜですか?前もって感謝します。
flash - swf flash ファイルに fps を表示する
フラッシュ ゲームを含むゲーム サイトを開発しています。これらのゲームの fps レートを表示する方法はありますか? 元の fla ファイルがありません。どうも。
flash - 単純な Flash テスト アプリケーションは、まったく同じ処理アプレットと比較して非常に遅く実行されます
そのため、より多くの視聴者に向けてゲームを開発することを願って、Processing から Flash に徐々に移行しています。ついに、ユーザーがクリックしてブロックを作成し、その後マウスに引き寄せられるようにする、Flash で動作するアプリケーションを作成しました。速度を比較するためだけに、Processing でもまったく同じものを作成しました。ただし、Flash バージョンを実行して約 15 ~ 20 個のブロックを追加すると、フレームレートが 5 ~ 10 FPS に低下します。処理バージョンでは、目立った速度低下なしで最大 60 を追加できます。どうしたの、フラッシュ?
各バージョンのソースへのリンク:
以下は、あなたが魔法使いであり、コードを厳しく批判して動作するように指示するだけで役立つ場合に備えて、それぞれのソースです。
フラッシュ版:
ブロック.fla
Block.as
処理バージョン:
sketch_mar02b.pde
Block.pde
助けてくれてありがとう!
javascript - JavaScriptからフラッシュ(.FLV)ビデオのフレームレートを確認するにはどうすればよいですか?
FlashJavaScriptAPIを使用してSWFファイルを監視および操作した経験は限られています。JavaScriptからFLVビデオを観察して操作したいと思います。私がよく知っているAPI(、、、、Play()
などTotalFrames()
)はフレームTCurrentFrame()
でGotoFrame()
動作しますが、数秒で動作したいと思います。
したがって、時間に基づくFlash JavaScript APIが必要であるか、JavaScriptからFLVのフレームレートを検出する方法が必要です。これにより、フレームを秒に、またはその逆に変換できます。
FLVファイルの生成を制御できないことに注意してください。
android - ネオンをサポートしないアンドロイドでの ffmpeg デコードのパフォーマンス
Androidでffmpegコードをコンパイルし、ネオンサポートなしでarmv5te用にビデオを再生できました。デコードは良好で、ビデオは再生されますが、問題はフレーム レートが非常に悪いことです。最大で 5 fps が得られますが、これは恐ろしいことです。
Androidでffmpegをサポートせずにビデオを再生することに成功した人はいますか? それとも、私が本当に欠けているものはありますか?
編集:構成実行して取得しました
flash - ユーザーが2つの連続する画像の間に表示する実際の時間間隔を決定する方法
Actionscriptを使用して検査時間タスクを実装したいと思います。アイデアは、ユーザーの応答に基づいて、マスクされた画像とマスクされていない画像の間の時間間隔を動的に変更することです。「検査時間」は、ユーザーが一定の精度を達成する間隔として定義されます。その間隔の精度に影響を与えるさまざまな要因があります:モニターのリフレッシュレート、フラッシュvmフレームレート、タイマーイベントの精度、レンダリング時間。他に何か?ユーザーに表示される実際のインバーバルを確認するにはどうすればよいですか?通常のパフォーマンスはそのタスクで20〜80ミリ秒であるため、高精度が必要です。制限要因はモニターのリフレッシュレートだと思います。60Hzの場合、16.7ミリ秒しかインクリメントできません。この制限を回避する方法はありますか?より高いフレームレートを使用した場合でも、プレーヤーはそれを60Hzに同期しますか?
android - Android GLES20 大きなテクスチャ クワッドが非常に遅い (Nexus One 上)
GLES20 コンテキストのみを使用して、サーフェス全体をカバーする 2 つの三角形をレンダリングします。問題は、この方法でテクスチャを 1 つだけ描画すると、不当に遅くなるように見えることです。フレームレートは 58fps から 21fps に低下します。
- 問題は、すべてのクワッドを一緒に描画した全体的なピクセル領域にあるようです
- ビットマップは読み込み時に pow2 にサイズ変更されます
- ビットマップは正しい内部 GL 形式で読み込まれます
- 8888 または 565 ビットマップを使用しても何も変わりません
- 頂点シェーダーとフラグメント シェーダー コードの両方が完全に最小限
- ブレンディングを有効/無効にしても何も変わらない
- 1 つのタイルまたは複数のタイルにビットマップ全体を描画しても役に立たない
- glDrawTexiOES が GLES20 で動作しないようです (GL 列挙エラー)
私はここで途方に暮れています。GL で 1 つの画像をブリッティングするのは、少なくとも Canvas で同じことを行うのと同じくらい速いはずだと思いましたが、そうではないようです。
誰かがこのパフォーマンス ヒットのヒントや説明を提供できますか?
アップデート:
EGL コンテキストの代わりにキャンバスをサポートするようにレンダリング スレッドを調整しただけで、まったく同じことを行います。fps テキストを表示し、背景テクスチャをブリットします。何を推測しますか: テキストのみを表示すると 58 fps になり、背景画像を追加すると... 57 fps になります!
今、私は公式に、そして非常に真剣に腹を立てています。私が GLES20 をうまく使うほど頭が良くないことを願っています。3Dで多くの三角形が必要な場合にのみ、OpenGLを使用します。
OpenGL は、少なくとも Canvas が提供する 2D API と同じくらい高速であるべきではありませんか?