createStream method

Future<CreateStreamOutput> createStream({
  1. required String streamName,
  2. int? dataRetentionInHours,
  3. String? deviceName,
  4. String? kmsKeyId,
  5. String? mediaType,
  6. Map<String, String>? tags,
})

Creates a new Kinesis video stream.

When you create a new stream, Kinesis Video Streams assigns it a version number. When you change the stream's metadata, Kinesis Video Streams updates the version.

CreateStream is an asynchronous operation.

For information about how the service works, see How it Works.

You must have permissions for the KinesisVideo:CreateStream action.

May throw AccountStreamLimitExceededException. May throw DeviceStreamLimitExceededException. May throw ResourceInUseException. May throw InvalidDeviceException. May throw InvalidArgumentException. May throw ClientLimitExceededException. May throw TagsPerResourceExceededLimitException.

Parameter streamName : A name for the stream that you are creating.

The stream name is an identifier for the stream, and must be unique for each account and region.

Parameter dataRetentionInHours : The number of hours that you want to retain the data in the stream. Kinesis Video Streams retains the data in a data store that is associated with the stream.

The default value is 0, indicating that the stream does not persist data.

When the DataRetentionInHours value is 0, consumers can still consume the fragments that remain in the service host buffer, which has a retention time limit of 5 minutes and a retention memory limit of 200 MB. Fragments are removed from the buffer when either limit is reached.

Parameter deviceName : The name of the device that is writing to the stream.

Parameter kmsKeyId : The ID of the AWS Key Management Service (AWS KMS) key that you want Kinesis Video Streams to use to encrypt stream data.

If no key ID is specified, the default, Kinesis Video-managed key (aws/kinesisvideo) is used.

For more information, see DescribeKey.

Parameter mediaType : The media type of the stream. Consumers of the stream can use this information when processing the stream. For more information about media types, see Media Types. If you choose to specify the MediaType, see Naming Requirements for guidelines.

Example valid values include "video/h264" and "video/h264,audio/aac".

This parameter is optional; the default value is null (or empty in JSON).

Parameter tags : A list of tags to associate with the specified stream. Each tag is a key-value pair (the value is optional).

Implementation

Future<CreateStreamOutput> createStream({
  required String streamName,
  int? dataRetentionInHours,
  String? deviceName,
  String? kmsKeyId,
  String? mediaType,
  Map<String, String>? tags,
}) async {
  ArgumentError.checkNotNull(streamName, 'streamName');
  _s.validateStringLength(
    'streamName',
    streamName,
    1,
    256,
    isRequired: true,
  );
  _s.validateNumRange(
    'dataRetentionInHours',
    dataRetentionInHours,
    0,
    1152921504606846976,
  );
  _s.validateStringLength(
    'deviceName',
    deviceName,
    1,
    128,
  );
  _s.validateStringLength(
    'kmsKeyId',
    kmsKeyId,
    1,
    2048,
  );
  _s.validateStringLength(
    'mediaType',
    mediaType,
    1,
    128,
  );
  final $payload = <String, dynamic>{
    'StreamName': streamName,
    if (dataRetentionInHours != null)
      'DataRetentionInHours': dataRetentionInHours,
    if (deviceName != null) 'DeviceName': deviceName,
    if (kmsKeyId != null) 'KmsKeyId': kmsKeyId,
    if (mediaType != null) 'MediaType': mediaType,
    if (tags != null) 'Tags': tags,
  };
  final response = await _protocol.send(
    payload: $payload,
    method: 'POST',
    requestUri: '/createStream',
    exceptionFnMap: _exceptionFns,
  );
  return CreateStreamOutput.fromJson(response);
}