awscdk-construct-scte-scheduler
Version:
AWS CDK Construct for scheduling SCTE-35 events using the MediaLive schedule API
46 lines • 6.38 kB
JavaScript
;
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