mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-25 05:14:40 +01:00
otio burnin script supporting mxf source timecode
This commit is contained in:
parent
bf308ebecd
commit
2f9ce16f17
1 changed files with 16 additions and 9 deletions
|
|
@ -37,7 +37,7 @@ TIMECODE_KEY = "{timecode}"
|
|||
SOURCE_TIMECODE_KEY = "{source_timecode}"
|
||||
|
||||
|
||||
def _streams(source):
|
||||
def _ffprobe_data(source):
|
||||
"""Reimplemented from otio burnins to be able use full path to ffprobe
|
||||
:param str source: source media file
|
||||
:rtype: [{}, ...]
|
||||
|
|
@ -47,7 +47,7 @@ def _streams(source):
|
|||
out = proc.communicate()[0]
|
||||
if proc.returncode != 0:
|
||||
raise RuntimeError("Failed to run: %s" % command)
|
||||
return json.loads(out)['streams']
|
||||
return json.loads(out)
|
||||
|
||||
|
||||
def get_fps(str_value):
|
||||
|
|
@ -244,15 +244,16 @@ class ModifiedBurnins(ffmpeg_burnins.Burnins):
|
|||
}
|
||||
|
||||
def __init__(
|
||||
self, source, streams=None, options_init=None, first_frame=None
|
||||
self, source, ffprobe_data=None, options_init=None, first_frame=None
|
||||
):
|
||||
if not streams:
|
||||
streams = _streams(source)
|
||||
if not ffprobe_data:
|
||||
ffprobe_data = _ffprobe_data(source)
|
||||
|
||||
self.ffprobe_data = ffprobe_data
|
||||
self.first_frame = first_frame
|
||||
self.input_args = []
|
||||
|
||||
super().__init__(source, streams)
|
||||
super().__init__(source, ffprobe_data["streams"])
|
||||
|
||||
if options_init:
|
||||
self.options_init.update(options_init)
|
||||
|
|
@ -564,11 +565,11 @@ def burnins_from_data(
|
|||
"shot": "sh0010"
|
||||
}
|
||||
"""
|
||||
streams = None
|
||||
ffprobe_data = None
|
||||
if full_input_path:
|
||||
streams = _streams(full_input_path)
|
||||
ffprobe_data = _ffprobe_data(full_input_path)
|
||||
|
||||
burnin = ModifiedBurnins(input_path, streams, options, first_frame)
|
||||
burnin = ModifiedBurnins(input_path, ffprobe_data, options, first_frame)
|
||||
|
||||
frame_start = data.get("frame_start")
|
||||
frame_end = data.get("frame_end")
|
||||
|
|
@ -595,6 +596,12 @@ def burnins_from_data(
|
|||
if source_timecode is None:
|
||||
source_timecode = stream.get("tags", {}).get("timecode")
|
||||
|
||||
if source_timecode is None:
|
||||
input_format = burnin.ffprobe_data.get("format") or {}
|
||||
source_timecode = input_format.get("timecode")
|
||||
if source_timecode is None:
|
||||
source_timecode = input_format.get("tags", {}).get("timecode")
|
||||
|
||||
if source_timecode is not None:
|
||||
data[SOURCE_TIMECODE_KEY[1:-1]] = SOURCE_TIMECODE_KEY
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue