mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 21:04:40 +01:00
enhancing metadata info processing to include framerate
- Create "framerate" key from "r_frame_rate" or "framespersecond" - Evaluate string expression value into float value - Log a warning if evaluation fails.
This commit is contained in:
parent
c76eed6476
commit
5b6211b9e3
2 changed files with 26 additions and 4 deletions
|
|
@ -849,7 +849,10 @@ def get_image_info_metadata(
|
|||
Args:
|
||||
path_to_file (str): Path to image file.
|
||||
keys (list[str]): List of keys that should be returned. If None then
|
||||
all keys are returned.
|
||||
all keys are returned. Keys are expected all lowercase.
|
||||
Additional keys are:
|
||||
- "framerate" - will be created from "r_frame_rate" or
|
||||
"framespersecond" and evaluated to float value.
|
||||
logger (logging.Logger): Logger used for logging.
|
||||
"""
|
||||
if logger is None:
|
||||
|
|
@ -906,6 +909,25 @@ def get_image_info_metadata(
|
|||
if keys is None:
|
||||
return metadata_stream
|
||||
|
||||
# create framerate key from available ffmpeg:r_frame_rate
|
||||
# or oiiotool:framespersecond and evaluate its string expression
|
||||
# value into flaot value
|
||||
if (
|
||||
"r_frame_rate" in metadata_stream
|
||||
or "framespersecond" in metadata_stream
|
||||
):
|
||||
rate_info = metadata_stream.get("r_frame_rate")
|
||||
if rate_info is None:
|
||||
rate_info = metadata_stream.get("framespersecond")
|
||||
|
||||
try:
|
||||
metadata_stream["framerate"] = eval(str(rate_info))
|
||||
except Exception as e:
|
||||
logger.warning(
|
||||
"Failed to evaluate '{}' value to framerate. Error: {}".format(
|
||||
rate_info, e)
|
||||
)
|
||||
|
||||
output = {}
|
||||
for key in keys:
|
||||
for k, v in metadata_stream.items():
|
||||
|
|
|
|||
|
|
@ -15,8 +15,8 @@ logger = logging.getLogger('test_transcoding')
|
|||
/ "lib"
|
||||
/ "transcoding"
|
||||
/ "a01vfxd_sh010_plateP01_v002.1013.exr",
|
||||
["timecode"],
|
||||
{"timecode": "01:00:06:03"},
|
||||
["timecode", "framerate"],
|
||||
{"timecode": "01:00:06:03", "framerate": 23.976023976023978},
|
||||
"test_01",
|
||||
),
|
||||
(
|
||||
|
|
@ -47,6 +47,6 @@ def test_get_image_info_metadata_happy_path(
|
|||
path_to_file = resources_path_factory.as_posix()
|
||||
|
||||
returned_data = get_image_info_metadata(path_to_file, metadata, logger)
|
||||
logger.debug(f"Returned data: {returned_data}")
|
||||
logger.info(f"Returned data: {returned_data}")
|
||||
|
||||
assert returned_data == expected
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue