source/controlplaneapi/infrastructure/lambda/Replay/shared/HlsGenerator.py [155:253]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        inputs = []

        # Only chunk, so will have Start and End Clipping time
        if len(chunks) == 1:
            inputClippings = []
            inputClip = {}
            ic = {}

            endtime = self._dataplane.get_mediaconvert_clip_format(end_time, program=self.__program, event=self.__eventName, profile=self.__profile, frame_rate=self.__framerate)
            starttime = self._dataplane.get_mediaconvert_clip_format(start_time, program=self.__program, event=self.__eventName, profile=self.__profile, frame_rate=self.__framerate)

            #endtime, starttime = self._dataplane.get_mediaconvert_clip_format(end_time), self._dataplane.get_mediaconvert_clip_format(start_time)
            ic['EndTimecode'] = str(endtime)
            ic['StartTimecode'] = str(starttime)

            #If we have a single Chunk we don't need the Endtime Configured if it is less than Start time. Remove it.
            if datetime.strptime(endtime, "%H:%M:%S:%f") < datetime.strptime(starttime, "%H:%M:%S:%f"):
                ic.pop('EndTimecode', None)

            #ic['EndTimecode'], ic['StartTimecode'] = get_clip_timings(segment, event)
            inputClippings.append(ic)
            inputClip['InputClippings'] = inputClippings
        
            #------------- Update MediaConvert AudioSelectors Input -------------

            # Leave the default Input AudioSelectors as is if we are dealing with default Track or only one.
            # If we have multiple AudioTracks, this lambda will be provided with one.
            
            inputClip['AudioSelectors'] =   {
                                                "Audio Selector 1": {
                                                    "Tracks": [
                                                        int(audioTrack)
                                                    ],
                                                    "DefaultSelection": "NOT_DEFAULT",
                                                    "SelectorType": "TRACK"
                                                }
                                            }

            inputClip['AudioSelectorGroups'] =  {
                                                    "Audio Selector Group 1": {
                                                        "AudioSelectorNames": [
                                                        "Audio Selector 1"
                                                        ]
                                                    }
                                                }
                                                
            #------------- Update MediaConvert AudioSelectors Input Ends -------------
            
            inputClip['VideoSelector'] = {}
            inputClip['TimecodeSource'] = "ZEROBASED"
            inputClip['FileInput'] = f"s3://{chunks[0]['S3Bucket']}/{chunks[0]['S3Key']}"
            inputs.append(inputClip)
        elif len(chunks) > 1:
            for chunk_index in range(len(chunks)):
                ic = {}
                inputClippings = []
                inputClip = {}
                if chunk_index == 0:    # First Chunk
                    ic['StartTimecode'] = self._dataplane.get_mediaconvert_clip_format(start_time, program=self.__program, event=self.__eventName, profile=self.__profile, frame_rate=self.__framerate)
                    
                    inputClippings.append(ic)
                    inputClip['InputClippings'] = inputClippings
                elif chunk_index == len(chunks)-1:  # Last Chunk
                    ic['EndTimecode'] = self._dataplane.get_mediaconvert_clip_format(end_time, program=self.__program, event=self.__eventName, profile=self.__profile, frame_rate=self.__framerate)
                    inputClippings.append(ic)
                    inputClip['InputClippings'] = inputClippings
                else:   # Sandwitch Chunks have no clippings
                    inputClip['InputClippings'] = []

                
                #------------- Update MediaConvert AudioSelectors Input -------------

                # Leave the default Input AudioSelectors as is if we are dealing with default Track or only one.
                # If we have multiple AudioTracks, this lambda will be provided with one.
                inputClip['AudioSelectors'] =   {
                                                    "Audio Selector 1": {
                                                        "Tracks": [
                                                            int(audioTrack)
                                                        ],
                                                        "DefaultSelection": "NOT_DEFAULT",
                                                        "SelectorType": "TRACK"
                                                    }
                                                }

                inputClip['AudioSelectorGroups'] =  {
                                                        "Audio Selector Group 1": {
                                                            "AudioSelectorNames": [
                                                            "Audio Selector 1"
                                                            ]
                                                        }
                                                    }
                                                    
            #------------- Update MediaConvert AudioSelectors Input Ends -------------
                inputClip['VideoSelector'] = {}
                inputClip['TimecodeSource'] = "ZEROBASED"
                inputClip['FileInput'] = f"s3://{chunks[chunk_index]['S3Bucket']}/{chunks[chunk_index]['S3Key']}"
                inputs.append(inputClip)

        return inputs
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



source/controlplaneapi/infrastructure/lambda/Replay/shared/Mp4Generator.py [150:248]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        inputs = []

        # Only chunk, so will have Start and End Clipping time
        if len(chunks) == 1:
            inputClippings = []
            inputClip = {}
            ic = {}

            endtime = self._dataplane.get_mediaconvert_clip_format(end_time, program=self.__program, event=self.__eventName, profile=self.__profile, frame_rate=self.__framerate)
            starttime = self._dataplane.get_mediaconvert_clip_format(start_time, program=self.__program, event=self.__eventName, profile=self.__profile, frame_rate=self.__framerate)

            #endtime, starttime = self._dataplane.get_mediaconvert_clip_format(end_time), self._dataplane.get_mediaconvert_clip_format(start_time)
            ic['EndTimecode'] = str(endtime)
            ic['StartTimecode'] = str(starttime)

            #If we have a single Chunk we don't need the Endtime Configured if it is less than Start time. Remove it.
            if datetime.strptime(endtime, "%H:%M:%S:%f") < datetime.strptime(starttime, "%H:%M:%S:%f"):
                ic.pop('EndTimecode', None)

            #ic['EndTimecode'], ic['StartTimecode'] = get_clip_timings(segment, event)
            inputClippings.append(ic)
            inputClip['InputClippings'] = inputClippings
        
            #------------- Update MediaConvert AudioSelectors Input -------------

            # Leave the default Input AudioSelectors as is if we are dealing with default Track or only one.
            # If we have multiple AudioTracks, this lambda will be provided with one.
            
            inputClip['AudioSelectors'] =   {
                                                "Audio Selector 1": {
                                                    "Tracks": [
                                                        int(audioTrack)
                                                    ],
                                                    "DefaultSelection": "NOT_DEFAULT",
                                                    "SelectorType": "TRACK"
                                                }
                                            }

            inputClip['AudioSelectorGroups'] =  {
                                                    "Audio Selector Group 1": {
                                                        "AudioSelectorNames": [
                                                        "Audio Selector 1"
                                                        ]
                                                    }
                                                }
                                                
            #------------- Update MediaConvert AudioSelectors Input Ends -------------
            
            inputClip['VideoSelector'] = {}
            inputClip['TimecodeSource'] = "ZEROBASED"
            inputClip['FileInput'] = f"s3://{chunks[0]['S3Bucket']}/{chunks[0]['S3Key']}"
            inputs.append(inputClip)
        elif len(chunks) > 1:
            for chunk_index in range(len(chunks)):
                ic = {}
                inputClippings = []
                inputClip = {}
                if chunk_index == 0:    # First Chunk
                    ic['StartTimecode'] = self._dataplane.get_mediaconvert_clip_format(start_time, program=self.__program, event=self.__eventName, profile=self.__profile, frame_rate=self.__framerate)
                    
                    inputClippings.append(ic)
                    inputClip['InputClippings'] = inputClippings
                elif chunk_index == len(chunks)-1:  # Last Chunk
                    ic['EndTimecode'] = self._dataplane.get_mediaconvert_clip_format(end_time, program=self.__program, event=self.__eventName, profile=self.__profile, frame_rate=self.__framerate)
                    inputClippings.append(ic)
                    inputClip['InputClippings'] = inputClippings
                else:   # Sandwitch Chunks have no clippings
                    inputClip['InputClippings'] = []

                
                #------------- Update MediaConvert AudioSelectors Input -------------

                # Leave the default Input AudioSelectors as is if we are dealing with default Track or only one.
                # If we have multiple AudioTracks, this lambda will be provided with one.
                inputClip['AudioSelectors'] =   {
                                                    "Audio Selector 1": {
                                                        "Tracks": [
                                                            int(audioTrack)
                                                        ],
                                                        "DefaultSelection": "NOT_DEFAULT",
                                                        "SelectorType": "TRACK"
                                                    }
                                                }

                inputClip['AudioSelectorGroups'] =  {
                                                        "Audio Selector Group 1": {
                                                            "AudioSelectorNames": [
                                                            "Audio Selector 1"
                                                            ]
                                                        }
                                                    }
                                                    
            #------------- Update MediaConvert AudioSelectors Input Ends -------------
                inputClip['VideoSelector'] = {}
                inputClip['TimecodeSource'] = "ZEROBASED"
                inputClip['FileInput'] = f"s3://{chunks[chunk_index]['S3Bucket']}/{chunks[chunk_index]['S3Key']}"
                inputs.append(inputClip)

        return inputs
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



