createCameraVideoTrack static method
- String? cameraId,
- CustomCameraTrackConfig encoderConfig = CustomCameraTrackConfig.h720p_w1280p,
- FacingMode facingMode = FacingMode.FRONT,
- bool multiStream = true,
- BitrateMode bitrateMode = BitrateMode.BALANCED,
- EncodingLayer maxLayer = EncodingLayer.MAX_LAYER_3,
- VideoCodec codec = VideoCodec.VP8,
Creates a camera track before joining, so the user can preview and configure it. Pass the result to createRoom.
The camera opens here. The room publishes that open camera instead of opening it again; until a room takes the track, CustomStreamTrack.stop is what closes it.
This never asks for permission: get it first with requestPermissions.
A failure throws VideoSDKError, for example 3017 without camera
permission, 3021 when there is no camera, 3023 when the camera is in
use, 3026 when it fails to open, or 3071 for an unknown cameraId.
Example
final track = await VideoSDK.createCameraVideoTrack(
encoderConfig: CustomCameraTrackConfig.h720p_w1280p,
facingMode: FacingMode.FRONT,
);
renderer.srcObject = track.mediaStream;
Implementation
static Future<CustomStreamTrack> createCameraVideoTrack({
String? cameraId,
CustomCameraTrackConfig encoderConfig =
CustomCameraTrackConfig.h720p_w1280p,
FacingMode facingMode = FacingMode.FRONT,
bool multiStream = true,
BitrateMode bitrateMode = BitrateMode.BALANCED,
EncodingLayer maxLayer = EncodingLayer.MAX_LAYER_3,
VideoCodec codec = VideoCodec.VP8,
}) async {
final handle = await _channel.invokeMethod<Map<dynamic, dynamic>>(
'track.createCameraVideo',
{
'cameraId': cameraId,
'encoderConfig': encoderConfig.name,
'facingMode': facingMode.name.toLowerCase(),
'multiStream': multiStream,
'bitrateMode': bitrateMode.name,
'maxLayer': maxLayer.value,
'codec': codec.name,
},
);
if (handle == null) throw VideoSDKError.ERROR_VIDEO_TRACK_CREATION_FAILED;
final trackId = handle['trackId'] as String? ?? '';
return CustomStreamTrack.videoTrack(
mediaStream: NativeMediaStream(
id: trackId,
ownerTag: 'local',
tracks: [MediaStreamTrack(id: trackId, kind: 'video')],
),
encoderConfig: encoderConfig,
bitrateMode: bitrateMode,
maxLayer: maxLayer,
codec: codec,
facingMode: facingMode,
cameraId: cameraId,
multiStream: multiStream,
);
}