問題タブ [textureview]
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.
android - TextureView で再生するとビデオの fps が低くなる
Androidアプリ用のビデオフィルターを作成しているので、TextureView
ビデオを再生してその上でフィルター処理するために使用していSurfaceTexture
ます。しかし、ビデオの FPS は常にオリジナル (30fps) よりも低くなります。
Galaxy S3で確認したところ、onSurfaceTextureUpdated()
フィルターの有無にかかわらず、1秒間に5~8回しか入力できませんでした。しかし、Samsung Galaxy J などのより強力なデバイスでは、1 秒あたり 10 ~ 13 回に増加する可能性があります。
このビデオは SD カードから読み込まれることに注意してください。
誰かが理由を知っていますか?
android - Android GLSurfaceView にテクスチャをレンダリングする方法
標準の GLSurfaceView クラスがあります。
GLSurfaceView.Renderer を実装する Renderer クラスがあります。
別の JNI スレッドで、いくつかのビデオ データ (YUV 形式) を OpenGLES テクスチャにアップロードしました。新しいテクスチャが利用可能であり、対応するテクスチャ ID があるという通知を Java で受け取ります。
パフォーマンスへの影響を最小限に抑えて、Renderer クラスでこのテクスチャのコンテンツを表示するにはどうすればよいですか?
android - Android - 複数のビューで同じビデオをレンダリングする
メディア データソースがあり、 android を使用してメディアを再生していますMediaPlayer
。
MediaPlayer
からのビデオ出力を同じ の複数のビューに表示するにはどうすればよいActivity
ですか? これを行う別の方法はありますか?
データ ソースから何度も読み取ることなく、メディアのビデオ部分を2 つの異なるビューでレンダリングしたいと考えています。
現在のコード:
android - TextureView でビットマップを描画するにはどうすればよいですか
Androidでビデオを再生しようとしていTextureView
ます。ビデオに関しては、すべてがうまく機能します。しかしMediaPlayer.prepare();
、少し時間がかかります。そのため、その時のプレースホルダーをいくつか示したいと思います。私はこのようにグライドでそれをやろうとしています:
しかし、それは画像を表示しません。私は手動SurfaceView
で呼び出す必要がありますonDraw
。そして、これにはSurfaceHolderが使用されています。しかし、方法TextureView
がありませんgetSurfaceHolder()
。
これを行う正しい方法は何ですか?
UPD:私が理解したのは、設定しないと画像が表示されるということです。これは、ビデオをバッファリングしている間、表面を黒く保つMediaPlayer
ことを意味します。MediaPlayer
どうにかしてこの動作をオーバーライドすることは可能ですか?
java - TextureView keeps getting SIGSEGV 11
I have found this Solution, but unfortunately, it didn't work for me. When I'm only displaying a small moving rectangle, so no taxing animations, it works fine, but I want to display some animation frames that I load in with a .png, and whenever I minimize my app or press the back button, I immediately get a SIGSEV error.
For one screen where I draw a graph with a lot of points I found a solution in which I just stop the thread after I'm done drawing the lines, but since I need to display a moving animation I can't do it in this particular fragment.
My code for for the render thread looks like this:
This is obviously based on Romain Guy's example which can be found here
Help is very much appreciated!
Edit: the crash dump is this one:
android - Android TextureView / 描画 / 描画のパフォーマンス
TextureView
Androidでお絵かきアプリを作ろうとしています。最大 4096x4096 ピクセルの描画面をサポートしたいと考えています。これは、適切なクアッド コア CPU と 2GB メモリを搭載した Google Nexus 7 2013 である最小ターゲット デバイス (テストに使用) には妥当と思われます。
私の要件の 1 つは、ビューをズームイン、ズームアウト、およびパンできるビュー内に配置する必要があることです。これはすべて、私が作成したカスタム コードです (iOS の UIScrollView を考えてください)。
私はTextureView
OnDraw で通常のビュー (ではない) を使用しようとしましたが、パフォーマンスはまったくひどいものでした - 1 秒あたり 1 フレーム未満でした。これはInvalidate(rect)
、変更された rect だけで呼び出しても発生しました。ビューのハードウェア アクセラレーションをオフにしようとしましたが、4096x4096 はソフトウェアには大きすぎるため、何もレンダリングされませんでした。
その後、使用してみTextureView
ましたが、パフォーマンスは少し良くなりました.毎秒約5〜10フレームです(それでもひどいですが、より良いです). ユーザーはビットマップに描画し、後でバックグラウンド スレッドを使用してテクスチャに描画します。私は Xamarin を使用していますが、コードが Java の人々にとって意味のあるものであることを願っています。
rect の代わりに null を渡すように lockCanvas を変更すると、パフォーマンスは 60 fps で優れていますが、コンテンツがちらついてTextureView
破損し、残念です。単純に OpenGL フレーム バッファを使用するか、その下にテクスチャをレンダリングするか、少なくともコンテンツを保持するオプションがあると考えていました。
Android の生の OpenGL ですべてを実行する以外に、ドローコール間で保持されるサーフェス上で高性能の描画とペイントを行うオプションはありますか?
android - 複数のテクスチャ ビューを制御する Android スレッドで奇妙なちらつきが発生する
単一のスレッドを使用して、キャンバスのロック/ロック解除を使用して UI スレッドから 3 つの個別の TextureView をレンダリングしようとしています。観測された問題は、描画されている各テクスチャ ビューの一貫したちらつきであり、ちらつきは異なる TextureView のフレームで構成されています。たとえば、フレーム A、B、C の順に描画します。フレーム C は問題なく表示されますが、フレーム A と B はフレーム C のインスタンスでときどきちらつき、フレーム A はフレーム B のインスタンスでときどきちらつきます。
Android Core Graphics について説明したドキュメントを読み、Android のフレーム バッファリング システムがどのように機能するかをかなりよく理解しています。一言で言えば、私の疑いは、lockCanvas/unlockCanvasAndPost 呼び出しを連続して実行するのが速すぎて、フレームバッファが要求を完了できず、代わりに前の (間違った) フレームを単に描画することです。
この問題を解決するために、いくつかのことを試しました。キャンバスの呼び出しを続行する前に Choreographer を使用して VSYNC を待機しようとすると、問題は解決しませんでしたが、予想どおりフレーム レートが低下しました。また、別の render loop sans sleep コマンドも試しましたが、観測された現象に違いはありませんでした。
本質的に、私はこの問題に取り組む方法についてのアイデアが不足しており、外部からの意見を得ることを望んでいました. 事前に感謝します。コード スニペットは以下のとおりです。
メイン レンダリング ループ:
MyTextureView doRender() メソッド:
android - Android SDK - camera2 - TextureView に四角形を描画します
Android 開発は初めてで、camera2 API で良い例を見つけるのが難しいと感じています。
私はほとんどの問題をゆっくりと進めていますが、これについては行き詰まっています。デフォルトのカメラでは、画面をタッチしてフォーカスを合わせると、フォーカス エリアの長方形が一瞬表示されます。私は似たようなことをしたいです(または、この場合、まったく同じことから始めて、それを理解できるようにします)。
カメラのプレビューとして使用されているときにテクスチャビューに描画できない場所(SDKドキュメントのTextureViewページだと思います)を読みました.lockメソッドを呼び出すと、キャンバスではなくnullが返されます。
私はこれをオンラインで見つけました: https ://github.com/commonsguy/vidtry/ しかし、私はそれを動作させることができません。メインビューをドローアブルビューにキャストできない、またはその逆というエラーが発生します-または、ドローアブルビューが上にあり、画面が黒くなります-または、下にあり、タッチイベントに応答しません(強制しようとしています)上記のビューからの performClick は、クラッシュを引き起こします。)
立ち往生!イベント位置に長方形を数秒間描画する方法の説明や例を誰か教えてもらえますか?
ありがとう!
android - クラスTextureViewをAndroid Honeycombに移植することは可能ですか
1 つの画面で複数のビデオを同時に再生する機能を実装する予定であり、ビデオの再生中にビデオ ビューをスクロールできます。
親ビューとして機能する ListView にビデオ ビューを追加します。SurfaceView は Android ビュー階層によって再描画できないため、SurfaceView を使用してビデオ ストリームをレンダリングしないでください。SurfaceView をスクロールするのは悪い考えです。
幸いなことに、API レベル 14 から TextureView が追加されました。これは SurfaceView の置き換えでした。だから私は自分の計画を達成するためにそれを使うことができます。
しかし、TextureView は API レベル 14 以上でしか利用できません。実際、API レベル 11 以上のプラットフォームでこの機能を実装するよう求められました。
私は、API レベル 11 以降に Android に追加された SurfaceTexture に注意を払い始めました。SurfaceTexture を使用して、カメラ画像ストリームまたはビデオ デコード ストリームを OpenGL テクスチャに配置できます。また、Android ビュー階層は、代わりに opengl によって描画されることも知っています。 API レベル 11 以降の skia。
したがって、SurfaceTexture を使用して、ビデオ ストリームを通常の Android ビューにレンダリングできるかどうか疑問に思っています。
つまり、API レベル 14 以降に追加された TextureView の位置を置き換えるために、API レベル 11-13 用にカスタマイズされたウィジェットを実装できますか?
私は android.view.TextureView のソース コードを調べましたが、それほど複雑ではありません。依存クラスは次のとおりです。
また、4 つのネイティブ API があります。
クラス TextureView を Android api レベル 11-13 に移植することは可能ですか?
誰が私にアドバイスをくれますか?