不幸的是,用于渲染视频帧的内部视图是 TextureView,因此您无法请求绘图缓存(TextureView 是 HardwareAccelerated)。
此外,该文档指定:
public final void draw(画布画布)
TextureView 的子类不能使用 Canvas 对象进行自己的渲染。
因此,您的draw()
调用对 TextureView 没有影响。
也许您可以尝试getBitmap()
在内部 TextureView 上使用该方法,但我不能保证这会奏效。
目前,Weemo SDK 上还没有这样的功能,但我们正在研究提供一种更方便的方式来捕获这些帧。
此外,更好地了解您的用例对我们来说会很有趣。也许你可以分享更多关于你想要实现的目标。这可以帮助我们设计最适合您需求的新 SDK 功能。
编辑:
要获得对 this 的引用TextureView
,只需浏览视图层次结构。例如,您可以这样做:
WeemoVideoInFrame videoFrame = getView().findViewById(R.id.video_frame);
findTextureView(videoFrame);
/* ... */
TextureView findTextureView(WeemoVideoInFrame frame) {
for (int index = 0; index < frame.getChildCount(); index++) {
View child = frame.getChildAt(index);
if(child instanceof TextureView) {
return (TextureView) child;
}
}
return null;
}
但请记住,不能保证这种行为。