Experimental
@aws-cdk/aws-medialive-alpha is an experimental (alpha) package: its API may change in any release, without a major version bump.
OutputDestination Class
A general URL-based output destination — an S3 bucket or an HTTP(S) endpoint.
Used by HLS, MS Smooth, and CMAF Ingest output groups. Each output group's destinations prop is typed to the destination valid for its protocol, so an invalid pairing (e.g. a UDP destination on an HLS group) is a compile-time error rather than a deploy-time failure.
Example
ts
declare const stack: Stack;
declare const input: medialive.IInput;
declare const bucket: s3.IBucket;
declare const video: medialive.EncodeConfiguration;
new medialive.Channel(stack, 'Channel', {
inputs: [{ input }],
availBlanking: {
state: medialive.AvailBlankingState.ENABLED,
image: medialive.FileLocation.fromBucket(bucket, 'slates/avail.png'),
},
blackoutSlate: {
state: medialive.BlackoutSlateState.ENABLED,
image: medialive.FileLocation.fromBucket(bucket, 'slates/blackout.png'),
},
outputGroups: [
medialive.OutputGroupConfiguration.hls({
name: 'hls',
destinations: [medialive.OutputDestination.toBucket(bucket, 'live/stream')],
outputs: [{ encodes: [video], outputName: 'hls_out' }],
}),
],
});
python
# stack: Stack
# input: medialive.IInput
# bucket: s3.IBucket
# video: medialive.EncodeConfiguration
medialive.Channel(stack, "Channel",
inputs=[medialive.InputAttachment(input=input)],
avail_blanking=medialive.AvailBlanking(
state=medialive.AvailBlankingState.ENABLED,
image=medialive.FileLocation.from_bucket(bucket, "slates/avail.png")
),
blackout_slate=medialive.BlackoutSlate(
state=medialive.BlackoutSlateState.ENABLED,
image=medialive.FileLocation.from_bucket(bucket, "slates/blackout.png")
),
output_groups=[
medialive.OutputGroupConfiguration.hls(
name="hls",
destinations=[medialive.OutputDestination.to_bucket(bucket, "live/stream")],
outputs=[medialive.HlsOutputDefinition(encodes=[video], output_name="hls_out")]
)
]
)
java
Stack stack;
IInput input;
IBucket bucket;
EncodeConfiguration video;
Channel.Builder.create(stack, "Channel")
.inputs(List.of(InputAttachment.builder().input(input).build()))
.availBlanking(AvailBlanking.builder()
.state(AvailBlankingState.ENABLED)
.image(FileLocation.fromBucket(bucket, "slates/avail.png"))
.build())
.blackoutSlate(BlackoutSlate.builder()
.state(BlackoutSlateState.ENABLED)
.image(FileLocation.fromBucket(bucket, "slates/blackout.png"))
.build())
.outputGroups(List.of(OutputGroupConfiguration.hls(HlsOutputGroupProps.builder()
.name("hls")
.destinations(List.of(OutputDestination.toBucket(bucket, "live/stream")))
.outputs(List.of(HlsOutputDefinition.builder().encodes(List.of(video)).outputName("hls_out").build()))
.build())))
.build();
csharp
// Install: dotnet add package Amazon.CDK.AWS.MediaLive.Alpha
Stack stack;
IInput input;
IBucket bucket;
EncodeConfiguration video;
new Channel(stack, "Channel", new ChannelProps {
Inputs = new [] { new InputAttachment { Input = input } },
AvailBlanking = new AvailBlanking {
State = AvailBlankingState.ENABLED,
Image = FileLocation.FromBucket(bucket, "slates/avail.png")
},
BlackoutSlate = new BlackoutSlate {
State = BlackoutSlateState.ENABLED,
Image = FileLocation.FromBucket(bucket, "slates/blackout.png")
},
OutputGroups = new [] { OutputGroupConfiguration.Hls(new HlsOutputGroupProps {
Name = "hls",
Destinations = new [] { OutputDestination.ToBucket(bucket, "live/stream") },
Outputs = new [] { new HlsOutputDefinition { Encodes = new [] { video }, OutputName = "hls_out" } }
}) }
});
go
// Install: go get github.com/aws/aws-cdk-go/awsmedialivealpha/v2
var stack Stack
var input IInput
var bucket IBucket
var video EncodeConfiguration
medialive.NewChannel(stack, jsii.String("Channel"), &ChannelProps{
Inputs: []InputAttachment{
&InputAttachment{
Input: *Input,
},
},
AvailBlanking: &AvailBlanking{
State: medialive.AvailBlankingState_ENABLED(),
Image: medialive.FileLocation_FromBucket(bucket, jsii.String("slates/avail.png")),
},
BlackoutSlate: &BlackoutSlate{
State: medialive.BlackoutSlateState_ENABLED(),
Image: medialive.FileLocation_*FromBucket(bucket, jsii.String("slates/blackout.png")),
},
OutputGroups: []OutputGroupConfiguration{
medialive.OutputGroupConfiguration_Hls(&HlsOutputGroupProps{
Name: jsii.String("hls"),
Destinations: []OutputDestination{
medialive.OutputDestination_ToBucket(bucket, jsii.String("live/stream")),
},
Outputs: []HlsOutputDefinition{
&HlsOutputDefinition{
Encodes: []EncodeConfiguration{
video,
},
OutputName: jsii.String("hls_out"),
},
},
}),
},
})
Methods
toBucket(bucket: IBucket, prefix?: string): OutputDestination // chainable@staticmethod def to_bucket(bucket: IBucket, prefix: typing.Optional[str] = None) -> OutputDestinationpublic static OutputDestination toBucket(IBucket bucket, String prefix)public static OutputDestination ToBucket(IBucket bucket, string? prefix = null)func ToBucket(Bucket IBucket, Prefix *string) OutputDestinationstatic#Deliver to an S3 bucket (auto-grants write to the channel role).
url(url: string, options?: OutputDestinationOptions): OutputDestination // chainable@staticmethod def url(url: str, options: typing.Optional[OutputDestinationOptions] = None) -> OutputDestinationpublic static OutputDestination url(String url, OutputDestinationOptions options)public static OutputDestination Url(string url, OutputDestinationOptions? options = null)func Url(Url *string, Options OutputDestinationOptions) OutputDestinationstatic#Deliver to a raw URL — typically an `https://` origin (or an `s3ssl://` path).