時間を費やしてから、質問する方が良いかもしれません。助けてくれてありがとう、みんな! GLSL経由テクスチャ/フラグメントの色を変更するために、SurfaceTextureへのMediaPlayerやVideoViewからのビデオフレームまたはOpenGLテクスチャをレンダリングする方法Android 3.x/Google TV/SDKでのビデオ処理:SurfaceTexture/OpenGL/GLSLへのビデオフレーム
質問
- ? (私たちは空想GLES/GLSL映像処理ルーチンのためにそれを必要とする。)
コンテキスト
a)のグーグルTV(LG G2 2012デバイス)をSDKのみのサポート(なしNDK)
とのAndroid 3.2デバイスでありますb)カメラからSurfaceTextureにレンダリングするのは簡単ですが、Android 3.xではSurfaceTextureにビデオをレンダリングする方法はありますか?カメラソリューションについては、以下を参照してください。
c)既にビデオフレームをGLView/GLRendererにレンダリングしていますが、GLSLを使用してフレームを変更するためにフレームを取得していません。それは動作していないようです。しかし、私はビデオ処理のためのビデオデータにアクセス可能GLES/GLSLテクスチャを必要とする:
MainActivityクラス:
public void onCreate(Bundle state) {
super.onCreate(state);
m_View = new GLSimpleView(this);
setContentView(m_View);
m_Holder = m_View.getHolder();
m_Holder.addCallback(this);
m_Holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
GLSimpleViewクラス:
public GLSimpleView(Context context) {
super(context);
m_Renderer = new GLTextureRenderer(context);
this.setRenderer(m_Renderer);
}
GLTextureRenderクラス:
またint[] textures = new int[1];
GLES20.glGenTextures(1, textures, 0);
m_SurfaceTexture = textures[0];
GLES20.glBindTexture(GL_TEXTURE_EXTERNAL_OES, mTextureID);
GLES20.glTexParameterf(GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_NEAREST);
GLES20.glTexParameterf(GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR);
GLES20.glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_WRAP_S, GLES20.GL_CLAMP_TO_EDGE);
GLES20.glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_WRAP_T, GLES20.GL_CLAMP_TO_EDGE);
m_Surface = new SurfaceTexture(m_SurfaceTexture);
m_Surface.setOnFrameAvailableListener(this);
// THIS ONE DOESN'T WORK WITH ANDROID 3.x!
// HOW TO BIND m_Surface TO m_MediaPlayer?
//Surface surface = new Surface(m_Surface);
//m_MediaPlayer.setSurface(surface);
//surface.release();
これを比較してください:
カメラ用SurfaceTexture(私はMediaPlayerのかVideoViewのためにこれを必要とするが!):GLViewへUsing SurfaceTexture in Android
ビデオ(GLSLを経由していないテクスチャアクセス!):Playing video in a GLSurfaceView instead of SurfaceView
のAndroid 4.xのSDK VideoSurfaceTextureサンプル(3.2互換性がありません!):http://source-android.frandroid.com/cts/tests/src/android/media/cts/VideoSurfaceView.java
AndroidのMediaPlayerの(アンドロイドでsetSurface(のないサポートを3.xのない)!):http://developer.android.com/reference/android/media/MediaPlayer.html
したがって、主な質問はまだあります:Android 3.xでビデオフレームにアクセスして操作する方法は?おそらく別の解決策ですか?あまりにも多くの時間を過ごした後、私は何かを逃していますかビデオデータを操作しようとすると、Google TVにはNDKのサポートが全くないことが非常に限られていると考えてください。
あなたが見たことがありますか:http://stackoverflow.com/questions/8620560/video-processing-in-android?あなたのプロジェクトで廃止されたRenderscript Graphics APIを見ても興味があります。 –