gpt4 book ai didi

android Weemo SDK 截取 WeemoVideoInFrame 的屏幕截图

转载 作者:行者123 更新时间:2023-11-29 21:04:08 24 4
gpt4 key购买 nike

是否可以截取 WeemoVideoInFrame 的屏幕截图?我尝试了以下代码,它给了我这个。我想我需要获取底层 Surface 的引用才能截取屏幕截图,但真的没有办法实现这一点吗?有人可以推荐一种解决方法吗?

    view.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
view.draw(canvas);

最佳答案

不幸的是,用于渲染视频帧的内部 View 是一个 TextureView,因此您不能请求绘图缓存(TextureView 是 HardwareAccelerated)。
此外,the documentation指定:

public final void draw (Canvas canvas)

Subclasses of TextureView cannot do their own rendering with the Canvas object.

因此,您的 draw() 调用不会对 TextureView 产生任何影响。

也许你可以尝试在内部 TextureView 上使用 getBitmap() 方法,但我不能保证你会成功。
目前,Weemo SDK 上没有此类功能,但我们正在研究以提供一种更方便的方式来捕获这些帧。

此外,如果我们能更好地了解您的用例,那将很有趣。也许你可以分享更多关于你正在努力实现的目标。这可以帮助我们设计最适合您需求的新 SDK 功能。

编辑:要获取对此 TextureView 的引用,只需浏览 View 层次结构即可。例如,您可以这样做:

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;
}

但请记住,这种行为是无法保证的。

关于android Weemo SDK 截取 WeemoVideoInFrame 的屏幕截图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25066215/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com