UNPKG

awscdk-construct-scte-scheduler

Version:

AWS CDK Construct for scheduling SCTE-35 events using the MediaLive schedule API

46 lines 6.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.handler = handler; const client_medialive_1 = require("@aws-sdk/client-medialive"); const client = new client_medialive_1.MediaLiveClient({ region: process.env.REGION }); const CHANNEL_ID = process.env.CHANNEL_ID; const OFFSET = 30; const AVAIL_LENGTH = process.env.AVAIL_LENGTH; // Lambda function to insert SCTE-35 splice_insert() message using the MediaLive schedule API async function handler(event) { await deleteSchedules(); const startTime = new Date(Date.now() + (OFFSET * 1000)); await scheduleEvent(Math.floor(startTime.getTime() / 1000), startTime); return { i: event.i + 1 }; } function deleteSchedules() { const command = new client_medialive_1.DeleteScheduleCommand({ ChannelId: CHANNEL_ID }); return client.send(command); } async function scheduleEvent(eventId, start) { const scte = createScteCommand(eventId, start, AVAIL_LENGTH); const command = new client_medialive_1.BatchUpdateScheduleCommand({ ChannelId: CHANNEL_ID, Creates: scte }); const response = await client.send(command); console.log(JSON.stringify(response, null, 2)); } function createScteCommand(eventId, start, durationInSeconds) { return { ScheduleActions: [ { ActionName: `SCTE35_splice-insert_${eventId}`, ScheduleActionSettings: { Scte35SpliceInsertSettings: { SpliceEventId: eventId, Duration: durationInSeconds * 90000, // 90kHz }, }, ScheduleActionStartSettings: { FixedModeScheduleActionStartSettings: { Time: start.toISOString(), }, }, }, ], }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29kZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWNBLDBCQUtDO0FBbkJELGdFQUttQztBQUVuQyxNQUFNLE1BQU0sR0FBRyxJQUFJLGtDQUFlLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBRW5FLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBb0IsQ0FBQztBQUNwRCxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFDbEIsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFpQyxDQUFDO0FBRW5FLDZGQUE2RjtBQUN0RixLQUFLLFVBQVUsT0FBTyxDQUFDLEtBQVU7SUFDdEMsTUFBTSxlQUFlLEVBQUUsQ0FBQztJQUN4QixNQUFNLFNBQVMsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN6RCxNQUFNLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUN2RSxPQUFPLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7QUFDNUIsQ0FBQztBQUVELFNBQVMsZUFBZTtJQUN0QixNQUFNLE9BQU8sR0FBRyxJQUFJLHdDQUFxQixDQUFDLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDckUsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFFRCxLQUFLLFVBQVUsYUFBYSxDQUFDLE9BQWUsRUFBRSxLQUFXO0lBQ3ZELE1BQU0sSUFBSSxHQUFHLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDN0QsTUFBTSxPQUFPLEdBQUcsSUFBSSw2Q0FBMEIsQ0FBQyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDekYsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakQsQ0FBQztBQUVELFNBQVMsaUJBQWlCLENBQUMsT0FBZSxFQUFFLEtBQVcsRUFBRSxpQkFBeUI7SUFDaEYsT0FBTztRQUNMLGVBQWUsRUFBRTtZQUNmO2dCQUNFLFVBQVUsRUFBRSx3QkFBd0IsT0FBTyxFQUFFO2dCQUM3QyxzQkFBc0IsRUFBRTtvQkFDdEIsMEJBQTBCLEVBQUU7d0JBQzFCLGFBQWEsRUFBRSxPQUFPO3dCQUN0QixRQUFRLEVBQUUsaUJBQWlCLEdBQUcsS0FBTSxFQUFFLFFBQVE7cUJBQy9DO2lCQUNGO2dCQUNELDJCQUEyQixFQUFFO29CQUMzQixvQ0FBb0MsRUFBRTt3QkFDcEMsSUFBSSxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUU7cUJBQzFCO2lCQUNGO2FBQ0Y7U0FDRjtLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgTWVkaWFMaXZlQ2xpZW50LFxuICBCYXRjaFVwZGF0ZVNjaGVkdWxlQ29tbWFuZCxcbiAgQmF0Y2hTY2hlZHVsZUFjdGlvbkNyZWF0ZVJlcXVlc3QsXG4gIERlbGV0ZVNjaGVkdWxlQ29tbWFuZCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LW1lZGlhbGl2ZSc7XG5cbmNvbnN0IGNsaWVudCA9IG5ldyBNZWRpYUxpdmVDbGllbnQoeyByZWdpb246IHByb2Nlc3MuZW52LlJFR0lPTiB9KTtcblxuY29uc3QgQ0hBTk5FTF9JRCA9IHByb2Nlc3MuZW52LkNIQU5ORUxfSUQgYXMgc3RyaW5nO1xuY29uc3QgT0ZGU0VUID0gMzA7XG5jb25zdCBBVkFJTF9MRU5HVEggPSBwcm9jZXNzLmVudi5BVkFJTF9MRU5HVEggYXMgdW5rbm93biBhcyBudW1iZXI7XG5cbi8vIExhbWJkYSBmdW5jdGlvbiB0byBpbnNlcnQgU0NURS0zNSBzcGxpY2VfaW5zZXJ0KCkgbWVzc2FnZSB1c2luZyB0aGUgTWVkaWFMaXZlIHNjaGVkdWxlIEFQSVxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhbmRsZXIoZXZlbnQ6IGFueSkge1xuICBhd2FpdCBkZWxldGVTY2hlZHVsZXMoKTtcbiAgY29uc3Qgc3RhcnRUaW1lID0gbmV3IERhdGUoRGF0ZS5ub3coKSArIChPRkZTRVQgKiAxMDAwKSk7XG4gIGF3YWl0IHNjaGVkdWxlRXZlbnQoTWF0aC5mbG9vcihzdGFydFRpbWUuZ2V0VGltZSgpIC8gMTAwMCksIHN0YXJ0VGltZSk7XG4gIHJldHVybiB7IGk6IGV2ZW50LmkgKyAxIH07XG59XG5cbmZ1bmN0aW9uIGRlbGV0ZVNjaGVkdWxlcygpIHtcbiAgY29uc3QgY29tbWFuZCA9IG5ldyBEZWxldGVTY2hlZHVsZUNvbW1hbmQoeyBDaGFubmVsSWQ6IENIQU5ORUxfSUQgfSk7XG4gIHJldHVybiBjbGllbnQuc2VuZChjb21tYW5kKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2NoZWR1bGVFdmVudChldmVudElkOiBudW1iZXIsIHN0YXJ0OiBEYXRlKSB7XG4gIGNvbnN0IHNjdGUgPSBjcmVhdGVTY3RlQ29tbWFuZChldmVudElkLCBzdGFydCwgQVZBSUxfTEVOR1RIKTtcbiAgY29uc3QgY29tbWFuZCA9IG5ldyBCYXRjaFVwZGF0ZVNjaGVkdWxlQ29tbWFuZCh7IENoYW5uZWxJZDogQ0hBTk5FTF9JRCwgQ3JlYXRlczogc2N0ZSB9KTtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuc2VuZChjb21tYW5kKTtcbiAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkocmVzcG9uc2UsIG51bGwsIDIpKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlU2N0ZUNvbW1hbmQoZXZlbnRJZDogbnVtYmVyLCBzdGFydDogRGF0ZSwgZHVyYXRpb25JblNlY29uZHM6IG51bWJlcik6IEJhdGNoU2NoZWR1bGVBY3Rpb25DcmVhdGVSZXF1ZXN0IHtcbiAgcmV0dXJuIHtcbiAgICBTY2hlZHVsZUFjdGlvbnM6IFtcbiAgICAgIHtcbiAgICAgICAgQWN0aW9uTmFtZTogYFNDVEUzNV9zcGxpY2UtaW5zZXJ0XyR7ZXZlbnRJZH1gLFxuICAgICAgICBTY2hlZHVsZUFjdGlvblNldHRpbmdzOiB7XG4gICAgICAgICAgU2N0ZTM1U3BsaWNlSW5zZXJ0U2V0dGluZ3M6IHtcbiAgICAgICAgICAgIFNwbGljZUV2ZW50SWQ6IGV2ZW50SWQsXG4gICAgICAgICAgICBEdXJhdGlvbjogZHVyYXRpb25JblNlY29uZHMgKiA5MF8wMDAsIC8vIDkwa0h6XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgU2NoZWR1bGVBY3Rpb25TdGFydFNldHRpbmdzOiB7XG4gICAgICAgICAgRml4ZWRNb2RlU2NoZWR1bGVBY3Rpb25TdGFydFNldHRpbmdzOiB7XG4gICAgICAgICAgICBUaW1lOiBzdGFydC50b0lTT1N0cmluZygpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF0sXG4gIH07XG59XG5cblxuIl19