我使用SurfaceView播放视频。我使用三星Galaxy Tab进行测试。我设定了尺寸:
LinearLayout.LayoutParams videoViewParams = new LinearLayout.LayoutParams(m_mainView.getPictureWidth(), m_mainView.getPictureHeight());
mPreview = (SurfaceView) videoView.findViewById(R.id.surface);
mPreview.setLayoutParams(videoViewParams);
当mainView.getPictureWidth()或mainView.getPictureHeight()高于1024时 - 我在logcat中收到消息:
01-12 11:49:15.839:ERROR / SurfaceFlinger(2491):LayerBuffer init temp buff失败,w = 1210,h = 922,exp max = 1024x1024 on 0
我只看到黑屏。
为什么呢? 在我的应用程序中,我使用视频缩放,有时我需要获得大小超过1024的视频。
答案 0 :(得分:1)
怀疑这个限制只针对三星。检查模拟器 - 一切正常!找到一个主题 - a similar problemt人们要求他测试媒体播放器(他说,对于所有设备,应用程序正常工作)。一个用户在Samsung Galaxy S上是同样的问题。只有他最大= 800x800。即,这里获得的屏幕尺寸的最大值,并形成限制。
有什么想法吗?
答案 1 :(得分:1)
我还有两个想法:
1)为所有设备设置缩放限制(将视频的最大尺寸设置为屏幕一侧的最大尺寸)。但在这种情况下,有时放大一般不会或他会非常小。
2)抓住关于错误的日志,并向用户显示一个对话框,在这样的缩放视频中播放将无效。但是如何捕获这个日志?
您如何看待这个?