Live Event Output
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
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.
The description of the live output. Changing this forces a new Live Output to be created.
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.
The id of the live event. Changing this forces a new Live Output to be created.
The manifest file name. If not provided, the service will generate one automatically. Changing this forces a new Live Output to be created.
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.
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.