fixes ffmpeg parameter processing
This commit is contained in:
@@ -203,7 +203,7 @@ def convert(ctx,
|
|||||||
|
|
||||||
context = ctx.obj
|
context = ctx.obj
|
||||||
|
|
||||||
context['dry_run'] = True # dry_run
|
context['dry_run'] = dry_run
|
||||||
|
|
||||||
context['video_encoder'] = VideoEncoder.fromLabel(video_encoder)
|
context['video_encoder'] = VideoEncoder.fromLabel(video_encoder)
|
||||||
|
|
||||||
|
|||||||
@@ -176,21 +176,25 @@ class FfxController():
|
|||||||
# for subStreamIndex in range(len(subDescriptor)):
|
# for subStreamIndex in range(len(subDescriptor)):
|
||||||
for trackDescriptor in targetTrackDescriptors:
|
for trackDescriptor in targetTrackDescriptors:
|
||||||
|
|
||||||
# Calculate source sub index. This applies only if a source media descriptor is defined.
|
#HINT: No dispositions for pgs subtitle tracks that have no external file source
|
||||||
if sourceTrackDescriptors:
|
if (trackDescriptor.getExternalSourceFilePath()
|
||||||
changedTargetTrackDescriptor : TrackDescriptor = targetTrackDescriptors[trackDescriptor.getIndex()]
|
or trackDescriptor.getCodec() != TrackDescriptor.CODEC_PGS):
|
||||||
changedTargetTrackSourceIndex = changedTargetTrackDescriptor.getSourceIndex()
|
|
||||||
subIndex = sourceTrackDescriptors[changedTargetTrackSourceIndex].getSubIndex()
|
|
||||||
else:
|
|
||||||
subIndex = trackDescriptor.getSubIndex()
|
|
||||||
|
|
||||||
streamIndicator = trackDescriptor.getType().indicator()
|
# Calculate source sub index. This applies only if a source media descriptor is defined.
|
||||||
dispositionSet = trackDescriptor.getDispositionSet()
|
if sourceTrackDescriptors:
|
||||||
|
changedTargetTrackDescriptor : TrackDescriptor = targetTrackDescriptors[trackDescriptor.getIndex()]
|
||||||
|
changedTargetTrackSourceIndex = changedTargetTrackDescriptor.getSourceIndex()
|
||||||
|
subIndex = sourceTrackDescriptors[changedTargetTrackSourceIndex].getSubIndex()
|
||||||
|
else:
|
||||||
|
subIndex = trackDescriptor.getSubIndex()
|
||||||
|
|
||||||
if dispositionSet:
|
streamIndicator = trackDescriptor.getType().indicator()
|
||||||
dispositionTokens += [f"-disposition:{streamIndicator}:{subIndex}", '+'.join([d.label() for d in dispositionSet])]
|
dispositionSet = trackDescriptor.getDispositionSet()
|
||||||
else:
|
|
||||||
dispositionTokens += [f"-disposition:{streamIndicator}:{subIndex}", '0']
|
if dispositionSet:
|
||||||
|
dispositionTokens += [f"-disposition:{streamIndicator}:{subIndex}", '+'.join([d.label() for d in dispositionSet])]
|
||||||
|
else:
|
||||||
|
dispositionTokens += [f"-disposition:{streamIndicator}:{subIndex}", '0']
|
||||||
|
|
||||||
return dispositionTokens
|
return dispositionTokens
|
||||||
|
|
||||||
@@ -198,7 +202,7 @@ class FfxController():
|
|||||||
def generateMetadataTokens(self):
|
def generateMetadataTokens(self):
|
||||||
"""Source media descriptor is mandatory"""
|
"""Source media descriptor is mandatory"""
|
||||||
|
|
||||||
mappingTokens = []
|
metadataTokens = []
|
||||||
|
|
||||||
# click.echo(f"source media descriptor: track indices={[d.getIndex() for d in sourceMediaDescriptor.getAllTrackDescriptors()]}")
|
# click.echo(f"source media descriptor: track indices={[d.getIndex() for d in sourceMediaDescriptor.getAllTrackDescriptors()]}")
|
||||||
# click.echo(f"target media descriptor: track indices={[d.getIndex() for d in targetMediaDescriptor.getAllTrackDescriptors()]}")
|
# click.echo(f"target media descriptor: track indices={[d.getIndex() for d in targetMediaDescriptor.getAllTrackDescriptors()]}")
|
||||||
@@ -215,15 +219,15 @@ class FfxController():
|
|||||||
sourceTags = self.__sourceMediaDescriptor.getTags()
|
sourceTags = self.__sourceMediaDescriptor.getTags()
|
||||||
targetTags = self.__targetMediaDescriptor.getTags()
|
targetTags = self.__targetMediaDescriptor.getTags()
|
||||||
|
|
||||||
|
#TODO: Warum erscheint nur -1 im output?
|
||||||
if DIFF_REMOVED_KEY in mediaDifferences[MediaDescriptor.TAGS_KEY].keys():
|
if DIFF_REMOVED_KEY in mediaDifferences[MediaDescriptor.TAGS_KEY].keys():
|
||||||
# for removedTagKey in mediaDifferences[MediaDescriptor.TAGS_KEY][DIFF_REMOVED_KEY]:
|
# for removedTagKey in mediaDifferences[MediaDescriptor.TAGS_KEY][DIFF_REMOVED_KEY]:
|
||||||
# row = (f"removed media tag: key='{removedTagKey}' value='{sourceTags[removedTagKey]}'",)
|
# row = (f"removed media tag: key='{removedTagKey}' value='{sourceTags[removedTagKey]}'",)
|
||||||
# self.differencesTable.add_row(*map(str, row))
|
# self.differencesTable.add_row(*map(str, row))
|
||||||
mappingTokens += [f"-map_metadata:g", "-1"]
|
metadataTokens += [f"-map_metadata:g", "-1"]
|
||||||
|
|
||||||
for targetMediaTagKey in targetTags:
|
for targetMediaTagKey in targetTags:
|
||||||
mappingTokens += [f"-metadata:g", f"{targetMediaTagKey}={targetTags[targetMediaTagKey]}"]
|
metadataTokens += [f"-metadata:g", f"{targetMediaTagKey}={targetTags[targetMediaTagKey]}"]
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
|
||||||
@@ -233,7 +237,7 @@ class FfxController():
|
|||||||
click.echo(f"added metadata key='{addedTagKey}' value='{targetTags[addedTagKey]}'->'{targetTags[addedTagKey]}'")
|
click.echo(f"added metadata key='{addedTagKey}' value='{targetTags[addedTagKey]}'->'{targetTags[addedTagKey]}'")
|
||||||
# self.differencesTable.add_row(*map(str, row))
|
# self.differencesTable.add_row(*map(str, row))
|
||||||
#pass
|
#pass
|
||||||
mappingTokens += [f"-metadata:g", f"{addedTagKey}={targetTags[addedTagKey]}"]
|
metadataTokens += [f"-metadata:g", f"{addedTagKey}={targetTags[addedTagKey]}"]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -243,7 +247,7 @@ class FfxController():
|
|||||||
click.echo(f"changed metadata key='{changedTagKey}' value='{sourceTags[changedTagKey]}'->'{targetTags[changedTagKey]}'")
|
click.echo(f"changed metadata key='{changedTagKey}' value='{sourceTags[changedTagKey]}'->'{targetTags[changedTagKey]}'")
|
||||||
# self.differencesTable.add_row(*map(str, row))
|
# self.differencesTable.add_row(*map(str, row))
|
||||||
#pass
|
#pass
|
||||||
mappingTokens += [f"-metadata:g", f"{changedTagKey}={targetTags[changedTagKey]}"]
|
metadataTokens += [f"-metadata:g", f"{changedTagKey}={targetTags[changedTagKey]}"]
|
||||||
|
|
||||||
if MediaDescriptor.TRACKS_KEY in mediaDifferences.keys():
|
if MediaDescriptor.TRACKS_KEY in mediaDifferences.keys():
|
||||||
|
|
||||||
@@ -289,10 +293,10 @@ class FfxController():
|
|||||||
|
|
||||||
#addedTagValue = targetTrackDescriptors[changedTargetTrackSourceIndex].getTags()[addedTagKey]
|
#addedTagValue = targetTrackDescriptors[changedTargetTrackSourceIndex].getTags()[addedTagKey]
|
||||||
|
|
||||||
mappingTokens += [f"-map_metadata:s:{changedTargetTrackDescriptor.getType().indicator()}:{changedTargetSourceSubIndex}", "-1"]
|
metadataTokens += [f"-map_metadata:s:{changedTargetTrackDescriptor.getType().indicator()}:{changedTargetSourceSubIndex}", "-1"]
|
||||||
|
|
||||||
for targetTrackTagKey, targetTrackTagValue in changedTargetTrackDescriptor.getTags():
|
for targetTrackTagKey, targetTrackTagValue in changedTargetTrackDescriptor.getTags():
|
||||||
mappingTokens += [f"-metadata:s:{changedTargetTrackDescriptor.getType().indicator()}:{changedTargetSourceSubIndex}",
|
metadataTokens += [f"-metadata:s:{changedTargetTrackDescriptor.getType().indicator()}:{changedTargetSourceSubIndex}",
|
||||||
f"{targetTrackTagKey}={targetTrackTagValue}"]
|
f"{targetTrackTagKey}={targetTrackTagValue}"]
|
||||||
|
|
||||||
else:
|
else:
|
||||||
@@ -310,7 +314,7 @@ class FfxController():
|
|||||||
# click.echo(f"targetTrackDescriptors: subindex={[t.getSubIndex() for t in targetTrackDescriptors]} sourceindex={[t.getSourceIndex() for t in targetTrackDescriptors]} tags={[t.getTags() for t in targetTrackDescriptors]}")
|
# click.echo(f"targetTrackDescriptors: subindex={[t.getSubIndex() for t in targetTrackDescriptors]} sourceindex={[t.getSourceIndex() for t in targetTrackDescriptors]} tags={[t.getTags() for t in targetTrackDescriptors]}")
|
||||||
# click.echo(f"changed track_index={changedTrackIndex} indicator={changedTargetTrackDescriptor.getType().indicator()} key={addedTagKey} value={addedTagValue} source_index={changedSourceTrackIndex}")
|
# click.echo(f"changed track_index={changedTrackIndex} indicator={changedTargetTrackDescriptor.getType().indicator()} key={addedTagKey} value={addedTagValue} source_index={changedSourceTrackIndex}")
|
||||||
|
|
||||||
mappingTokens += [f"-metadata:s:{changedTargetTrackDescriptor.getType().indicator()}:{changedTargetSourceSubIndex}",
|
metadataTokens += [f"-metadata:s:{changedTargetTrackDescriptor.getType().indicator()}:{changedTargetSourceSubIndex}",
|
||||||
f"{addedTagKey}={addedTagValue}"]
|
f"{addedTagKey}={addedTagValue}"]
|
||||||
|
|
||||||
# media diff {'tracks': {'changed': {4: {'tags': {'added': {'Yolo'}}}}}}
|
# media diff {'tracks': {'changed': {4: {'tags': {'added': {'Yolo'}}}}}}
|
||||||
@@ -326,7 +330,7 @@ class FfxController():
|
|||||||
# click.echo(f"targetTrackDescriptors: subindex={[t.getSubIndex() for t in targetTrackDescriptors]} sourceindex={[t.getSourceIndex() for t in targetTrackDescriptors]} tags={[t.getTags() for t in targetTrackDescriptors]}")
|
# click.echo(f"targetTrackDescriptors: subindex={[t.getSubIndex() for t in targetTrackDescriptors]} sourceindex={[t.getSourceIndex() for t in targetTrackDescriptors]} tags={[t.getTags() for t in targetTrackDescriptors]}")
|
||||||
# click.echo(f"changed track_index={changedTrackIndex} indicator={changedTargetTrackDescriptor.getType().indicator()} key={addedTagKey} value={addedTagValue} source_index={changedSourceTrackIndex}")
|
# click.echo(f"changed track_index={changedTrackIndex} indicator={changedTargetTrackDescriptor.getType().indicator()} key={addedTagKey} value={addedTagValue} source_index={changedSourceTrackIndex}")
|
||||||
|
|
||||||
mappingTokens += [f"-metadata:s:{changedTargetTrackDescriptor.getType().indicator()}:{changedTargetSourceSubIndex}",
|
metadataTokens += [f"-metadata:s:{changedTargetTrackDescriptor.getType().indicator()}:{changedTargetSourceSubIndex}",
|
||||||
f"{changedTagKey}={changedTagValue}"]
|
f"{changedTagKey}={changedTagValue}"]
|
||||||
|
|
||||||
# if TrackDescriptor.DISPOSITION_SET_KEY in changedTrackDiff.keys():
|
# if TrackDescriptor.DISPOSITION_SET_KEY in changedTrackDiff.keys():
|
||||||
@@ -343,7 +347,7 @@ class FfxController():
|
|||||||
# # self.differencesTable.add_row(*map(str, row))
|
# # self.differencesTable.add_row(*map(str, row))
|
||||||
# pass
|
# pass
|
||||||
|
|
||||||
return mappingTokens
|
return metadataTokens
|
||||||
|
|
||||||
|
|
||||||
def runJob(self,
|
def runJob(self,
|
||||||
@@ -390,11 +394,11 @@ class FfxController():
|
|||||||
if videoEncoder == VideoEncoder.VP9:
|
if videoEncoder == VideoEncoder.VP9:
|
||||||
|
|
||||||
commandSequence1 = (commandTokens
|
commandSequence1 = (commandTokens
|
||||||
+ self.__targetMediaDescriptor.getInputMappingTokens()
|
+ self.__targetMediaDescriptor.getInputMappingTokens(only_video=True)
|
||||||
+ self.generateVP9Pass1Tokens(int(quality)))
|
+ self.generateVP9Pass1Tokens(int(quality)))
|
||||||
|
|
||||||
if self.__context['perform_crop']:
|
if self.__context['perform_crop']:
|
||||||
commandSequence1 += FfxController.generateCropTokens()
|
commandSequence1 += self.generateCropTokens()
|
||||||
|
|
||||||
commandSequence1 += FfxController.NULL_TOKENS
|
commandSequence1 += FfxController.NULL_TOKENS
|
||||||
|
|
||||||
@@ -420,7 +424,7 @@ class FfxController():
|
|||||||
commandSequence2 += self.generateVP9Pass2Tokens(int(quality)) + self.generateAudioEncodingTokens()
|
commandSequence2 += self.generateVP9Pass2Tokens(int(quality)) + self.generateAudioEncodingTokens()
|
||||||
|
|
||||||
if self.__context['perform_crop']:
|
if self.__context['perform_crop']:
|
||||||
commandSequence2 += FfxController.generateCropTokens()
|
commandSequence2 += self.generateCropTokens()
|
||||||
|
|
||||||
commandSequence2 += self.generateOutputTokens(targetPath,
|
commandSequence2 += self.generateOutputTokens(targetPath,
|
||||||
FfxController.DEFAULT_FILE_FORMAT,
|
FfxController.DEFAULT_FILE_FORMAT,
|
||||||
@@ -429,4 +433,6 @@ class FfxController():
|
|||||||
click.echo(f"Command 2: {' '.join(commandSequence2)}")
|
click.echo(f"Command 2: {' '.join(commandSequence2)}")
|
||||||
|
|
||||||
if not self.__context['dry_run']:
|
if not self.__context['dry_run']:
|
||||||
executeProcess(commandSequence2)
|
out, err, rc = executeProcess(commandSequence2)
|
||||||
|
if rc:
|
||||||
|
raise click.ClickException(f"Command resulted in error: rc={rc} error={err}")
|
||||||
|
|||||||
@@ -378,7 +378,7 @@ class MediaDescriptor:
|
|||||||
|
|
||||||
importedFilePath = rtd.getExternalSourceFilePath()
|
importedFilePath = rtd.getExternalSourceFilePath()
|
||||||
|
|
||||||
if not importedFilePath is None:
|
if importedFilePath:
|
||||||
importFileTokens += [
|
importFileTokens += [
|
||||||
"-i",
|
"-i",
|
||||||
importedFilePath,
|
importedFilePath,
|
||||||
@@ -386,7 +386,7 @@ class MediaDescriptor:
|
|||||||
|
|
||||||
return importFileTokens
|
return importFileTokens
|
||||||
|
|
||||||
def getInputMappingTokens(self, use_sub_index: bool = True):
|
def getInputMappingTokens(self, use_sub_index: bool = True, only_video: bool = False):
|
||||||
|
|
||||||
reorderedTrackDescriptors = self.getReorderedTrackDescriptors()
|
reorderedTrackDescriptors = self.getReorderedTrackDescriptors()
|
||||||
inputMappingTokens = []
|
inputMappingTokens = []
|
||||||
@@ -394,23 +394,33 @@ class MediaDescriptor:
|
|||||||
filePointer = 1
|
filePointer = 1
|
||||||
for rtd in reorderedTrackDescriptors:
|
for rtd in reorderedTrackDescriptors:
|
||||||
|
|
||||||
importedFilePath = rtd.getExternalSourceFilePath()
|
|
||||||
|
|
||||||
trackType = rtd.getType()
|
trackType = rtd.getType()
|
||||||
if use_sub_index:
|
|
||||||
if importedFilePath is None:
|
if (trackType == TrackType.VIDEO or not only_video):
|
||||||
inputMappingTokens += [
|
|
||||||
"-map",
|
importedFilePath = rtd.getExternalSourceFilePath()
|
||||||
f"0:{trackType.indicator()}:{rtd.getSubIndex()}",
|
|
||||||
]
|
if use_sub_index:
|
||||||
|
|
||||||
|
if importedFilePath:
|
||||||
|
|
||||||
|
inputMappingTokens += [
|
||||||
|
"-map",
|
||||||
|
f"{filePointer}:{trackType.indicator()}:0",
|
||||||
|
]
|
||||||
|
filePointer += 1
|
||||||
|
|
||||||
|
else:
|
||||||
|
|
||||||
|
if rtd.getCodec() != TrackDescriptor.CODEC_PGS:
|
||||||
|
inputMappingTokens += [
|
||||||
|
"-map",
|
||||||
|
f"0:{trackType.indicator()}:{rtd.getSubIndex()}",
|
||||||
|
]
|
||||||
|
|
||||||
else:
|
else:
|
||||||
inputMappingTokens += [
|
if rtd.getCodec() != TrackDescriptor.CODEC_PGS:
|
||||||
"-map",
|
inputMappingTokens += ["-map", f"0:{rtd.getIndex()}"]
|
||||||
f"{filePointer}:{trackType.indicator()}:0",
|
|
||||||
]
|
|
||||||
filePointer += 1
|
|
||||||
else:
|
|
||||||
inputMappingTokens += ["-map", f"0:{rtd.getIndex()}"]
|
|
||||||
|
|
||||||
return inputMappingTokens
|
return inputMappingTokens
|
||||||
|
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ class Track(Base):
|
|||||||
|
|
||||||
disposition_flags = Column(Integer)
|
disposition_flags = Column(Integer)
|
||||||
|
|
||||||
|
codec_name = Column(String)
|
||||||
audio_layout = Column(Integer)
|
audio_layout = Column(Integer)
|
||||||
|
|
||||||
|
|
||||||
@@ -133,6 +134,7 @@ class Track(Base):
|
|||||||
|
|
||||||
return cls(pattern_id = patternId,
|
return cls(pattern_id = patternId,
|
||||||
track_type = trackType,
|
track_type = trackType,
|
||||||
|
codec_name = streamObj[TrackDescriptor.FFPROBE_CODEC_NAME_KEY],
|
||||||
disposition_flags = sum([2**t.index() for (k,v) in streamObj[TrackDescriptor.FFPROBE_DISPOSITION_KEY].items()
|
disposition_flags = sum([2**t.index() for (k,v) in streamObj[TrackDescriptor.FFPROBE_DISPOSITION_KEY].items()
|
||||||
if v and (t := TrackDisposition.find(k)) is not None]),
|
if v and (t := TrackDisposition.find(k)) is not None]),
|
||||||
audio_layout = AudioLayout.identify(streamObj))
|
audio_layout = AudioLayout.identify(streamObj))
|
||||||
@@ -150,6 +152,9 @@ class Track(Base):
|
|||||||
def getType(self):
|
def getType(self):
|
||||||
return TrackType.fromIndex(self.track_type)
|
return TrackType.fromIndex(self.track_type)
|
||||||
|
|
||||||
|
def getCodec(self):
|
||||||
|
return str(self.codec_name)
|
||||||
|
|
||||||
def getIndex(self):
|
def getIndex(self):
|
||||||
return int(self.index) if self.index is not None else -1
|
return int(self.index) if self.index is not None else -1
|
||||||
|
|
||||||
@@ -198,6 +203,8 @@ class Track(Base):
|
|||||||
kwargs[TrackDescriptor.SUB_INDEX_KEY] = subIndex
|
kwargs[TrackDescriptor.SUB_INDEX_KEY] = subIndex
|
||||||
|
|
||||||
kwargs[TrackDescriptor.TRACK_TYPE_KEY] = self.getType()
|
kwargs[TrackDescriptor.TRACK_TYPE_KEY] = self.getType()
|
||||||
|
kwargs[TrackDescriptor.CODEC_NAME_KEY] = self.getCodec()
|
||||||
|
|
||||||
kwargs[TrackDescriptor.DISPOSITION_SET_KEY] = self.getDispositionSet()
|
kwargs[TrackDescriptor.DISPOSITION_SET_KEY] = self.getDispositionSet()
|
||||||
kwargs[TrackDescriptor.TAGS_KEY] = self.getTags()
|
kwargs[TrackDescriptor.TAGS_KEY] = self.getTags()
|
||||||
|
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ class TrackController():
|
|||||||
s = self.Session()
|
s = self.Session()
|
||||||
track = Track(pattern_id = patId,
|
track = Track(pattern_id = patId,
|
||||||
track_type = int(trackDescriptor.getType().index()),
|
track_type = int(trackDescriptor.getType().index()),
|
||||||
|
codec_name = str(trackDescriptor.getCodec()),
|
||||||
index = int(trackDescriptor.getIndex()),
|
index = int(trackDescriptor.getIndex()),
|
||||||
source_index = int(trackDescriptor.getSourceIndex()),
|
source_index = int(trackDescriptor.getSourceIndex()),
|
||||||
disposition_flags = int(TrackDisposition.toFlags(trackDescriptor.getDispositionSet())),
|
disposition_flags = int(TrackDisposition.toFlags(trackDescriptor.getDispositionSet())),
|
||||||
@@ -66,6 +67,7 @@ class TrackController():
|
|||||||
track : Track = q.first()
|
track : Track = q.first()
|
||||||
|
|
||||||
track.track_type = int(trackDescriptor.getType().index())
|
track.track_type = int(trackDescriptor.getType().index())
|
||||||
|
track.codec_name = str(trackDescriptor.getCodec())
|
||||||
track.audio_layout = int(trackDescriptor.getAudioLayout().index())
|
track.audio_layout = int(trackDescriptor.getAudioLayout().index())
|
||||||
|
|
||||||
track.disposition_flags = int(TrackDisposition.toFlags(trackDescriptor.getDispositionSet()))
|
track.disposition_flags = int(TrackDisposition.toFlags(trackDescriptor.getDispositionSet()))
|
||||||
|
|||||||
@@ -21,12 +21,16 @@ class TrackDescriptor:
|
|||||||
TAGS_KEY = "tags"
|
TAGS_KEY = "tags"
|
||||||
|
|
||||||
TRACK_TYPE_KEY = "track_type"
|
TRACK_TYPE_KEY = "track_type"
|
||||||
|
CODEC_NAME_KEY = "codec_name"
|
||||||
AUDIO_LAYOUT_KEY = "audio_layout"
|
AUDIO_LAYOUT_KEY = "audio_layout"
|
||||||
|
|
||||||
FFPROBE_INDEX_KEY = "index"
|
FFPROBE_INDEX_KEY = "index"
|
||||||
FFPROBE_DISPOSITION_KEY = "disposition"
|
FFPROBE_DISPOSITION_KEY = "disposition"
|
||||||
FFPROBE_TAGS_KEY = "tags"
|
FFPROBE_TAGS_KEY = "tags"
|
||||||
FFPROBE_CODEC_TYPE_KEY = "codec_type"
|
FFPROBE_CODEC_TYPE_KEY = "codec_type"
|
||||||
|
FFPROBE_CODEC_NAME_KEY = "codec_name"
|
||||||
|
|
||||||
|
CODEC_PGS = 'hdmv_pgs_subtitle'
|
||||||
|
|
||||||
def __init__(self, **kwargs):
|
def __init__(self, **kwargs):
|
||||||
|
|
||||||
@@ -55,7 +59,7 @@ class TrackDescriptor:
|
|||||||
)
|
)
|
||||||
self.__externalSourceFilePath = kwargs[TrackDescriptor.EXTERNAL_SOURCE_FILE_PATH_KEY]
|
self.__externalSourceFilePath = kwargs[TrackDescriptor.EXTERNAL_SOURCE_FILE_PATH_KEY]
|
||||||
else:
|
else:
|
||||||
self.__externalSourceFilePath = None
|
self.__externalSourceFilePath = ''
|
||||||
|
|
||||||
if TrackDescriptor.INDEX_KEY in kwargs.keys():
|
if TrackDescriptor.INDEX_KEY in kwargs.keys():
|
||||||
if type(kwargs[TrackDescriptor.INDEX_KEY]) is not int:
|
if type(kwargs[TrackDescriptor.INDEX_KEY]) is not int:
|
||||||
@@ -92,6 +96,15 @@ class TrackDescriptor:
|
|||||||
else:
|
else:
|
||||||
self.__trackType = TrackType.UNKNOWN
|
self.__trackType = TrackType.UNKNOWN
|
||||||
|
|
||||||
|
if TrackDescriptor.CODEC_NAME_KEY in kwargs.keys():
|
||||||
|
if type(kwargs[TrackDescriptor.CODEC_NAME_KEY]) is not str:
|
||||||
|
raise TypeError(
|
||||||
|
f"TrackDesciptor.__init__(): Argument {TrackDescriptor.CODEC_NAME_KEY} is required to be of type str"
|
||||||
|
)
|
||||||
|
self.__codecName = kwargs[TrackDescriptor.CODEC_NAME_KEY]
|
||||||
|
else:
|
||||||
|
self.__codecName = ''
|
||||||
|
|
||||||
if TrackDescriptor.TAGS_KEY in kwargs.keys():
|
if TrackDescriptor.TAGS_KEY in kwargs.keys():
|
||||||
if type(kwargs[TrackDescriptor.TAGS_KEY]) is not dict:
|
if type(kwargs[TrackDescriptor.TAGS_KEY]) is not dict:
|
||||||
raise TypeError(
|
raise TypeError(
|
||||||
@@ -187,6 +200,8 @@ class TrackDescriptor:
|
|||||||
kwargs[TrackDescriptor.SUB_INDEX_KEY] = subIndex
|
kwargs[TrackDescriptor.SUB_INDEX_KEY] = subIndex
|
||||||
|
|
||||||
kwargs[TrackDescriptor.TRACK_TYPE_KEY] = trackType
|
kwargs[TrackDescriptor.TRACK_TYPE_KEY] = trackType
|
||||||
|
kwargs[TrackDescriptor.CODEC_NAME_KEY] = str(streamObj[TrackDescriptor.FFPROBE_CODEC_NAME_KEY])
|
||||||
|
|
||||||
kwargs[TrackDescriptor.DISPOSITION_SET_KEY] = (
|
kwargs[TrackDescriptor.DISPOSITION_SET_KEY] = (
|
||||||
{
|
{
|
||||||
t
|
t
|
||||||
@@ -238,6 +253,9 @@ class TrackDescriptor:
|
|||||||
def getType(self):
|
def getType(self):
|
||||||
return self.__trackType
|
return self.__trackType
|
||||||
|
|
||||||
|
def getCodec(self):
|
||||||
|
return self.__codecName
|
||||||
|
|
||||||
def getLanguage(self):
|
def getLanguage(self):
|
||||||
if "language" in self.__trackTags.keys():
|
if "language" in self.__trackTags.keys():
|
||||||
return IsoLanguage.findThreeLetter(self.__trackTags["language"])
|
return IsoLanguage.findThreeLetter(self.__trackTags["language"])
|
||||||
|
|||||||
Reference in New Issue
Block a user