> **Experimental**
>
> `@aws-cdk/aws-medialive-alpha` is an [**experimental**](/stability) (alpha) package: its API may change in any release, without a major version bump.
# AutomaticInputFailover

Automatic input failover configuration for an input attachment.

When the active (primary)
input meets any of the failover conditions, MediaLive switches to the secondary input
without restarting the channel. This is input-source redundancy, distinct from the
pipeline redundancy provided by `ChannelClass.STANDARD`.

- Stability: [Experimental](/cdk/api/stability.html)
- Source: [`lib/input-attachment.ts`](https://github.com/aws/aws-cdk/blob/v2.274.0-alpha.0/packages/@aws-cdk/aws-medialive-alpha/lib/input-attachment.ts#L318)

## Example

```ts
declare const stack: Stack;
declare const primaryInput: medialive.IInput;
declare const secondaryInput: medialive.IInput;
declare const audioSelector: medialive.AudioSelector;
declare const video: medialive.EncodeConfiguration;
declare const audio: medialive.EncodeConfiguration;
declare const bucket: s3.IBucket;

new medialive.Channel(stack, 'Channel', {
  inputs: [{
    input: primaryInput,
    automaticInputFailover: {
      secondaryInput,
      inputPreference: medialive.InputPreference.PRIMARY_INPUT_PREFERRED,
      errorClearTime: Duration.seconds(3),
      failoverConditions: [
        medialive.FailoverCondition.inputLoss({ threshold: Duration.millis(1500) }),
        medialive.FailoverCondition.audioSilence({ audioSelector, threshold: Duration.seconds(2) }),
        medialive.FailoverCondition.videoBlack({ blackDetectThreshold: 0.1, threshold: Duration.seconds(1) }),
      ],
    },
  }, {
    // The secondary input must also be attached to the channel as its own input.
    input: secondaryInput,
  }],
  outputGroups: [
    medialive.OutputGroupConfiguration.hls({
      name: 'hls',
      destinations: [medialive.OutputDestination.toBucket(bucket, 'live/stream')],
      outputs: [{ encodes: [video, audio], outputName: 'hls_out' }],
    }),
  ],
});
```

## Properties

- `errorClearTime`: [Duration](/cdk/api/v2/docs/aws-cdk-lib.Duration.html) — How long a recovered input must remain free of failover conditions before it is considered healthy.

  **Default:** MediaLive service default

  Particularly relevant with `InputPreference.PRIMARY_INPUT_PREFERRED`.

- `failoverConditions`: [FailoverCondition](/cdk/api/v2/docs/@aws-cdk_aws-medialive-alpha.FailoverCondition.html)[] — The conditions that trigger failover to the secondary input.

  **Default:** a single input-loss condition with the MediaLive service default threshold

- `inputPreference`: [InputPreference](/cdk/api/v2/docs/@aws-cdk_aws-medialive-alpha.InputPreference.html) — Which input to prefer once a failed input has recovered.

  **Default:** EQUAL_INPUT_PREFERENCE, applied by MediaLive

- `secondaryInput`: [IInput](/cdk/api/v2/docs/@aws-cdk_aws-medialive-alpha.IInput.html) (required) — The secondary input to fail over to. Must be the same input class as the primary input.

  [disable-awslint:prefer-ref-interface]
