P2PSettingConfig constructor

P2PSettingConfig({
  1. void getStats(
    1. int totalP2PDownloaded,
    2. int totalP2PUploaded,
    3. int totalHTTPDownloaded,
    4. int p2pDownloadSpeed,
    )?,
  2. void getPeerId(
    1. int peerId
    )?,
  3. void getPeersInfo(
    1. int peers
    )?,
  4. String? channelId(
    1. int m3u8Url
    )?,
  5. dynamic segmentId(
    1. String streamId,
    2. int sn,
    3. String segmentUrl,
    4. String? range,
    )?,
})

Implementation

external factory P2PSettingConfig({
  /// 获取p2p下载信息
  /// 该回调函数可以获取p2p信息,包括:
  /// totalHTTPDownloaded: 从HTTP(CDN)下载的数据量(单位KB)
  /// totalP2PDownloaded: 从P2P下载的数据量(单位KB)
  /// totalP2PUploaded: P2P上传的数据量(单位KB)
  /// p2pDownloadSpeed: P2P下载速度(单位KB/s)
  void Function(
    int totalP2PDownloaded,
    int totalP2PUploaded,
    int totalHTTPDownloaded,
    int p2pDownloadSpeed,
  )?
      getStats,

  /// 获取本节点的Id
  void Function(int peerId)? getPeerId,

  /// 获取成功连接的节点的信息
  void Function(int peers)? getPeersInfo,

  /// 某些流媒体提供商的m3u8是动态生成的
  /// 不同节点的m3u8地址不一样
  /// 例如example.com/clientId1/streamId.m3u8和example.com/clientId2/streamId.m3u8
  /// 而本插件默认使用m3u8地址(去掉查询参数)作为channelId。
  /// 这时候就要构造一个共同的chanelId,使实际观看同一直播/视频的节点处在相同频道中。
  String? Function(int m3u8Url)? channelId,

  /// 解决动态ts路径问题
  /// 类似动态m3u8路径问题,相同ts文件的路径也可能有差异
  /// 这时候需要忽略ts路径差异的部分
  /// 插件默认用ts的绝地路径(url)来标识每个ts文件
  /// 所以需要通过钩子函数重新构造标识符。
  dynamic Function(
    String streamId,
    int sn,
    String segmentUrl,
    String? range,
  )?
      segmentId,
});