尝试用 flutter 做一个视频应用,anroid 端成功接入了 surfaceTexture 可以显示视频。
但是在 iOS 端外接纹理时, 实现 FlutterTexture
,
并使用了 FlutterTextureRegistry registerTexture
成功注册。
但是视频没有显示出来,调试发现 copyPixelBuffer
只被调用了一次,在这一次调用中,由于视频还没有准备好,所以返回了空。
但是后续 copyPixelBuffer
不被调用了, 是什么原因,有 V 友了解吗? 是否和第一次调用返回 nil 有关系?
1
befovy OP 我自己来回答一下吧。
```objc @protocol FlutterTextureRegistry <NSObject> - (int64_t)registerTexture:(NSObject<FlutterTexture>*)texture; - (void)textureFrameAvailable:(int64_t)textureId; - (void)unregisterTexture:(int64_t)textureId; @end ``` 每次有新的图像准备好之后, 调用 `textureFrameAvailable` 告诉 flutter, 应该更新显示了。 然后 flutter 就会调用 `copyPixelBuffer` 获取 pixelbuffer 并显示。 另外需要注意 copyPixelBuffer 返回的 pixelbuffer 需要是 BGRA32 格式的才行,这一点文档中也没提到,真是个坑 |
2
zinwalin 2020-01-09 13:32:22 +08:00
性能怎样?
|
3
zinwalin 2020-01-09 13:39:47 +08:00
有没有 demo 可以分享下, 谢谢。
|