mirror of
https://github.com/HumanAIGC-Engineering/gradio-webrtc.git
synced 2026-02-04 17:39:23 +08:00
Add code (#211)
This commit is contained in:
@@ -77,9 +77,12 @@ class Stream(WebRTCConnectionMixin):
|
||||
self.rtp_params = rtp_params
|
||||
self.event_handler = handler
|
||||
self.concurrency_limit = cast(
|
||||
(int | float),
|
||||
(int),
|
||||
1 if concurrency_limit in ["default", None] else concurrency_limit,
|
||||
)
|
||||
self.concurrency_limit_gradio = cast(
|
||||
int | Literal["default"] | None, concurrency_limit
|
||||
)
|
||||
self.time_limit = time_limit
|
||||
self.additional_output_components = additional_outputs
|
||||
self.additional_input_components = additional_inputs
|
||||
@@ -242,6 +245,7 @@ class Stream(WebRTCConnectionMixin):
|
||||
assert self.additional_outputs_handler
|
||||
output_video.on_additional_outputs(
|
||||
self.additional_outputs_handler,
|
||||
concurrency_limit=self.concurrency_limit_gradio, # type: ignore
|
||||
inputs=additional_output_components,
|
||||
outputs=additional_output_components,
|
||||
)
|
||||
@@ -289,6 +293,7 @@ class Stream(WebRTCConnectionMixin):
|
||||
assert self.additional_outputs_handler
|
||||
output_video.on_additional_outputs(
|
||||
self.additional_outputs_handler,
|
||||
concurrency_limit=self.concurrency_limit_gradio, # type: ignore
|
||||
inputs=additional_output_components,
|
||||
outputs=additional_output_components,
|
||||
)
|
||||
@@ -342,6 +347,7 @@ class Stream(WebRTCConnectionMixin):
|
||||
self.additional_outputs_handler,
|
||||
inputs=additional_output_components,
|
||||
outputs=additional_output_components,
|
||||
concurrency_limit=self.concurrency_limit_gradio, # type: ignore
|
||||
)
|
||||
elif self.modality == "audio" and self.mode == "receive":
|
||||
with gr.Blocks() as demo:
|
||||
@@ -395,6 +401,7 @@ class Stream(WebRTCConnectionMixin):
|
||||
self.additional_outputs_handler,
|
||||
inputs=additional_output_components,
|
||||
outputs=additional_output_components,
|
||||
concurrency_limit=self.concurrency_limit_gradio, # type: ignore
|
||||
)
|
||||
elif self.modality == "audio" and self.mode == "send":
|
||||
with gr.Blocks() as demo:
|
||||
@@ -447,6 +454,7 @@ class Stream(WebRTCConnectionMixin):
|
||||
self.additional_outputs_handler,
|
||||
inputs=additional_output_components,
|
||||
outputs=additional_output_components,
|
||||
concurrency_limit=self.concurrency_limit_gradio, # type: ignore
|
||||
)
|
||||
elif self.modality == "audio" and self.mode == "send-receive":
|
||||
with gr.Blocks() as demo:
|
||||
@@ -500,6 +508,7 @@ class Stream(WebRTCConnectionMixin):
|
||||
self.additional_outputs_handler,
|
||||
inputs=additional_output_components,
|
||||
outputs=additional_output_components,
|
||||
concurrency_limit=self.concurrency_limit_gradio, # type: ignore
|
||||
)
|
||||
elif self.modality == "audio-video" and self.mode == "send-receive":
|
||||
css = """.my-group {max-width: 600px !important; max-height: 600 !important;}
|
||||
@@ -555,6 +564,7 @@ class Stream(WebRTCConnectionMixin):
|
||||
self.additional_outputs_handler,
|
||||
inputs=additional_output_components,
|
||||
outputs=additional_output_components,
|
||||
concurrency_limit=self.concurrency_limit_gradio, # type: ignore
|
||||
)
|
||||
else:
|
||||
raise ValueError(f"Invalid modality: {self.modality} and mode: {self.mode}")
|
||||
|
||||
@@ -233,6 +233,7 @@ class WebRTC(Component, WebRTCConnectionMixin):
|
||||
inputs = list(inputs)
|
||||
|
||||
async def handler(webrtc_id: str, *args):
|
||||
print("webrtc_id", webrtc_id)
|
||||
async for next_outputs in self.output_stream(webrtc_id):
|
||||
yield fn(*args, *next_outputs.args) # type: ignore
|
||||
|
||||
|
||||
@@ -75,7 +75,7 @@ class WebRTCConnectionMixin:
|
||||
self.handlers = {}
|
||||
self.connection_timeouts = defaultdict(asyncio.Event)
|
||||
# These attributes should be set by subclasses:
|
||||
self.concurrency_limit: int | float | None
|
||||
self.concurrency_limit: int | None
|
||||
self.event_handler: HandlerType | None
|
||||
self.time_limit: float | None
|
||||
self.modality: Literal["video", "audio", "audio-video"]
|
||||
|
||||
Reference in New Issue
Block a user