/* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ /* * Do not modify this file. This file is generated from the mediaconvert-2017-08-29.normal.json service model. */ using System; using System.Collections.Generic; using System.Xml.Serialization; using System.Text; using System.IO; using System.Net; using Amazon.Runtime; using Amazon.Runtime.Internal; namespace Amazon.MediaConvert.Model { /// /// Settings related to your HLS output package. For more information, see https://docs.aws.amazon.com/mediaconvert/latest/ug/outputs-file-ABR.html. /// public partial class HlsGroupSettings { private List _additionalManifests = new List(); private List _adMarkers = new List(); private HlsAudioOnlyHeader _audioOnlyHeader; private string _baseUrl; private List _captionLanguageMappings = new List(); private HlsCaptionLanguageSetting _captionLanguageSetting; private HlsCaptionSegmentLengthControl _captionSegmentLengthControl; private HlsClientCache _clientCache; private HlsCodecSpecification _codecSpecification; private string _destination; private DestinationSettings _destinationSettings; private HlsDirectoryStructure _directoryStructure; private HlsEncryptionSettings _encryption; private HlsImageBasedTrickPlay _imageBasedTrickPlay; private HlsImageBasedTrickPlaySettings _imageBasedTrickPlaySettings; private HlsManifestCompression _manifestCompression; private HlsManifestDurationFormat _manifestDurationFormat; private double? _minFinalSegmentLength; private int? _minSegmentLength; private HlsOutputSelection _outputSelection; private HlsProgramDateTime _programDateTime; private int? _programDateTimePeriod; private HlsProgressiveWriteHlsManifest _progressiveWriteHlsManifest; private HlsSegmentControl _segmentControl; private int? _segmentLength; private HlsSegmentLengthControl _segmentLengthControl; private int? _segmentsPerSubdirectory; private HlsStreamInfResolution _streamInfResolution; private HlsTargetDurationCompatibilityMode _targetDurationCompatibilityMode; private HlsTimedMetadataId3Frame _timedMetadataId3Frame; private int? _timedMetadataId3Period; private int? _timestampDeltaMilliseconds; /// /// Gets and sets the property AdditionalManifests. By default, the service creates one /// top-level .m3u8 HLS manifest for each HLS output group in your job. This default manifest /// references every output in the output group. To create additional top-level manifests /// that reference a subset of the outputs in the output group, specify a list of them /// here. /// public List AdditionalManifests { get { return this._additionalManifests; } set { this._additionalManifests = value; } } // Check to see if AdditionalManifests property is set internal bool IsSetAdditionalManifests() { return this._additionalManifests != null && this._additionalManifests.Count > 0; } /// /// Gets and sets the property AdMarkers. Choose one or more ad marker types to decorate /// your Apple HLS manifest. This setting does not determine whether SCTE-35 markers appear /// in the outputs themselves. /// public List AdMarkers { get { return this._adMarkers; } set { this._adMarkers = value; } } // Check to see if AdMarkers property is set internal bool IsSetAdMarkers() { return this._adMarkers != null && this._adMarkers.Count > 0; } /// /// Gets and sets the property AudioOnlyHeader. Ignore this setting unless you are using /// FairPlay DRM with Verimatrix and you encounter playback issues. Keep the default value, /// Include, to output audio-only headers. Choose Exclude to remove the audio-only headers /// from your audio segments. /// public HlsAudioOnlyHeader AudioOnlyHeader { get { return this._audioOnlyHeader; } set { this._audioOnlyHeader = value; } } // Check to see if AudioOnlyHeader property is set internal bool IsSetAudioOnlyHeader() { return this._audioOnlyHeader != null; } /// /// Gets and sets the property BaseUrl. A partial URI prefix that will be prepended to /// each output in the media .m3u8 file. Can be used if base manifest is delivered from /// a different URL than the main .m3u8 file. /// public string BaseUrl { get { return this._baseUrl; } set { this._baseUrl = value; } } // Check to see if BaseUrl property is set internal bool IsSetBaseUrl() { return this._baseUrl != null; } /// /// Gets and sets the property CaptionLanguageMappings. Language to be used on Caption /// outputs /// public List CaptionLanguageMappings { get { return this._captionLanguageMappings; } set { this._captionLanguageMappings = value; } } // Check to see if CaptionLanguageMappings property is set internal bool IsSetCaptionLanguageMappings() { return this._captionLanguageMappings != null && this._captionLanguageMappings.Count > 0; } /// /// Gets and sets the property CaptionLanguageSetting. Applies only to 608 Embedded output /// captions. Insert: Include CLOSED-CAPTIONS lines in the manifest. Specify at least /// one language in the CC1 Language Code field. One CLOSED-CAPTION line is added for /// each Language Code you specify. Make sure to specify the languages in the order in /// which they appear in the original source (if the source is embedded format) or the /// order of the caption selectors (if the source is other than embedded). Otherwise, /// languages in the manifest will not match up properly with the output captions. None: /// Include CLOSED-CAPTIONS=NONE line in the manifest. Omit: Omit any CLOSED-CAPTIONS /// line from the manifest. /// public HlsCaptionLanguageSetting CaptionLanguageSetting { get { return this._captionLanguageSetting; } set { this._captionLanguageSetting = value; } } // Check to see if CaptionLanguageSetting property is set internal bool IsSetCaptionLanguageSetting() { return this._captionLanguageSetting != null; } /// /// Gets and sets the property CaptionSegmentLengthControl. Set Caption segment length /// control to Match video to create caption segments that align with the video segments /// from the first video output in this output group. For example, if the video segments /// are 2 seconds long, your WebVTT segments will also be 2 seconds long. Keep the default /// setting, Large segments to create caption segments that are 300 seconds long. /// public HlsCaptionSegmentLengthControl CaptionSegmentLengthControl { get { return this._captionSegmentLengthControl; } set { this._captionSegmentLengthControl = value; } } // Check to see if CaptionSegmentLengthControl property is set internal bool IsSetCaptionSegmentLengthControl() { return this._captionSegmentLengthControl != null; } /// /// Gets and sets the property ClientCache. Disable this setting only when your workflow /// requires the #EXT-X-ALLOW-CACHE:no tag. Otherwise, keep the default value Enabled /// and control caching in your video distribution set up. For example, use the Cache-Control /// http header. /// public HlsClientCache ClientCache { get { return this._clientCache; } set { this._clientCache = value; } } // Check to see if ClientCache property is set internal bool IsSetClientCache() { return this._clientCache != null; } /// /// Gets and sets the property CodecSpecification. Specification to use (RFC-6381 or the /// default RFC-4281) during m3u8 playlist generation. /// public HlsCodecSpecification CodecSpecification { get { return this._codecSpecification; } set { this._codecSpecification = value; } } // Check to see if CodecSpecification property is set internal bool IsSetCodecSpecification() { return this._codecSpecification != null; } /// /// Gets and sets the property Destination. Use Destination to specify the S3 output location /// and the output filename base. Destination accepts format identifiers. If you do not /// specify the base filename in the URI, the service will use the filename of the input /// file. If your job has multiple inputs, the service uses the filename of the first /// input file. /// public string Destination { get { return this._destination; } set { this._destination = value; } } // Check to see if Destination property is set internal bool IsSetDestination() { return this._destination != null; } /// /// Gets and sets the property DestinationSettings. Settings associated with the destination. /// Will vary based on the type of destination /// public DestinationSettings DestinationSettings { get { return this._destinationSettings; } set { this._destinationSettings = value; } } // Check to see if DestinationSettings property is set internal bool IsSetDestinationSettings() { return this._destinationSettings != null; } /// /// Gets and sets the property DirectoryStructure. Indicates whether segments should be /// placed in subdirectories. /// public HlsDirectoryStructure DirectoryStructure { get { return this._directoryStructure; } set { this._directoryStructure = value; } } // Check to see if DirectoryStructure property is set internal bool IsSetDirectoryStructure() { return this._directoryStructure != null; } /// /// Gets and sets the property Encryption. DRM settings. /// public HlsEncryptionSettings Encryption { get { return this._encryption; } set { this._encryption = value; } } // Check to see if Encryption property is set internal bool IsSetEncryption() { return this._encryption != null; } /// /// Gets and sets the property ImageBasedTrickPlay. Specify whether MediaConvert generates /// images for trick play. Keep the default value, None, to not generate any images. Choose /// Thumbnail to generate tiled thumbnails. Choose Thumbnail and full frame to generate /// tiled thumbnails and full-resolution images of single frames. MediaConvert creates /// a child manifest for each set of images that you generate and adds corresponding entries /// to the parent manifest. A common application for these images is Roku trick mode. /// The thumbnails and full-frame images that MediaConvert creates with this feature are /// compatible with this Roku specification: https://developer.roku.com/docs/developer-program/media-playback/trick-mode/hls-and-dash.md /// public HlsImageBasedTrickPlay ImageBasedTrickPlay { get { return this._imageBasedTrickPlay; } set { this._imageBasedTrickPlay = value; } } // Check to see if ImageBasedTrickPlay property is set internal bool IsSetImageBasedTrickPlay() { return this._imageBasedTrickPlay != null; } /// /// Gets and sets the property ImageBasedTrickPlaySettings. Tile and thumbnail settings /// applicable when imageBasedTrickPlay is ADVANCED /// public HlsImageBasedTrickPlaySettings ImageBasedTrickPlaySettings { get { return this._imageBasedTrickPlaySettings; } set { this._imageBasedTrickPlaySettings = value; } } // Check to see if ImageBasedTrickPlaySettings property is set internal bool IsSetImageBasedTrickPlaySettings() { return this._imageBasedTrickPlaySettings != null; } /// /// Gets and sets the property ManifestCompression. When set to GZIP, compresses HLS playlist. /// public HlsManifestCompression ManifestCompression { get { return this._manifestCompression; } set { this._manifestCompression = value; } } // Check to see if ManifestCompression property is set internal bool IsSetManifestCompression() { return this._manifestCompression != null; } /// /// Gets and sets the property ManifestDurationFormat. Indicates whether the output manifest /// should use floating point values for segment duration. /// public HlsManifestDurationFormat ManifestDurationFormat { get { return this._manifestDurationFormat; } set { this._manifestDurationFormat = value; } } // Check to see if ManifestDurationFormat property is set internal bool IsSetManifestDurationFormat() { return this._manifestDurationFormat != null; } /// /// Gets and sets the property MinFinalSegmentLength. Keep this setting at the default /// value of 0, unless you are troubleshooting a problem with how devices play back the /// end of your video asset. If you know that player devices are hanging on the final /// segment of your video because the length of your final segment is too short, use this /// setting to specify a minimum final segment length, in seconds. Choose a value that /// is greater than or equal to 1 and less than your segment length. When you specify /// a value for this setting, the encoder will combine any final segment that is shorter /// than the length that you specify with the previous segment. For example, your segment /// length is 3 seconds and your final segment is .5 seconds without a minimum final segment /// length; when you set the minimum final segment length to 1, your final segment is /// 3.5 seconds. /// public double MinFinalSegmentLength { get { return this._minFinalSegmentLength.GetValueOrDefault(); } set { this._minFinalSegmentLength = value; } } // Check to see if MinFinalSegmentLength property is set internal bool IsSetMinFinalSegmentLength() { return this._minFinalSegmentLength.HasValue; } /// /// Gets and sets the property MinSegmentLength. When set, Minimum Segment Size is enforced /// by looking ahead and back within the specified range for a nearby avail and extending /// the segment size if needed. /// [AWSProperty(Min=0, Max=2147483647)] public int MinSegmentLength { get { return this._minSegmentLength.GetValueOrDefault(); } set { this._minSegmentLength = value; } } // Check to see if MinSegmentLength property is set internal bool IsSetMinSegmentLength() { return this._minSegmentLength.HasValue; } /// /// Gets and sets the property OutputSelection. Indicates whether the .m3u8 manifest file /// should be generated for this HLS output group. /// public HlsOutputSelection OutputSelection { get { return this._outputSelection; } set { this._outputSelection = value; } } // Check to see if OutputSelection property is set internal bool IsSetOutputSelection() { return this._outputSelection != null; } /// /// Gets and sets the property ProgramDateTime. Includes or excludes EXT-X-PROGRAM-DATE-TIME /// tag in .m3u8 manifest files. The value is calculated as follows: either the program /// date and time are initialized using the input timecode source, or the time is initialized /// using the input timecode source and the date is initialized using the timestamp_offset. /// public HlsProgramDateTime ProgramDateTime { get { return this._programDateTime; } set { this._programDateTime = value; } } // Check to see if ProgramDateTime property is set internal bool IsSetProgramDateTime() { return this._programDateTime != null; } /// /// Gets and sets the property ProgramDateTimePeriod. Period of insertion of EXT-X-PROGRAM-DATE-TIME /// entry, in seconds. /// [AWSProperty(Min=0, Max=3600)] public int ProgramDateTimePeriod { get { return this._programDateTimePeriod.GetValueOrDefault(); } set { this._programDateTimePeriod = value; } } // Check to see if ProgramDateTimePeriod property is set internal bool IsSetProgramDateTimePeriod() { return this._programDateTimePeriod.HasValue; } /// /// Gets and sets the property ProgressiveWriteHlsManifest. Specify whether MediaConvert /// generates HLS manifests while your job is running or when your job is complete. To /// generate HLS manifests while your job is running: Choose Enabled. Use if you want /// to play back your content as soon as it's available. MediaConvert writes the parent /// and child manifests after the first three media segments are written to your destination /// S3 bucket. It then writes new updated manifests after each additional segment is written. /// The parent manifest includes the latest BANDWIDTH and AVERAGE-BANDWIDTH attributes, /// and child manifests include the latest available media segment. When your job completes, /// the final child playlists include an EXT-X-ENDLIST tag. To generate HLS manifests /// only when your job completes: Choose Disabled. /// public HlsProgressiveWriteHlsManifest ProgressiveWriteHlsManifest { get { return this._progressiveWriteHlsManifest; } set { this._progressiveWriteHlsManifest = value; } } // Check to see if ProgressiveWriteHlsManifest property is set internal bool IsSetProgressiveWriteHlsManifest() { return this._progressiveWriteHlsManifest != null; } /// /// Gets and sets the property SegmentControl. When set to SINGLE_FILE, emits program /// as a single media resource (.ts) file, uses #EXT-X-BYTERANGE tags to index segment /// for playback. /// public HlsSegmentControl SegmentControl { get { return this._segmentControl; } set { this._segmentControl = value; } } // Check to see if SegmentControl property is set internal bool IsSetSegmentControl() { return this._segmentControl != null; } /// /// Gets and sets the property SegmentLength. Specify the length, in whole seconds, of /// each segment. When you don't specify a value, MediaConvert defaults to 10. Related /// settings: Use Segment length control to specify whether the encoder enforces this /// value strictly. Use Segment control to specify whether MediaConvert creates separate /// segment files or one content file that has metadata to mark the segment boundaries. /// [AWSProperty(Min=1, Max=2147483647)] public int SegmentLength { get { return this._segmentLength.GetValueOrDefault(); } set { this._segmentLength = value; } } // Check to see if SegmentLength property is set internal bool IsSetSegmentLength() { return this._segmentLength.HasValue; } /// /// Gets and sets the property SegmentLengthControl. Specify how you want MediaConvert /// to determine the segment length. Choose Exact to have the encoder use the exact length /// that you specify with the setting Segment length. This might result in extra I-frames. /// Choose Multiple of GOP to have the encoder round up the segment lengths to match the /// next GOP boundary. /// public HlsSegmentLengthControl SegmentLengthControl { get { return this._segmentLengthControl; } set { this._segmentLengthControl = value; } } // Check to see if SegmentLengthControl property is set internal bool IsSetSegmentLengthControl() { return this._segmentLengthControl != null; } /// /// Gets and sets the property SegmentsPerSubdirectory. Specify the number of segments /// to write to a subdirectory before starting a new one. You must also set Directory /// structure to Subdirectory per stream for this setting to have an effect. /// [AWSProperty(Min=1, Max=2147483647)] public int SegmentsPerSubdirectory { get { return this._segmentsPerSubdirectory.GetValueOrDefault(); } set { this._segmentsPerSubdirectory = value; } } // Check to see if SegmentsPerSubdirectory property is set internal bool IsSetSegmentsPerSubdirectory() { return this._segmentsPerSubdirectory.HasValue; } /// /// Gets and sets the property StreamInfResolution. Include or exclude RESOLUTION attribute /// for video in EXT-X-STREAM-INF tag of variant manifest. /// public HlsStreamInfResolution StreamInfResolution { get { return this._streamInfResolution; } set { this._streamInfResolution = value; } } // Check to see if StreamInfResolution property is set internal bool IsSetStreamInfResolution() { return this._streamInfResolution != null; } /// /// Gets and sets the property TargetDurationCompatibilityMode. When set to LEGACY, the /// segment target duration is always rounded up to the nearest integer value above its /// current value in seconds. When set to SPEC\\_COMPLIANT, the segment target duration /// is rounded up to the nearest integer value if fraction seconds are greater than or /// equal to 0.5 (>= 0.5) and rounded down if less than 0.5 (< 0.5). You may need to use /// LEGACY if your client needs to ensure that the target duration is always longer than /// the actual duration of the segment. Some older players may experience interrupted /// playback when the actual duration of a track in a segment is longer than the target /// duration. /// public HlsTargetDurationCompatibilityMode TargetDurationCompatibilityMode { get { return this._targetDurationCompatibilityMode; } set { this._targetDurationCompatibilityMode = value; } } // Check to see if TargetDurationCompatibilityMode property is set internal bool IsSetTargetDurationCompatibilityMode() { return this._targetDurationCompatibilityMode != null; } /// /// Gets and sets the property TimedMetadataId3Frame. Specify the type of the ID3 frame /// to use for ID3 timestamps in your output. To include ID3 timestamps: Specify PRIV /// or TDRL and set ID3 metadata to Passthrough. To exclude ID3 timestamps: Set ID3 timestamp /// frame type to None. /// public HlsTimedMetadataId3Frame TimedMetadataId3Frame { get { return this._timedMetadataId3Frame; } set { this._timedMetadataId3Frame = value; } } // Check to see if TimedMetadataId3Frame property is set internal bool IsSetTimedMetadataId3Frame() { return this._timedMetadataId3Frame != null; } /// /// Gets and sets the property TimedMetadataId3Period. Specify the interval in seconds /// to write ID3 timestamps in your output. The first timestamp starts at the output timecode /// and date, and increases incrementally with each ID3 timestamp. To use the default /// interval of 10 seconds: Leave blank. To include this metadata in your output: Set /// ID3 timestamp frame type to PRIV or TDRL, and set ID3 metadata to Passthrough. /// [AWSProperty(Min=-2147483648, Max=2147483647)] public int TimedMetadataId3Period { get { return this._timedMetadataId3Period.GetValueOrDefault(); } set { this._timedMetadataId3Period = value; } } // Check to see if TimedMetadataId3Period property is set internal bool IsSetTimedMetadataId3Period() { return this._timedMetadataId3Period.HasValue; } /// /// Gets and sets the property TimestampDeltaMilliseconds. Provides an extra millisecond /// delta offset to fine tune the timestamps. /// [AWSProperty(Min=-2147483648, Max=2147483647)] public int TimestampDeltaMilliseconds { get { return this._timestampDeltaMilliseconds.GetValueOrDefault(); } set { this._timestampDeltaMilliseconds = value; } } // Check to see if TimestampDeltaMilliseconds property is set internal bool IsSetTimestampDeltaMilliseconds() { return this._timestampDeltaMilliseconds.HasValue; } } }