Android TextureView与VideoView性能

Ale*_*oss 28 performance android android-widget android-videoview

我需要能够在屏幕上旋转视频,因此我创建了一个自定义TextureView,它在MediaPlayer上提供了一个便利层,类似于VideoView当前实现的方式.这个Android博客文章说下面关于TextureView:

由于SurfaceView的内容不在应用程序窗口中,因此无法有效地转换(移动,缩放,旋转).这使得在ListView或ScrollView中使用SurfaceView变得很困难.SurfaceView也无法与UI工具包的某些功能正确交互,例如淡化边缘或View.setAlpha().

为了解决这些问题,Android 4.0引入了一个名为TextureView的新小部件,它依赖于硬件加速的2D渲染管道和SurfaceTexture.TextureView提供与SurfaceView相同的功能,但与SurfaceView不同,它表现为常规视图.例如,您可以使用TextureView来显示OpenGL场景或视频流.TextureView本身可以是动画,滚动等.

然而,看起来TextureView正在努力播放视频.我正在测试的目标设备有一个1.2Ghz Rockchip RK3066双核CPU,四核Mali-400 GPU(ARM)和1GB RAM.在此设备上使用VideoViews的相同代码表现不错,但TextureViews在播放时"口吃"或根本不显示(左上角带有白色方框的黑框),具体取决于具体设备.TextureViews使用英特尔提供的x86"设备"在仿真器上运行良好.

这种性能是否会受到影响,或者我应该在其他地方寻找问题?谢谢

Raj*_*ani 24

是的,预计随之而来TextureView.与直接在GPU中合成的SurfaceView(解码管道直接渲染到您放置的屏幕区域)不同,TextureView使视频通过正常视图合成进行渲染SurfaceView.虽然TextureView渲染是硬件加速的,但它仍然需要通过更多步骤来获得额外的灵活性,并且会有明显的性能影响.此外,UI线程上运行的任何代码可能会影响TextureView不同SurfaceView.

附加信息: