AY-4801-Added conversion of resources

Added similar configuration as for ExtractReview to control possible conversion from .mov to target format (.mp4)
This commit is contained in:
Petr Kalis 2024-05-07 13:51:36 +02:00
parent 345f5f31f1
commit 2facf91bcb
2 changed files with 230 additions and 10 deletions

View file

@ -1,4 +1,11 @@
from ayon_server.settings import BaseSettingsModel, SettingsField
from pydantic import validator
from ayon_server.settings import (
BaseSettingsModel,
SettingsField,
task_types_enum,
ensure_unique_names
)
class ValidatePluginModel(BaseSettingsModel):
@ -14,6 +21,74 @@ class ValidateFrameRangeModel(ValidatePluginModel):
'my_asset_to_publish.mov')"""
class ExtractEditorialPckgFFmpegModel(BaseSettingsModel):
video_filters: list[str] = SettingsField(
default_factory=list,
title="Video filters"
)
audio_filters: list[str] = SettingsField(
default_factory=list,
title="Audio filters"
)
input: list[str] = SettingsField(
default_factory=list,
title="Input arguments"
)
output: list[str] = SettingsField(
default_factory=list,
title="Output arguments"
)
class ExtractEditorialPckgOutputDefModel(BaseSettingsModel):
"""Set extension and ffmpeg arguments. See `ExtractReview` for example."""
_layout = "expanded"
name: str = SettingsField("", title="Name")
ext: str = SettingsField("", title="Output extension")
ffmpeg_args: ExtractEditorialPckgFFmpegModel = SettingsField(
default_factory=ExtractEditorialPckgFFmpegModel,
title="FFmpeg arguments"
)
class ExtractEditorialPckgProfileModel(BaseSettingsModel):
product_types: list[str] = SettingsField(
default_factory=list,
title="Product types"
)
task_types: list[str] = SettingsField(
default_factory=list,
title="Task types",
enum_resolver=task_types_enum
)
task_names: list[str] = SettingsField(
default_factory=list,
title="Task names"
)
product_names: list[str] = SettingsField(
default_factory=list,
title="Product names"
)
outputs: list[ExtractEditorialPckgOutputDefModel] = SettingsField(
default_factory=list,
title="Output Definitions",
)
@validator("outputs")
def validate_unique_outputs(cls, value):
ensure_unique_names(value)
return value
class ExtractEditorialPckgConversionModel(BaseSettingsModel):
"""Conversion of input movie files into expected format."""
enabled: bool = SettingsField(True)
profiles: list[ExtractEditorialPckgProfileModel] = SettingsField(
default_factory=list, title="Profiles"
)
class TrayPublisherPublishPlugins(BaseSettingsModel):
CollectFrameDataFromAssetEntity: ValidatePluginModel = SettingsField(
default_factory=ValidatePluginModel,
@ -28,6 +103,13 @@ class TrayPublisherPublishPlugins(BaseSettingsModel):
default_factory=ValidatePluginModel,
)
ExtractEditorialPckgConversion: ExtractEditorialPckgConversionModel = (
SettingsField(
default_factory=ExtractEditorialPckgConversionModel,
title="Extract Editorial Package Conversion"
)
)
DEFAULT_PUBLISH_PLUGINS = {
"CollectFrameDataFromAssetEntity": {
@ -44,5 +126,10 @@ DEFAULT_PUBLISH_PLUGINS = {
"enabled": True,
"optional": True,
"active": True
},
"ExtractEditorialPckgConversion": {
"enabled": True,
"optional": True,
"active": True
}
}