@ -105,14 +105,16 @@ class MediaDescriptor:
def setDefaultSubTrack ( self , trackType : TrackType , subIndex : int ) :
def setDefaultSubTrack ( self , trackType : TrackType , subIndex : int ) :
for t in self . getAllTrackDescriptors ( ) :
# for t in self.getAllTrackDescriptors():
for t in self . getTrackDescriptors ( ) :
if t . getType ( ) == trackType :
if t . getType ( ) == trackType :
t . setDispositionFlag (
t . setDispositionFlag (
TrackDisposition . DEFAULT , t . getSubIndex ( ) == int ( subIndex )
TrackDisposition . DEFAULT , t . getSubIndex ( ) == int ( subIndex )
)
)
def setForcedSubTrack ( self , trackType : TrackType , subIndex : int ) :
def setForcedSubTrack ( self , trackType : TrackType , subIndex : int ) :
for t in self . getAllTrackDescriptors ( ) :
# for t in self.getAllTrackDescriptors():
for t in self . getTrackDescriptors ( ) :
if t . getType ( ) == trackType :
if t . getType ( ) == trackType :
t . setDispositionFlag (
t . setDispositionFlag (
TrackDisposition . FORCED , t . getSubIndex ( ) == int ( subIndex )
TrackDisposition . FORCED , t . getSubIndex ( ) == int ( subIndex )
@ -188,7 +190,8 @@ class MediaDescriptor:
def applySourceIndices ( self , sourceMediaDescriptor : Self ) :
def applySourceIndices ( self , sourceMediaDescriptor : Self ) :
sourceTrackDescriptors = sourceMediaDescriptor . getAllTrackDescriptors ( )
# sourceTrackDescriptors = sourceMediaDescriptor.getAllTrackDescriptors()
sourceTrackDescriptors = sourceMediaDescriptor . getTrackDescriptors ( )
numTrackDescriptors = len ( self . __trackDescriptors )
numTrackDescriptors = len ( self . __trackDescriptors )
if len ( sourceTrackDescriptors ) != numTrackDescriptors :
if len ( sourceTrackDescriptors ) != numTrackDescriptors :
@ -283,9 +286,9 @@ class MediaDescriptor:
tdList [ trackIndex ] . setIndex ( trackIndex )
tdList [ trackIndex ] . setIndex ( trackIndex )
def getAllTrackDescriptors ( self ) :
# def getAllTrackDescriptors(self) :
""" Returns all track descriptors sorted by type: video, audio then subtitles """
# """ Returns all track descriptors sorted by type: video, audio then subtitles"""
return self . getVideoTracks ( ) + self . getAudioTracks ( ) + self . getSubtitleTracks ( )
# return self.getVideoTracks() + self.getAudioTracks() + self.getSubtitleTracks()
def getTrackDescriptors ( self ,
def getTrackDescriptors ( self ,
@ -345,41 +348,48 @@ class MediaDescriptor:
inputMappingTokens = [ ]
inputMappingTokens = [ ]
filePointer = 1
sortedTrackDescriptors = sorted ( self . __trackDescriptors , key = lambda d : d . getIndex ( ) )
for trackIndex in range ( len ( self . __trackDescriptors ) ) :
td : TrackDescriptor = self . __trackDescriptors [ trackIndex ]
# raise click.ClickException(' '.join([f"\nindex={td.getIndex()} subIndex={td.getSubIndex()} srcIndex={td.getSourceIndex()} type={td.getType().label()}" for td in self.__trackDescriptors]))
stdi = self . __trackDescriptors [ td . getSourceIndex ( ) ] . getIndex ( )
filePointer = 1
stdsi = self . __trackDescriptors [ td . getSourceIndex ( ) ] . getSubIndex ( )
for trackIndex in range ( len ( sortedTrackDescriptors ) ) :
t rackType = td . getType ( )
t d: TrackDescriptor = sortedTrackDescriptors [ trackIndex ]
if ( trackType == TrackType . VIDEO or not only_video ) :
if td . getCodec ( ) != TrackCodec . PNG :
importedFilePath = td . getExternalSourceFilePath ( )
stdi = sortedTrackDescriptors [ td . getSourceIndex ( ) ] . getIndex ( )
stdsi = sortedTrackDescriptors [ td . getSourceIndex ( ) ] . getSubIndex ( )
if use_sub_index :
trackType = td . getType ( )
if importedFilePath :
# if ((trackType == TrackType.VIDEO and td.getCodec() != TrackCodec.PNG) or not only_video):
if ( trackType == TrackType . VIDEO or not only_video ) :
inputMappingTokens + = [
importedFilePath = td . getExternalSourceFilePath ( )
" -map " ,
f " { filePointer } : { trackType . indicator ( ) } :0 " ,
]
filePointer + = 1
else :
if use_sub_index :
if importedFilePath :
if td . getCodec ( ) != TrackCodec . PGS :
inputMappingTokens + = [
inputMappingTokens + = [
" -map " ,
" -map " ,
f " 0 :{ trackType . indicator ( ) } : { stdsi } " ,
f " { filePointer } :{ trackType . indicator ( ) } : 0 " ,
]
]
filePointer + = 1
else :
if td . getCodec ( ) != TrackCodec . PGS :
inputMappingTokens + = [
" -map " ,
f " 0: { trackType . indicator ( ) } : { stdsi } " ,
]
else :
else :
if td . getCodec ( ) != TrackCodec . PGS :
if td . getCodec ( ) != TrackCodec . PGS :
inputMappingTokens + = [ " -map " , f " 0: { stdi } " ]
inputMappingTokens + = [ " -map " , f " 0: { stdi } " ]
return inputMappingTokens
return inputMappingTokens
@ -463,7 +473,8 @@ class MediaDescriptor:
def getConfiguration ( self , label : str = ' ' ) :
def getConfiguration ( self , label : str = ' ' ) :
yield f " --- { label if label else ' MediaDescriptor ' + str ( id ( self ) ) } { ' ' . join ( [ str ( k ) + ' = ' + str ( v ) for k , v in self . __mediaTags . items ( ) ] ) } "
yield f " --- { label if label else ' MediaDescriptor ' + str ( id ( self ) ) } { ' ' . join ( [ str ( k ) + ' = ' + str ( v ) for k , v in self . __mediaTags . items ( ) ] ) } "
for td in self . getAllTrackDescriptors ( ) :
# for td in self.getAllTrackDescriptors():
for td in self . getTrackDescriptors ( ) :
yield ( f " { td . getIndex ( ) } : { td . getType ( ) . indicator ( ) } : { td . getSubIndex ( ) } "
yield ( f " { td . getIndex ( ) } : { td . getType ( ) . indicator ( ) } : { td . getSubIndex ( ) } "
+ ' | ' . join ( [ d . indicator ( ) for d in td . getDispositionSet ( ) ] )
+ ' | ' . join ( [ d . indicator ( ) for d in td . getDispositionSet ( ) ] )
+ ' ' + ' ' . join ( [ str ( k ) + ' = ' + str ( v ) for k , v in td . getTags ( ) . items ( ) ] ) )
+ ' ' + ' ' . join ( [ str ( k ) + ' = ' + str ( v ) for k , v in td . getTags ( ) . items ( ) ] ) )