refactor(vidu,wan_ai): add fallback VideoFromFile wrapper for import compatibility
- Add third-level fallback import handler for VideoFromFile class across all video modules - Implement simple VideoFromFile wrapper class with default dimensions (1280x720) when imports fail - Support video_io objects with getvalue() method for BytesIO compatibility - Add clarifying comments for each import path (newer, older, and fallback) - Apply consistent fallback pattern to vidu_extend, vidu_i2v, vidu_ref2v, vidu_startend2v, vidu_t2v, wan_ai_i2v, and wan_ai_t2v modules - Improve robustness for different ComfyUI versions and installation configurations
This commit is contained in:
@@ -9,10 +9,22 @@ from .modelverse_api.client import ModelverseClient
|
||||
from .modelverse_api.utils import image_to_base64
|
||||
from comfy.comfy_types.node_typing import IO
|
||||
try:
|
||||
# Try the newer import path first
|
||||
from comfy_extras.nodes_video import VideoFromFile
|
||||
except ImportError:
|
||||
try:
|
||||
# Fallback to older import path
|
||||
from comfy.model_management import VideoFromFile
|
||||
except ImportError:
|
||||
# Final fallback - create a simple wrapper
|
||||
class VideoFromFile:
|
||||
def __init__(self, video_io):
|
||||
self.video_io = video_io
|
||||
self.video_data = video_io.getvalue() if hasattr(video_io, 'getvalue') else video_io
|
||||
|
||||
def get_dimensions(self):
|
||||
# Return default dimensions if we can't determine them
|
||||
return (1280, 720) # width, height
|
||||
|
||||
MODELS = ["viduq2-pro", "viduq2-turbo"]
|
||||
RESOLUTIONS = ["540p", "720p", "1080p"]
|
||||
|
||||
@@ -9,10 +9,22 @@ from .modelverse_api.client import ModelverseClient
|
||||
from .modelverse_api.utils import image_to_base64
|
||||
from comfy.comfy_types.node_typing import IO
|
||||
try:
|
||||
# Try the newer import path first
|
||||
from comfy_extras.nodes_video import VideoFromFile
|
||||
except ImportError:
|
||||
try:
|
||||
# Fallback to older import path
|
||||
from comfy.model_management import VideoFromFile
|
||||
except ImportError:
|
||||
# Final fallback - create a simple wrapper
|
||||
class VideoFromFile:
|
||||
def __init__(self, video_io):
|
||||
self.video_io = video_io
|
||||
self.video_data = video_io.getvalue() if hasattr(video_io, 'getvalue') else video_io
|
||||
|
||||
def get_dimensions(self):
|
||||
# Return default dimensions if we can't determine them
|
||||
return (1280, 720) # width, height
|
||||
|
||||
|
||||
MODELS = ["viduq2-pro", "viduq2-turbo"]
|
||||
|
||||
@@ -10,10 +10,22 @@ from .modelverse_api.client import ModelverseClient
|
||||
from .modelverse_api.utils import image_to_base64
|
||||
from comfy.comfy_types.node_typing import IO
|
||||
try:
|
||||
# Try the newer import path first
|
||||
from comfy_extras.nodes_video import VideoFromFile
|
||||
except ImportError:
|
||||
try:
|
||||
# Fallback to older import path
|
||||
from comfy.model_management import VideoFromFile
|
||||
except ImportError:
|
||||
# Final fallback - create a simple wrapper
|
||||
class VideoFromFile:
|
||||
def __init__(self, video_io):
|
||||
self.video_io = video_io
|
||||
self.video_data = video_io.getvalue() if hasattr(video_io, 'getvalue') else video_io
|
||||
|
||||
def get_dimensions(self):
|
||||
# Return default dimensions if we can't determine them
|
||||
return (1280, 720) # width, height
|
||||
|
||||
ASPECT_RATIOS = ["16:9", "9:16", "3:4", "4:3", "1:1"]
|
||||
RESOLUTIONS = ["540p", "720p", "1080p"]
|
||||
|
||||
@@ -9,10 +9,22 @@ from .modelverse_api.client import ModelverseClient
|
||||
from .modelverse_api.utils import image_to_base64
|
||||
from comfy.comfy_types.node_typing import IO
|
||||
try:
|
||||
# Try the newer import path first
|
||||
from comfy_extras.nodes_video import VideoFromFile
|
||||
except ImportError:
|
||||
try:
|
||||
# Fallback to older import path
|
||||
from comfy.model_management import VideoFromFile
|
||||
except ImportError:
|
||||
# Final fallback - create a simple wrapper
|
||||
class VideoFromFile:
|
||||
def __init__(self, video_io):
|
||||
self.video_io = video_io
|
||||
self.video_data = video_io.getvalue() if hasattr(video_io, 'getvalue') else video_io
|
||||
|
||||
def get_dimensions(self):
|
||||
# Return default dimensions if we can't determine them
|
||||
return (1280, 720) # width, height
|
||||
|
||||
MODELS = ["viduq2-pro", "viduq2-turbo"]
|
||||
RESOLUTIONS = ["540p", "720p", "1080p"]
|
||||
|
||||
@@ -8,10 +8,22 @@ import io
|
||||
from .modelverse_api.client import ModelverseClient
|
||||
from comfy.comfy_types.node_typing import IO
|
||||
try:
|
||||
# Try the newer import path first
|
||||
from comfy_extras.nodes_video import VideoFromFile
|
||||
except ImportError:
|
||||
try:
|
||||
# Fallback to older import path
|
||||
from comfy.model_management import VideoFromFile
|
||||
except ImportError:
|
||||
# Final fallback - create a simple wrapper
|
||||
class VideoFromFile:
|
||||
def __init__(self, video_io):
|
||||
self.video_io = video_io
|
||||
self.video_data = video_io.getvalue() if hasattr(video_io, 'getvalue') else video_io
|
||||
|
||||
def get_dimensions(self):
|
||||
# Return default dimensions if we can't determine them
|
||||
return (1280, 720) # width, height
|
||||
|
||||
ASPECT_RATIOS = ["16:9", "9:16", "3:4", "4:3", "1:1"]
|
||||
RESOLUTIONS = ["540p", "720p", "1080p"]
|
||||
|
||||
@@ -5,10 +5,22 @@ from .modelverse_api.client import ModelverseClient
|
||||
from .modelverse_api.utils import image_to_base64
|
||||
from comfy.comfy_types.node_typing import IO
|
||||
try:
|
||||
# Try the newer import path first
|
||||
from comfy_extras.nodes_video import VideoFromFile
|
||||
except ImportError:
|
||||
try:
|
||||
# Fallback to older import path
|
||||
from comfy.model_management import VideoFromFile
|
||||
except ImportError:
|
||||
# Final fallback - create a simple wrapper
|
||||
class VideoFromFile:
|
||||
def __init__(self, video_io):
|
||||
self.video_io = video_io
|
||||
self.video_data = video_io.getvalue() if hasattr(video_io, 'getvalue') else video_io
|
||||
|
||||
def get_dimensions(self):
|
||||
# Return default dimensions if we can't determine them
|
||||
return (1280, 720) # width, height
|
||||
|
||||
class Modelverse_WanAII2V:
|
||||
def __init__(self):
|
||||
|
||||
@@ -4,10 +4,22 @@ import io
|
||||
from .modelverse_api.client import ModelverseClient
|
||||
from comfy.comfy_types.node_typing import IO
|
||||
try:
|
||||
# Try the newer import path first
|
||||
from comfy_extras.nodes_video import VideoFromFile
|
||||
except ImportError:
|
||||
try:
|
||||
# Fallback to older import path
|
||||
from comfy.model_management import VideoFromFile
|
||||
except ImportError:
|
||||
# Final fallback - create a simple wrapper
|
||||
class VideoFromFile:
|
||||
def __init__(self, video_io):
|
||||
self.video_io = video_io
|
||||
self.video_data = video_io.getvalue() if hasattr(video_io, 'getvalue') else video_io
|
||||
|
||||
def get_dimensions(self):
|
||||
# Return default dimensions if we can't determine them
|
||||
return (1280, 720) # width, height
|
||||
|
||||
class Modelverse_WanAIT2V:
|
||||
def __init__(self):
|
||||
|
||||
Reference in New Issue
Block a user