草庐IT

SurfaceTexture

全部标签

android - Android 3.x/Google TV/SDK 上的视频处理 : Video frame to SurfaceTexture/OpenGL/GLSL

在花了一些时间之后,问问可能会更好。感谢您的帮助,伙计们!问题如何将视频帧从MediaPlayer或VideoView渲染到SurfaceTexture或OpenGL纹理,以便通过GLSL更改纹理/fragment颜色?(我们需要它来执行精美的GLES/GLSL视频处理例程。)上下文a)GoogleTV(LGG22012设备)是一款仅支持SDK(无NDK)的Android3.2设备b)从相机渲染到SurfaceTexture很容易,但是在Android3.x中如何将视频渲染到SurfaceTexture?相机解决方案见下文。c)我已经将视频帧渲染到GLView/GLRenderer,但

android - Android 插件中的 SurfaceTexture 在 Unity 中不起作用

我无法将绑定(bind)到SurfaceTexture的纹理显示在Unity中。更新4:基于更新1中的管道(表面->通过表面纹理的外部纹理->fbo->纹理2d)我知道SurfaceTexture不是't正确地将其表面转换为纹理。我可以通过pixelcopy从它的表面获得正确绘制的图片,并且我可以确认我的FBO绘图到texture2d管道可以使用一些测试颜色。那么问题来了,为什么SurfaceTexture不能将它的表面转换为纹理呢?我在Java中生成一个Texture并将其指针传回Unity:publicvoidinitGLTexture(){Log.d("Unity","initG

android - SurfaceTexture 大小,如何定义?

我正在使用SurfaceTexture绘制相机预览,需要知道纹理的大小+过程中发生的情况。假设设备支持的相机预览尺寸为:1280720、1024576、960720、800600、800480、768576、736552等。很明显,这些尺寸与标准纹理尺寸2048x2048、2048x1024、1024x1024不匹配......我可以想到以下情况,但我不确定:1,表面纹理尺寸为所选预览尺寸,例如1280x720,但这不是pow2格式,可能意味着兼容性问题2,表面纹理包含在pow2格式的下一个尺寸中,未转换,例如1280x720将包含在2048x1024纹理中,没有拉伸(stretch)

Android 在两个进程之间共享 SurfaceTexture

是否可以在两个进程之间共享SurfaceTexture,例如Activity和Service?我想创建一个带有TextureView的Activity,并从一个单独的服务更新它的SurfaceTexture。到目前为止,我正在创建一个带有生成的OpenGL纹理的SurfaceTexture(通过glGenTextures),然后我将这个表面纹理设置到我的TextureView:mSurfaceTexture=newSurfaceTexture(texture_id);mTextureView.setSurfaceTexture(mSurfaceTexture);在Activity上显示

android - 使用 Matrix 的 rotateM() 从 SurfaceTexture 旋转矩阵但损坏视频输出

我用opengles播放视频,我用的是grafika的ContinuousCaptureActivity的方式,我的数据源是MediaPlayer而不是Camera,这没什么区别。MediaPlayer连续生成视频帧,我在onFrameAvailable回调中将每个帧绘制到屏幕上。代码如下,运行良好:mVideoTexture.updateTexImage();mVideoTexture.getTransformMatrix(mTmpMatrix);mDisplaySurface.makeCurrent();intviewWidth=getWidth();intviewHeight=g

android - 在 Android 上提取/修改视频帧

我有一个视频文件。我想获取视频的每一帧并对帧进行一些修改,例如在其中绘制另一个位图,放置一些文本等。是否有任何API/框架可用于从Android中的视频中获取帧?我在iOS中使用他们的AVFramework做了类似的事情。如果可以使用ffmpeg,我将使用一些可用的开源NDK。 最佳答案 选项A:您可以创建一个SurfaceTexture对象并将其附加到MediaPlayer,如下所示myPlayer=newMediaPlayer...myRedirectionSurface=newSurface(mySurfaceTexture)

android - 了解Android相机SurfaceTexture和MediaCodec Surface的使用

我正在尝试了解Android中的图形内存使用/流量,特别是关于使用MediaCodec对来自相机的帧进行编码的情况。.为了做到这一点,我必须了解一堆我不清楚的图形、OpenGL和Android术语/概念。我已经阅读了Android图形架构Material、一堆SO问题和一堆来源,但我仍然感到困惑,主要是因为这些术语似乎在不同的上下文中具有不同的含义。我从fadden的网站查看了CameraToMpegTesthere.我的具体问题是如何MediaCodec::createInputSurface()与Camera::setPreviewTexture()一起使用.似乎创建了一个Open

android - 你如何从 NDK 中的 SurfaceTexture 获取 ANativeWindow

我有一些已渲染到GLSurfaceView的OpenGLES代码,我目前正在修改它以使用SurfaceView和TextureView。在我的native代码中我需要的共同元素是:ANativeWindow。对于SurfaceView我通过将Surface传递给:m_jwindow=ANativeWindow_fromSurface(env,surface);对于TextureView,我使用SurfaceTexture,在API14中我可以使用它:m_jwindow=ANativeWindow_fromSurfaceTexture(env,surface);但是,该功能在Jellyb

android - SurfaceTexture.OnFrameAvailableListener 停止被调用

我正在我的应用程序中实现SurfaceTexture.OnFrameAvailableListener接口(interface),因此我可以将视频帧用作OpenGL纹理。一切都按应有的方式设置,并且运行完美,但是onFrameAvailable(SurfaceTexturesurfaceTexture)在几秒钟后停止调用,有效且看似卡住了OpenGL中的视频,因为没有通过SurfaceTexture.updateTextImage上传新的纹理数据。我在onFrameAvailable中设置了一个标志,以便仅在需要时从GL线程执行updateTextImage调用。目前,我在每次绘制调用

android - SurfaceTexture 是否在 Activity 暂停/恢复周期中幸存下来?

下面是我做的一个小实验,我在Activity的onResume()部分将SurfaceTextureListener附加到TextureView。重新开始:表面纹理可用(“onSurfaceTextureAvailable”)方向改变:如我​​所料,表面纹理被破坏(“onSurfaceTextureDestroyed”),然后表面纹理可用(“onSurfaceTextureAvailable”)。现在让我吃惊的是:任务切换然后恢复:表面纹理未被破坏(无“onSurfaceTextureDestroyed”)并且表面纹理不可用(无“onSurfaceTextureAvailable”)在