enableWebcam method

void enableWebcam()

Enable webcam

Implementation

void enableWebcam() async {
  if (meBloc.state.webcamInProgress) {
    return;
  }
  meBloc.add(MeSetWebcamInProgress(progress: true));
  if (_mediasoupDevice!.canProduce(RTCRtpMediaType.RTCRtpMediaTypeVideo) ==
      false) {
    return;
  }
  try {
    // NOTE: prefer using h264
    RtpCodecCapability? codec = _mediasoupDevice!.rtpCapabilities.codecs
        .firstWhere((RtpCodecCapability c) {
      return c.mimeType.toLowerCase() == 'video/vp9' ||
          c.mimeType.toLowerCase() == 'video/vp8';
    },
            // (RtpCodecCapability c) =>
            //     c.mimeType.toLowerCase() == 'video/h264',
            orElse: () =>
                throw 'desired vp9 codec+configuration is not supported');

    /// Get video input device
    final MediaStreamTrack track = _localStream!.getVideoTracks().first;
    meBloc.add(MeSetWebcamInProgress(progress: true));
    _sendTransport!.produce(
      track: track,
      codecOptions: ProducerCodecOptions(
        videoGoogleStartBitrate: 1000,
      ),
      encodings: kIsWeb
          ? [
              RtpEncodingParameters(
                  scalabilityMode: 'S3T3_KEY', scaleResolutionDownBy: 1.0),
            ]
          : [],
      stream: _localStream!,
      appData: {
        'source': 'webcam',
      },
      source: 'webcam',
      codec: codec,
    );
  } catch (error) {
    // if (videoStream != null) {
    //   await videoStream.dispose();
    // }
  }
}