function handleMetadata(entry: MetadataEntry) {
switch (entry.metadataType) {
case MetadataType.DATERANGE:
// `entry` is a DateRangeMetadataEntry
if (entry.platform === 'android') {
// `entry` is now an AndroidDateRangeMetadataEntry
console.log('End on next:', entry.endOnNext);
} else {
// `entry` is now an IosDateRangeMetadataEntry
console.log('Cueing options:', entry.cueingOptions);
}
break;
case MetadataType.SCTE:
// `entry` is a ScteMetadataEntry
console.log('SCTE key:', entry.key, 'value:', entry.value);
break;
case MetadataType.ID3:
// `entry` is an Id3MetadataEntry
if (entry.platform === 'android') {
// `entry` is now an AndroidId3Frame
console.log('Frame type:', entry.frameType);
// Further narrow down on the frame type
if (entry.frameType == 'apic') {
console.log('APIC frame mimeType: ', entry.mimeType)
}
} else {
// `entry` is now an IosId3Frame
console.log('Frame ID:', entry.id, 'Value:', entry.value);
}
// Or use isAndroidId3Frame to directly narrow to specific Android frame
if (isAndroidId3Frame(entry, 'text')) {
console.log('Text frame:', entry.value);
}
break;
case MetadataType.EMSG:
// `entry` is an EventMessageMetadataEntry (Android only)
console.log('EMSG data:', entry.messageData);
break;
case MetadataType.Unsupported:
// `entry` is an UnsupportedMetadataEntry
console.warn('Unsupported metadata encountered from: ', entry.platform)
break;
}
}
Union type representing all supported timed metadata entry kinds.
This is a discriminated union over the
metadataTypefield:Branching on
metadataTypeusing anif/switchstatement narrows the type and gives access to entry-specific fields.