LiveEventOutput

class LiveEventOutput : KotlinCustomResource

Manages a Azure Media Live Event Output.

Example Usage

import * as pulumi from "@pulumi/pulumi";
import * as azure from "@pulumi/azure";
const example = new azure.core.ResourceGroup("example", {
name: "media-resources",
location: "West Europe",
});
const exampleAccount = new azure.storage.Account("example", {
name: "examplestoracc",
resourceGroupName: example.name,
location: example.location,
accountTier: "Standard",
accountReplicationType: "GRS",
});
const exampleServiceAccount = new azure.media.ServiceAccount("example", {
name: "examplemediaacc",
location: example.location,
resourceGroupName: example.name,
storageAccounts: [{
id: exampleAccount.id,
isPrimary: true,
}],
});
const exampleAsset = new azure.media.Asset("example", {
name: "inputAsset",
resourceGroupName: example.name,
mediaServicesAccountName: exampleServiceAccount.name,
});
const exampleLiveEvent = new azure.media.LiveEvent("example", {
name: "exampleevent",
resourceGroupName: example.name,
location: example.location,
mediaServicesAccountName: exampleServiceAccount.name,
description: "My Event Description",
input: {
streamingProtocol: "RTMP",
keyFrameIntervalDuration: "PT6S",
ipAccessControlAllows: [{
name: "AllowAll",
address: "0.0.0.0",
subnetPrefixLength: 0,
}],
},
});
const exampleLiveEventOutput = new azure.media.LiveEventOutput("example", {
name: "exampleoutput",
liveEventId: exampleLiveEvent.id,
archiveWindowDuration: "PT5M",
assetName: exampleAsset.name,
description: "Test live output 1",
manifestName: "testmanifest",
outputSnapTimeInSeconds: 0,
hlsFragmentsPerTsSegment: 5,
rewindWindowDuration: "PT5M",
});
import pulumi
import pulumi_azure as azure
example = azure.core.ResourceGroup("example",
name="media-resources",
location="West Europe")
example_account = azure.storage.Account("example",
name="examplestoracc",
resource_group_name=example.name,
location=example.location,
account_tier="Standard",
account_replication_type="GRS")
example_service_account = azure.media.ServiceAccount("example",
name="examplemediaacc",
location=example.location,
resource_group_name=example.name,
storage_accounts=[{
"id": example_account.id,
"is_primary": True,
}])
example_asset = azure.media.Asset("example",
name="inputAsset",
resource_group_name=example.name,
media_services_account_name=example_service_account.name)
example_live_event = azure.media.LiveEvent("example",
name="exampleevent",
resource_group_name=example.name,
location=example.location,
media_services_account_name=example_service_account.name,
description="My Event Description",
input={
"streaming_protocol": "RTMP",
"key_frame_interval_duration": "PT6S",
"ip_access_control_allows": [{
"name": "AllowAll",
"address": "0.0.0.0",
"subnet_prefix_length": 0,
}],
})
example_live_event_output = azure.media.LiveEventOutput("example",
name="exampleoutput",
live_event_id=example_live_event.id,
archive_window_duration="PT5M",
asset_name=example_asset.name,
description="Test live output 1",
manifest_name="testmanifest",
output_snap_time_in_seconds=0,
hls_fragments_per_ts_segment=5,
rewind_window_duration="PT5M")
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Azure = Pulumi.Azure;
return await Deployment.RunAsync(() =>
{
var example = new Azure.Core.ResourceGroup("example", new()
{
Name = "media-resources",
Location = "West Europe",
});
var exampleAccount = new Azure.Storage.Account("example", new()
{
Name = "examplestoracc",
ResourceGroupName = example.Name,
Location = example.Location,
AccountTier = "Standard",
AccountReplicationType = "GRS",
});
var exampleServiceAccount = new Azure.Media.ServiceAccount("example", new()
{
Name = "examplemediaacc",
Location = example.Location,
ResourceGroupName = example.Name,
StorageAccounts = new[]
{
new Azure.Media.Inputs.ServiceAccountStorageAccountArgs
{
Id = exampleAccount.Id,
IsPrimary = true,
},
},
});
var exampleAsset = new Azure.Media.Asset("example", new()
{
Name = "inputAsset",
ResourceGroupName = example.Name,
MediaServicesAccountName = exampleServiceAccount.Name,
});
var exampleLiveEvent = new Azure.Media.LiveEvent("example", new()
{
Name = "exampleevent",
ResourceGroupName = example.Name,
Location = example.Location,
MediaServicesAccountName = exampleServiceAccount.Name,
Description = "My Event Description",
Input = new Azure.Media.Inputs.LiveEventInputArgs
{
StreamingProtocol = "RTMP",
KeyFrameIntervalDuration = "PT6S",
IpAccessControlAllows = new[]
{
new Azure.Media.Inputs.LiveEventInputIpAccessControlAllowArgs
{
Name = "AllowAll",
Address = "0.0.0.0",
SubnetPrefixLength = 0,
},
},
},
});
var exampleLiveEventOutput = new Azure.Media.LiveEventOutput("example", new()
{
Name = "exampleoutput",
LiveEventId = exampleLiveEvent.Id,
ArchiveWindowDuration = "PT5M",
AssetName = exampleAsset.Name,
Description = "Test live output 1",
ManifestName = "testmanifest",
OutputSnapTimeInSeconds = 0,
HlsFragmentsPerTsSegment = 5,
RewindWindowDuration = "PT5M",
});
});
package main
import (
"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/core"
"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/media"
"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/storage"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
example, err := core.NewResourceGroup(ctx, "example", &core.ResourceGroupArgs{
Name: pulumi.String("media-resources"),
Location: pulumi.String("West Europe"),
})
if err != nil {
return err
}
exampleAccount, err := storage.NewAccount(ctx, "example", &storage.AccountArgs{
Name: pulumi.String("examplestoracc"),
ResourceGroupName: example.Name,
Location: example.Location,
AccountTier: pulumi.String("Standard"),
AccountReplicationType: pulumi.String("GRS"),
})
if err != nil {
return err
}
exampleServiceAccount, err := media.NewServiceAccount(ctx, "example", &media.ServiceAccountArgs{
Name: pulumi.String("examplemediaacc"),
Location: example.Location,
ResourceGroupName: example.Name,
StorageAccounts: media.ServiceAccountStorageAccountArray{
&media.ServiceAccountStorageAccountArgs{
Id: exampleAccount.ID(),
IsPrimary: pulumi.Bool(true),
},
},
})
if err != nil {
return err
}
exampleAsset, err := media.NewAsset(ctx, "example", &media.AssetArgs{
Name: pulumi.String("inputAsset"),
ResourceGroupName: example.Name,
MediaServicesAccountName: exampleServiceAccount.Name,
})
if err != nil {
return err
}
exampleLiveEvent, err := media.NewLiveEvent(ctx, "example", &media.LiveEventArgs{
Name: pulumi.String("exampleevent"),
ResourceGroupName: example.Name,
Location: example.Location,
MediaServicesAccountName: exampleServiceAccount.Name,
Description: pulumi.String("My Event Description"),
Input: &media.LiveEventInputTypeArgs{
StreamingProtocol: pulumi.String("RTMP"),
KeyFrameIntervalDuration: pulumi.String("PT6S"),
IpAccessControlAllows: media.LiveEventInputIpAccessControlAllowArray{
&media.LiveEventInputIpAccessControlAllowArgs{
Name: pulumi.String("AllowAll"),
Address: pulumi.String("0.0.0.0"),
SubnetPrefixLength: pulumi.Int(0),
},
},
},
})
if err != nil {
return err
}
_, err = media.NewLiveEventOutput(ctx, "example", &media.LiveEventOutputArgs{
Name: pulumi.String("exampleoutput"),
LiveEventId: exampleLiveEvent.ID(),
ArchiveWindowDuration: pulumi.String("PT5M"),
AssetName: exampleAsset.Name,
Description: pulumi.String("Test live output 1"),
ManifestName: pulumi.String("testmanifest"),
OutputSnapTimeInSeconds: pulumi.Int(0),
HlsFragmentsPerTsSegment: pulumi.Int(5),
RewindWindowDuration: pulumi.String("PT5M"),
})
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azure.core.ResourceGroup;
import com.pulumi.azure.core.ResourceGroupArgs;
import com.pulumi.azure.storage.Account;
import com.pulumi.azure.storage.AccountArgs;
import com.pulumi.azure.media.ServiceAccount;
import com.pulumi.azure.media.ServiceAccountArgs;
import com.pulumi.azure.media.inputs.ServiceAccountStorageAccountArgs;
import com.pulumi.azure.media.Asset;
import com.pulumi.azure.media.AssetArgs;
import com.pulumi.azure.media.LiveEvent;
import com.pulumi.azure.media.LiveEventArgs;
import com.pulumi.azure.media.inputs.LiveEventInputArgs;
import com.pulumi.azure.media.LiveEventOutput;
import com.pulumi.azure.media.LiveEventOutputArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var example = new ResourceGroup("example", ResourceGroupArgs.builder()
.name("media-resources")
.location("West Europe")
.build());
var exampleAccount = new Account("exampleAccount", AccountArgs.builder()
.name("examplestoracc")
.resourceGroupName(example.name())
.location(example.location())
.accountTier("Standard")
.accountReplicationType("GRS")
.build());
var exampleServiceAccount = new ServiceAccount("exampleServiceAccount", ServiceAccountArgs.builder()
.name("examplemediaacc")
.location(example.location())
.resourceGroupName(example.name())
.storageAccounts(ServiceAccountStorageAccountArgs.builder()
.id(exampleAccount.id())
.isPrimary(true)
.build())
.build());
var exampleAsset = new Asset("exampleAsset", AssetArgs.builder()
.name("inputAsset")
.resourceGroupName(example.name())
.mediaServicesAccountName(exampleServiceAccount.name())
.build());
var exampleLiveEvent = new LiveEvent("exampleLiveEvent", LiveEventArgs.builder()
.name("exampleevent")
.resourceGroupName(example.name())
.location(example.location())
.mediaServicesAccountName(exampleServiceAccount.name())
.description("My Event Description")
.input(LiveEventInputArgs.builder()
.streamingProtocol("RTMP")
.keyFrameIntervalDuration("PT6S")
.ipAccessControlAllows(LiveEventInputIpAccessControlAllowArgs.builder()
.name("AllowAll")
.address("0.0.0.0")
.subnetPrefixLength(0)
.build())
.build())
.build());
var exampleLiveEventOutput = new LiveEventOutput("exampleLiveEventOutput", LiveEventOutputArgs.builder()
.name("exampleoutput")
.liveEventId(exampleLiveEvent.id())
.archiveWindowDuration("PT5M")
.assetName(exampleAsset.name())
.description("Test live output 1")
.manifestName("testmanifest")
.outputSnapTimeInSeconds(0)
.hlsFragmentsPerTsSegment(5)
.rewindWindowDuration("PT5M")
.build());
}
}
resources:
example:
type: azure:core:ResourceGroup
properties:
name: media-resources
location: West Europe
exampleAccount:
type: azure:storage:Account
name: example
properties:
name: examplestoracc
resourceGroupName: ${example.name}
location: ${example.location}
accountTier: Standard
accountReplicationType: GRS
exampleServiceAccount:
type: azure:media:ServiceAccount
name: example
properties:
name: examplemediaacc
location: ${example.location}
resourceGroupName: ${example.name}
storageAccounts:
- id: ${exampleAccount.id}
isPrimary: true
exampleAsset:
type: azure:media:Asset
name: example
properties:
name: inputAsset
resourceGroupName: ${example.name}
mediaServicesAccountName: ${exampleServiceAccount.name}
exampleLiveEvent:
type: azure:media:LiveEvent
name: example
properties:
name: exampleevent
resourceGroupName: ${example.name}
location: ${example.location}
mediaServicesAccountName: ${exampleServiceAccount.name}
description: My Event Description
input:
streamingProtocol: RTMP
keyFrameIntervalDuration: PT6S
ipAccessControlAllows:
- name: AllowAll
address: 0.0.0.0
subnetPrefixLength: 0
exampleLiveEventOutput:
type: azure:media:LiveEventOutput
name: example
properties:
name: exampleoutput
liveEventId: ${exampleLiveEvent.id}
archiveWindowDuration: PT5M
assetName: ${exampleAsset.name}
description: Test live output 1
manifestName: testmanifest
outputSnapTimeInSeconds: 0
hlsFragmentsPerTsSegment: 5
rewindWindowDuration: PT5M

Import

Live Outputs can be imported using the resource id, e.g.

$ pulumi import azure:media/liveEventOutput:LiveEventOutput example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1/providers/Microsoft.Media/mediaServices/account1/liveEvents/event1/liveOutputs/output1

Properties

Link copied to clipboard

ISO 8601 time between 1 minute to 25 hours to indicate the maximum content length that can be archived in the asset for this live output. This also sets the maximum content length for the rewind window. For example, use PT1H30M to indicate 1 hour and 30 minutes of archive window. Changing this forces a new Live Output to be created.

Link copied to clipboard
val assetName: Output<String>

The asset that the live output will write to. Changing this forces a new Live Output to be created.

Link copied to clipboard
val description: Output<String>?

The description of the live output. Changing this forces a new Live Output to be created.

Link copied to clipboard

The number of fragments in an HTTP Live Streaming (HLS) TS segment in the output of the live event. This value does not affect the packing ratio for HLS CMAF output. Changing this forces a new Live Output to be created.

Link copied to clipboard
val id: Output<String>
Link copied to clipboard
val liveEventId: Output<String>

The id of the live event. Changing this forces a new Live Output to be created.

Link copied to clipboard
val manifestName: Output<String>

The manifest file name. If not provided, the service will generate one automatically. Changing this forces a new Live Output to be created.

Link copied to clipboard
val name: Output<String>

The name which should be used for this Live Event Output. Changing this forces a new Live Output to be created.

Link copied to clipboard

The initial timestamp that the live output will start at, any content before this value will not be archived. Changing this forces a new Live Output to be created.

Link copied to clipboard
val pulumiChildResources: Set<KotlinResource>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard

ISO 8601 time between 1 minute to the duration of archive_window_duration to control seek-able window length during Live. The service won't use this property once LiveOutput stops. The archived VOD will have full content with original ArchiveWindowLength. For example, use PT1H30M to indicate 1 hour and 30 minutes of rewind window length. Service will use implicit default value 30m only if Live Event enables LL. Changing this forces a new Live Output to be created.

Link copied to clipboard
val urn: Output<String>