[Flutter笔记]fluter-webrtc

1,631 阅读1分钟

github.com/flutter-web…

Windows

  • libwebrtc: RTCVideoRenderer, RTCVideoFrame
  • libflutter: TextureRegistrar, PixelBufferTexture

类图

classDiagram
  FlutterWebRTCPlugin <|-- FlutterWebRTCPluginImpl
  FlutterWebRTCBase <|-- FlutterWebRTC
  class FlutterWebRTCBase {
    +texture_registrar_
  }
  FlutterVideoRendererManager <|-- FlutterWebRTC
  class FlutterVideoRendererManager {
    +base_
    +CreateVideoRendererTexture()
    +VideoRendererDispose()
  }
  RTCVideoRenderer <|-- FlutterVideoRenderer
  class RTCVideoRenderer {
    +OnFrame()
  }
  class FlutterVideoRenderer {
    +frame_
    +CopyPixelBuffer()
  }

时序图

  • 创建 & 销毁

sequenceDiagram
  par contructor
  FlutterWebRTCPluginImpl ->> FlutterWebRTC: make_unique
  end
  par createVideoRenderer
  FlutterWebRTC ->> FlutterVideoRendererManager: CreateVideoRendererTexture
  FlutterVideoRendererManager ->> FlutterVideoRenderer: constructor
  FlutterVideoRenderer ->>+ PixelBufferTexture: constructor
  PixelBufferTexture -->- FlutterVideoRenderer: (PixelBufferTexture)
  FlutterVideoRenderer ->> TextureRegistrar: RegisterTexture
  end
  par videoRendererDispose
  FlutterWebRTC ->> FlutterVideoRendererManager: VideoRendererDispose
  FlutterVideoRendererManager ->> TextureRegistrar: UnregisterTexture
  end
  • 绘制

sequenceDiagram
  par onFrame
  RTCVideoRenderer ->> FlutterVideoRenderer: onFrame
  FlutterVideoRenderer ->> TextureRegistrar: MarkTextureFrameAvailable
  TextureRegistrar ->> PixelBufferTexture: CopyBufferCallback
  PixelBufferTexture ->> FlutterVideoRenderer: CopyPixelBuffer
  FlutterVideoRenderer ->> RTCVideoFrame: ConvertToARGB
  end