首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android TextureView与VideoView的性能

Android TextureView与VideoView的性能
EN

Stack Overflow用户
提问于 2013-01-29 19:38:54
回答 2查看 14.4K关注 0票数 31

我需要能够在屏幕上旋转视频,所以我创建了一个自定义TextureView,它在MediaPlayer上提供了一个类似于当前VideoView实现的方便层。这篇Android博客文章介绍了关于TextureView的以下内容:

因为SurfaceView的内容不存在于应用程序的窗口中,所以不能有效地转换(移动、缩放、旋转)。这使得在ListView或ScrollView中使用ScrollView变得很困难。SurfaceView也无法与UI工具包的某些特性进行适当的交互,例如渐变边缘或View.setAlpha()。 为了解决这些问题,Android4.0引入了一个名为TextureView的新小部件,它依赖于硬件加速的2D渲染管道和SurfaceTexture。TextureView提供了与SurfaceView相同的功能,但与SurfaceView不同,它是一个常规视图。例如,您可以使用TextureView来显示OpenGL场景或视频流。TextureView本身可以是动画、滚动等。

然而,看起来TextureView很难播放这些视频。我正在测试的目标设备有一个1.2Ghz Rockchip RK3066双核CPU,一个Quad核马里-400 GPU (ARM)和1GB内存。在此设备上使用VideoViews的代码执行得很好,但TextureViews要么在播放时“结巴”,要么根本不出现(左上角有白色方块的黑匣子),这取决于具体设备。TextureViews使用英特尔提供的x86“设备”在模拟器上执行良好的操作。

这种表现是预期的,还是我应该寻找其他地方来发现问题?谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-26 00:35:05

是的,这是TextureView的预期。TextureView使视频通过正常的视图--为呈现而进行合成,而不是直接在GPU中合成的SurfaceView (解码流水线直接呈现到放置SurfaceView的屏幕区域)。虽然TextureView呈现是硬件加速的,但它仍然需要经过更多的步骤才能获得更多的灵活性,而且性能也会受到一定的影响。此外,在UI线程上运行的任何代码都可能影响TextureView (与SurfaceView不同)。

其他信息:

票数 27
EN

Stack Overflow用户

发布于 2017-05-30 14:06:33

你可以看到这个文章

SurfaceView和TextureView填充了类似的角色,但是实现方式非常不同。要决定哪一种是最好的,就需要理解两者的权衡。因为TextureView是视图层次结构的适当公民,所以它的行为与任何其他视图一样,并且可以重叠或被其他元素重叠。您可以使用简单的API调用以位图的形式执行任意转换并检索内容。 对TextureView的主要打击是组合步骤的性能。使用SurfaceView,内容被写入一个单独的层,SurfaceFlinger组合,最好是一个覆盖层。使用TextureView,视图组合总是使用GLES执行,对其内容的更新也可能导致其他视图元素重绘(例如,如果它们位于TextureView之上)。在视图呈现完成后,应用程序UI层必须由SurfaceFlinger与其他层组合,因此您可以有效地组合每个可见像素两次。对于全屏视频播放器或任何其他实际上只是在视频之上分层的UI元素的应用程序,SurfaceView提供了更好的性能

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14590852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档