System Configuration
Options and parameters for configuring Nomad Media's subsystems
The primary config file for the application is found in the system bucket in the /configuration folder. It's used by all lambdas as the source of configuration.
{
"application/brightCoveSettings": {
"brightCoveSecretKey": "demo3/brightcove",
"tokenUrl": "https://oauth.brightcove.com/v4/access_token",
"cmsBaseUrl": "https://cms.api.brightcove.com/v1/accounts/",
"pageSize": 10,
"MaxNumberOfPages": 1,
"baseImportPath": "BrightCove"
},
"application/BatchActionSettings": {
"isQueueAction": true,
"actionArguments": {}
},
"application/assetBatchActionSettings": {
"isQueueAction": true,
"actionArguments": {}
},
"application/screenshotSettings": {
// These are the max dimensions of a generated thumbnail
"thumbnailMaxDimensions": {
"maxHeight": 180,
"maxWidth": 180
},
// These are the max dimensions of a generated preview
"previewMaxDimensions": {
"maxHeight": 600,
"maxWidth": 600
},
// This is the interval in seconds that we take screenshots if ScreenshotsOnInterval processor is turned on
"screenshotIntervalFrequency": 3.0
},
"application/rekognitionSettings": {
// Minimum automatch confidence for similar faces to be automatched
"automatchSimilarityThreshold": 95.0,
// Minimum confidence for all other rekognition settings (textitems, labels, celebrities, etc)
"minConfidence": 80.0,
// Setting for custom labels (unused currently)
"customLabelMinInferenceUnits": 1,
// Name of the rekognition image face index on the AWS side
"collection": "demo3-rekognition-collection"
},
// Settings for TranscribeMedical
"application/transcribeMedical": {
// This us from a list of strings defined in the TranscribeService
// PRIMARYCARE is the only string in the list currently
"specialty": "PRIMARYCARE",
// This must be either DICTATION or CONVERSATION
"transcriptionType": "DICTATION"
},
// List of processors that we run and whether they are turned on or off
"application/assetProcessors": {
// Extra audio into an mp3
"AudioExtraction": true,
// Segment video into smaller chunks to handle manifests easier. Either this or RekognitionVideoSegmentDetection MUST be turned on. The segment length is defined in application/NomadSettings -> intervalSegmentLengthInSeconds
"IntervalSegments": true,
// Detect celebrities in images and screenshots
"RekognitionImageCelebrityRecognition": false,
// Detect text in images and screenshots
"RekognitionImageDetectText": false,
// Detect faces in images and screenshots
"RekognitionImageIndexFaces": true,
// Detect labels in images and screenshots
"RekognitionImageLabels": false,
// Currently unused
"RekognitionImageSearchFaces": false,
// Detect ContentModeration in images and screenshots
"RekognitionImageUnsafeContent": false,
// Run RekognitionVideoSegments to detect shot changes in a video. Either this or IntervalSegments MUST be turned on
"RekognitionVideoSegmentDetection": false,
// Takes a single screenshot at 0 seconds
"ScreenshotAtZero": false,
// Takes a screenshot at every shot change. This will be the first second of each segment, whether that segment is RekognitionVideoSegmentDetection or IntervalSegments
"ScreenshotsAtShotChange": false,
// Take a screenshot on an interval. ScreenshotInterval is defined in application/screenshotSettings under the field screenshotIntervalFrequency
"ScreenshotsOnInterval": true,
// Transcodes the file if it is outside the limits defined in application/mediaconvertSettings -> skipTranscodeDimensions
"Transcode": true,
// Transcription and VTTs generated
"Transcribe": true,
// TranscribeMedical transcriptions and VTTs generated
// Transcribe will take precedence over TranscribeMedical if both
// are enabled
"TranscribeMedical": true,
// Transcription and VTTs are translated to the languages listed in application/nomadSettings -> outputLanguageList
"Translate": true
},
"application/glacierSettings": {
// The number of days we restore an object from Glacier for
"restoreTimeInDays": 7,
// The StorageClass tier we restore to
"restoreTier": "Bulk"
},
"application/liveoperatorSettings": {
// Folder to store saved videos (optional)
"archiveFolderAssetId": "39b1fbdd-b31c-45c7-b546-a1ed0ed2697d",
// Default Pre Roll Asset to load (optional)
"defaultPreRollAssetId": "71995fe7-adae-47fd-ae75-ba2313e3f884",
// Default Post Roll Asset to load (optional)
"defaultPostRollAssetId": "39d58aed-57ad-4a99-8685-be95fdb6f377",
// Archive directory/file formats (optional)
// Names between braces match content definition title or the live operator
// related content title configurations. Any C# date format is allowed.
"archivePrefixFormat": "{date:yyyy}/{date:MM}/{date:dd}/{aircraft registration}-{location}-{tasking}-{date:HHmmss}",
// Whether or not to use secure outputs for any live channels that are created
// using live operator. Default is false (optional)
"useSecureOutput": "false"
},
"application/mediaLiveSettings": {
// Delete Media store files after channel delete (optional/default = true)
"deleteMediaStoreFilesAfterChannelDelete": "true",
// Check to see if we have any orphaned media live channels in AWS or Nomad
// If so clean them up. (optional/default = false)
"cleanupOrphanMediaLiveChannels": "false",
// TODO: Ask Adam
"mediaLiveOutputVod": false,
// TODO: Not sure if this is needed anymore? Check with Adam
"mediaLiveBlackLoopVideoAssetId": "00000000-0000-0000-0000-000000000333",
// How long each archive output file/segmentation should be
// in seconds. (optional/default = 3600)
"archiveOutputSegmentDuration": 180,
// TODO: TBD if this is being used
"mediaLiveOnAirTimeDelayMs": 0,
// Video output settings for archive files (optional)
"archiveOutputProfile": {
"videoBitRate": 5000000,
"name": "UHD output",
"width": 1920,
"audioBitRate": 96000,
"enabled": true,
"height": 1080
},
// Video output settings
"outputProfiles": [
{
"videoBitRate": 5000000,
"name": "UHD output",
"width": 1920,
"audioBitRate": 96000,
"enabled": true,
"height": 1080
},
{
"videoBitRate": 3000000,
"name": "HD output",
"width": 1280,
"audioBitRate": 64000,
"enabled": true,
"height": 720
}
],
// This is a parameter media live requires that defaults to
// 30000 internally if not set. It must be greater than zero.
// (optional/default = 30000)
"failoverInputErrorClearTimeMsec": 30000,
// Value not required but must be greater than 100 if specified.
// (optional/default = 100)
"failoverInputLossThresholdMsec": 100 ,
// If fixed on-air time for scheduled event is min minutes or
// less close to current utc time then the schedule action for event
// will be scheduled as an immediate action. (optional)
"minMinutesBeforeNowUntilOnAirTimeImmediate":
},
// Guest User Share Settings (See deployment guide for specifics on config)
"application/userShareSettings": {
"userShareProfiles": [
{
// The name of the user share profile (i.e. Guest)
"name": "Nomad Guest",
// Content Security Attribute for profile (i.e. Guest, Demo, External)
// Guest is only supported at this time
"contentSecurityAttribute": "Guest",
// The number of hours the user will have to access shared content
// This is optional, defaults to 8 hours
"defaultExpirationInHours": 8,
// Name of the email template to use.
// This name must be configured in emailSettings/Templates
"defaultEmailTemplate": "userInvite",
// Full url to the application's register route
"defaultSiteRegistrationUrl": "https://live.dev-05.demos.media/account/register",
// The allowed applications this share profile can log into
"allowedApplications": ["a3be3566-a27f-4bae-a9c2-f9e067d66367"],
// The guid id of the security group that correlates to the ContentSecurityAttribute
"securityGroup": {
// Matches the contentSecurityAttribute config
"description": "Guest",
// Guid from the new Guest Security Group that was created
"id": "8354ce06-deeb-4da9-a190-af0eca8d9f56"
},
// List of User Share Profile Definitions (i.e. LiveChannels, AssetGroups)
"userShareProfileDefinitions": [
{
// Name of the content definition
"name": "Live Channels",
// Guid of the content definition id
"contentDefinitionId": "bf8ac754-5b8b-4330-b1aa-76f15fb7f673",
// Optional Expiration in hours, if you want to override default
"expirationInHours": 8,
// Optional Email template for invitation, if you want to override default
"emailTemplate": "userInvite",
// Optional Site Registration Url for invitation, if you want to override default
"siteRegistrationUrl": "https://live.dev-05.demos.media/account/register"
}
]
}
]
},
"application/mediaconvertSettings": {
// We skip transcoding if the dimensions are smaller than this and the format is mp4
"skipTranscodeDimensions": {
"maxHeight": 1080,
"format": ".mp4",
"maxWidth": 1920
},
// This is the default AWS mediaconvert profile we use
"defaultProfile": "default"
},
"application/nomadSettings": {
// Used to kick off users if they are sharing logins across IP addresses
"enablePing": true,
// Transcription and VTTs are translated to the languages listed in application/nomadSettings -> outputLanguageList
"videoExtensions": [
".mp4",
".mov",
".m4v",
".mxf",
".mpg",
".mkv",
".avi",
".mts",
".m2ts",
".ts",
".asf",
".m4p",
".mp2",
".mpeg",
".mpe",
".mpv",
".m2v",
".flv"
],
// Transcription and VTTs are translated to the languages listed in application/nomadSettings -> outputLanguageList
"imageExtensions": [
".jpg",
".jpe",
".bmp",
".gif",
".png",
".svg",
".jpeg",
".tiff",
".imf",
".webp",
".raw",
".iiq",
".tif",
".jfif",
".j2k",
".j2c",
".jpc",
".jls",
".cr2",
".nef",
".x3f",
".sr2"
],
// Transcription and VTTs are translated to the languages listed in application/nomadSettings -> outputLanguageList
"documentExtensions": [".pdf", ".docx", ".doc"],
// Transcription and VTTs are translated to the languages listed in application/nomadSettings -> outputLanguageList
"audioExtensions": [
".mp3",
".wav",
".flac",
".aac",
".aiff",
".aif",
".m4a",
".ogg"
],
// Transcription and VTTs are translated to the languages listed in application/nomadSettings -> outputLanguageList
"manifestExtensions": [".hls", ".mpd"],
// Transcription and VTTs are translated to the languages listed in application/nomadSettings -> outputLanguageList
"badCodecs": ["cinepak"],
// Transcription and VTTs are translated to the languages listed in application/nomadSettings -> outputLanguageList
"renamingLambda": "",
// Transcription and VTTs are translated to the languages listed in application/nomadSettings -> outputLanguageList
"intervalSegmentLengthInSeconds": 60.0,
// Transcription and VTTs are translated to the languages listed in application/nomadSettings -> outputLanguageList
"defaultLanguageCode": "c66131cd-27fc-4f83-9b89-b57575ac0ed8",
// Transcription and VTTs are translated to the languages listed in application/nomadSettings -> outputLanguageList
"outputLanguageList": "en, es",
// Transcription and VTTs are translated to the languages listed in application/nomadSettings -> outputLanguageList
"s3CopyObjectPartSize": 1073741824,
// Intelligent Programming Public Content Folder Asset Id
"publicContentId": "564c5a08-74dd-4197-b1ef-3453a929c9f8",
// The full URL to the image used in the top left corner for branding. Note it
// works best as a wider image
"logoImageUrl": "https://example.demos.media/config/guid/logo.svg",
},
"cloudFrontMappings": [
{
"bucketName": "nomad-demo3-system-metadata-1f9amk911utnz",
"prefix": "pmc",
"restrict": false,
"url": "https://content.demo3.demos.media"
},
{
"bucketName": "nomad-demo3-system-content-1csq36t2m3luu",
"prefix": "content/public",
"restrict": false,
"url": "https://content.demo3.demos.media"
},
{
"bucketName": "nomad-demo3-system-metadataarchive-1xauex028sgwt",
"prefix": "ma",
"restrict": true,
"url": "https://content.demo3.demos.media"
},
{
"bucketName": "nomad-demo3-system-metadata-1f9amk911utnz",
"prefix": "mc",
"restrict": true,
"url": "https://content.demo3.demos.media"
},
{
"bucketName": "nomad-demo3-system-content-1csq36t2m3luu",
"prefix": "content",
"useCidrSecurity": true,
"restrict": true,
"url": "https://content.demo3.demos.media"
}
]
}BrightCove Notes
| Property | Type | Default | Required | Description |
|---|---|---|---|---|
application | string | — | Yes | The application name identifier |
customer | string | — | Yes | The customer/project prefix |
siteName | string | — | Yes | Display name shown in portal title and login screen |
logoImageUrl | URL string | — | No | Full URL to branding logo image (works best as a wide image) |
loginLogoImageUrl | URL string | — | No | Full URL to the logo shown on the login screen |
lookupsUrl | URL string | — | No | URL to the lookups.json config file |
configBasePath | URL string | — | No | Base path for configuration resources |
Note: The system configuration file contains many additional properties. Refer to your environment's
{projectPrefix}.config.jsonin the S3 system bucket for the full list of current settings.
{
"AccountId": "2800497287112",
"ClientId": "32dba9fa-1687-4e31-8cb7-0d8f2bd352ed",
"ClientSecret": "o4oX/9TDbZSaR+jqsDuMX7vRMAmsLO3pDEDnsXJagmhSwb4lYzBGpZ9fFFlARX8/CU+9WBWG6ukUew1/dUClig=="
}