mirror of
https://github.com/HumanAIGC-Engineering/gradio-webrtc.git
synced 2026-02-04 09:29:23 +08:00
1490 lines
43 KiB
HTML
1490 lines
43 KiB
HTML
|
|
<!doctype html>
|
|
<html lang="en" class="no-js">
|
|
<head>
|
|
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
|
|
|
|
|
|
<link rel="canonical" href="https://fastrtc.org/reference/stream/">
|
|
|
|
|
|
<link rel="prev" href="../../faq/">
|
|
|
|
|
|
<link rel="next" href="../reply_on_pause/">
|
|
|
|
|
|
<link rel="icon" href="../../fastrtc_logo.png">
|
|
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.14">
|
|
|
|
|
|
|
|
<title>Stream - FastRTC</title>
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="../../assets/stylesheets/main.342714a4.min.css">
|
|
|
|
|
|
<link rel="stylesheet" href="../../assets/stylesheets/palette.06af60db.min.css">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
|
|
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="../../stylesheets/extra.css">
|
|
|
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/github-dark.min.css">
|
|
|
|
<script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</head>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<body dir="ltr" data-md-color-scheme="fastrtc-dark" data-md-color-primary="indigo" data-md-color-accent="indigo">
|
|
|
|
|
|
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
|
|
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
|
|
<label class="md-overlay" for="__drawer"></label>
|
|
<div data-md-component="skip">
|
|
|
|
|
|
<a href="#stream-class" class="md-skip">
|
|
Skip to content
|
|
</a>
|
|
|
|
</div>
|
|
<div data-md-component="announce">
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<header class="md-header md-header--shadow" data-md-component="header">
|
|
<nav class="md-header__inner md-grid" aria-label="Header">
|
|
<a href="../.." title="FastRTC"
|
|
class="md-header__button md-logo" aria-label="FastRTC" data-md-component="logo">
|
|
|
|
<img src="../../fastrtc_logo.png" alt="logo">
|
|
|
|
</a>
|
|
<label class="md-header__button md-icon" for="__drawer">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
|
|
</label>
|
|
<div class="md-header__title" data-md-component="header-title">
|
|
<div class="md-header__ellipsis">
|
|
<div class="md-header__topic">
|
|
<span class="md-ellipsis">
|
|
FastRTC
|
|
</span>
|
|
</div>
|
|
<div class="md-header__topic" data-md-component="header-topic">
|
|
<span class="md-ellipsis">
|
|
|
|
Stream
|
|
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div style="display: flex; align-items: center; margin-right: 1rem;">
|
|
<a href="https://hf.co/fastrtc" target="_blank" rel="noopener noreferrer">
|
|
<img src="/hf-logo.svg"
|
|
onerror="this.onerror=null; this.src='https://huggingface.co/datasets/freddyaboulton/bucket/resolve/main/hf-logo.svg';"
|
|
style="height: 24px; margin-right: 10px;">
|
|
</a>
|
|
<a href="https://gradio.app" target="_blank" rel="noopener noreferrer">
|
|
<img src="/gradio-logo.svg"
|
|
onerror="this.onerror=null; this.src='https://huggingface.co/datasets/freddyaboulton/bucket/resolve/main/gradio-logo.svg';"
|
|
style="height: 24px; margin-right: 10px;">
|
|
</a>
|
|
<a href="https://discord.gg/TSWU7HyaYu" target="_blank" rel="noopener noreferrer">
|
|
<img src="/Discord-Symbol-White.svg" style="height: 16px; margin-right: 10px;">
|
|
</a>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="md-header__source">
|
|
<a href="https://github.com/gradio-app/fastrtc" title="Go to repository" class="md-source" data-md-component="source">
|
|
<div class="md-source__icon md-icon">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
|
|
</div>
|
|
<div class="md-source__repository">
|
|
fastrtc
|
|
</div>
|
|
</a>
|
|
</div>
|
|
|
|
</nav>
|
|
|
|
</header>
|
|
|
|
<div class="md-container" data-md-component="container">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<main class="md-main" data-md-component="main">
|
|
<div class="md-main__inner md-grid">
|
|
|
|
|
|
|
|
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
|
|
<div class="md-sidebar__scrollwrap">
|
|
<div class="md-sidebar__inner">
|
|
|
|
|
|
|
|
|
|
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
|
|
<label class="md-nav__title" for="__drawer">
|
|
<a href="../.." title="FastRTC" class="md-nav__button md-logo" aria-label="FastRTC" data-md-component="logo">
|
|
|
|
<img src="../../fastrtc_logo.png" alt="logo">
|
|
|
|
</a>
|
|
FastRTC
|
|
</label>
|
|
|
|
<div class="md-nav__source">
|
|
<a href="https://github.com/gradio-app/fastrtc" title="Go to repository" class="md-source" data-md-component="source">
|
|
<div class="md-source__icon md-icon">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
|
|
</div>
|
|
<div class="md-source__repository">
|
|
fastrtc
|
|
</div>
|
|
</a>
|
|
</div>
|
|
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../.." class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Home
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" >
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
User Guide
|
|
|
|
</span>
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_2">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
User Guide
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../userguide/streams/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Core Concepts
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../userguide/audio/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Audio Streaming
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../userguide/video/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Video Streaming
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../userguide/audio-video/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Audio-Video Streaming
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../userguide/gradio/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Gradio
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../userguide/api/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
API
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../cookbook/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Cookbook
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../deployment/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Deployment
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../advanced-configuration/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Advanced Configuration
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" >
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Plugin Ecosystem
|
|
|
|
</span>
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_6">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Plugin Ecosystem
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../text_to_speech_gallery/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Text-to-Speech Gallery
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../speech_to_text_gallery/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Speech-to-Text Gallery
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../turn_taking_gallery/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Turn-taking Gallery
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../utils/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Utils
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../faq/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Frequently Asked Questions
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9" checked>
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="0">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
API Reference
|
|
|
|
</span>
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="true">
|
|
<label class="md-nav__title" for="__nav_9">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
API Reference
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--active">
|
|
|
|
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
|
|
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__link md-nav__link--active" for="__toc">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Stream
|
|
|
|
</span>
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<a href="./" class="md-nav__link md-nav__link--active">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Stream
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
|
|
|
|
|
|
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__title" for="__toc">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Table of contents
|
|
</label>
|
|
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#attributes" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Attributes
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#methods" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Methods
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Methods">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mount" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
mount
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#fastphone" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
fastphone
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#offer" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
offer
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#handle_incoming_call" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
handle_incoming_call
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#telephone_handler" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
telephone_handler
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#websocket_offer" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
websocket_offer
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#properties" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Properties
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Properties">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#ui" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ui
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../reply_on_pause/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Pause Detection Handlers
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../stream_handlers/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Stream Handlers
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../utils/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Utils
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../credentials/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
TURN Credentials
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
|
|
<div class="md-sidebar__scrollwrap">
|
|
<div class="md-sidebar__inner">
|
|
|
|
|
|
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__title" for="__toc">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Table of contents
|
|
</label>
|
|
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#attributes" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Attributes
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#methods" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Methods
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Methods">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mount" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
mount
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#fastphone" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
fastphone
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#offer" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
offer
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#handle_incoming_call" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
handle_incoming_call
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#telephone_handler" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
telephone_handler
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#websocket_offer" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
websocket_offer
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#properties" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Properties
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Properties">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#ui" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ui
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="md-content" data-md-component="content">
|
|
<article class="md-content__inner md-typeset">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<h1 id="stream-class"><code>Stream</code> Class</h1>
|
|
<div class="language-python highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="n">Stream</span><span class="p">(</span>
|
|
</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="n">handler</span><span class="p">:</span> <span class="n">HandlerType</span><span class="p">,</span>
|
|
</span><span id="__span-0-3"><a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a> <span class="o">*</span><span class="p">,</span>
|
|
</span><span id="__span-0-4"><a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a> <span class="n">additional_outputs_handler</span><span class="p">:</span> <span class="n">Callable</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
</span><span id="__span-0-5"><a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a> <span class="n">mode</span><span class="p">:</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"send-receive"</span><span class="p">,</span> <span class="s2">"receive"</span><span class="p">,</span> <span class="s2">"send"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"send-receive"</span><span class="p">,</span>
|
|
</span><span id="__span-0-6"><a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a> <span class="n">modality</span><span class="p">:</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"video"</span><span class="p">,</span> <span class="s2">"audio"</span><span class="p">,</span> <span class="s2">"audio-video"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"video"</span><span class="p">,</span>
|
|
</span><span id="__span-0-7"><a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a> <span class="n">concurrency_limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">|</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"default"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"default"</span><span class="p">,</span>
|
|
</span><span id="__span-0-8"><a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a> <span class="n">time_limit</span><span class="p">:</span> <span class="nb">float</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
</span><span id="__span-0-9"><a id="__codelineno-0-9" name="__codelineno-0-9" href="#__codelineno-0-9"></a> <span class="n">allow_extra_tracks</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
|
|
</span><span id="__span-0-10"><a id="__codelineno-0-10" name="__codelineno-0-10" href="#__codelineno-0-10"></a> <span class="n">rtp_params</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
</span><span id="__span-0-11"><a id="__codelineno-0-11" name="__codelineno-0-11" href="#__codelineno-0-11"></a> <span class="n">rtc_configuration</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
</span><span id="__span-0-12"><a id="__codelineno-0-12" name="__codelineno-0-12" href="#__codelineno-0-12"></a> <span class="n">track_constraints</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
</span><span id="__span-0-13"><a id="__codelineno-0-13" name="__codelineno-0-13" href="#__codelineno-0-13"></a> <span class="n">additional_inputs</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="n">Component</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
</span><span id="__span-0-14"><a id="__codelineno-0-14" name="__codelineno-0-14" href="#__codelineno-0-14"></a> <span class="n">additional_outputs</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="n">Component</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
</span><span id="__span-0-15"><a id="__codelineno-0-15" name="__codelineno-0-15" href="#__codelineno-0-15"></a> <span class="n">ui_args</span><span class="p">:</span> <span class="n">UIArgs</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</span><span id="__span-0-16"><a id="__codelineno-0-16" name="__codelineno-0-16" href="#__codelineno-0-16"></a><span class="p">)</span>
|
|
</span></code></pre></div>
|
|
<p>Define an audio or video stream with a built-in UI, mountable on a FastAPI app.</p>
|
|
<p>This class encapsulates the logic for handling real-time communication (WebRTC) streams, including setting up peer connections, managing tracks, generating a Gradio user interface, and integrating with FastAPI for API endpoints. It supports different modes (send, receive, send-receive) and modalities (audio, video, audio-video), and can optionally handle additional Gradio input/output components alongside the stream. It also provides functionality for telephone integration via the FastPhone service.</p>
|
|
<h2 id="attributes">Attributes</h2>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th style="text-align: left;">Name</th>
|
|
<th style="text-align: left;">Type</th>
|
|
<th style="text-align: left;">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td style="text-align: left;"><code>mode</code></td>
|
|
<td style="text-align: left;"><code>Literal["send-receive", "receive", "send"]</code></td>
|
|
<td style="text-align: left;">The direction of the stream.</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>modality</code></td>
|
|
<td style="text-align: left;"><code>Literal["video", "audio", "audio-video"]</code></td>
|
|
<td style="text-align: left;">The type of media stream.</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>rtp_params</code></td>
|
|
<td style="text-align: left;"><code>dict[str, Any] \| None</code></td>
|
|
<td style="text-align: left;">Parameters for RTP encoding.</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>event_handler</code></td>
|
|
<td style="text-align: left;"><code>HandlerType</code></td>
|
|
<td style="text-align: left;">The main function to process stream data.</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>concurrency_limit</code></td>
|
|
<td style="text-align: left;"><code>int</code></td>
|
|
<td style="text-align: left;">The maximum number of concurrent connections allowed.</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>time_limit</code></td>
|
|
<td style="text-align: left;"><code>float \| None</code></td>
|
|
<td style="text-align: left;">Time limit in seconds for the event handler execution.</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>allow_extra_tracks</code></td>
|
|
<td style="text-align: left;"><code>bool</code></td>
|
|
<td style="text-align: left;">Whether to allow extra tracks beyond the specified modality.</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>additional_output_components</code></td>
|
|
<td style="text-align: left;"><code>list[Component] \| None</code></td>
|
|
<td style="text-align: left;">Extra Gradio output components.</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>additional_input_components</code></td>
|
|
<td style="text-align: left;"><code>list[Component] \| None</code></td>
|
|
<td style="text-align: left;">Extra Gradio input components.</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>additional_outputs_handler</code></td>
|
|
<td style="text-align: left;"><code>Callable \| None</code></td>
|
|
<td style="text-align: left;">Handler for additional outputs.</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>track_constraints</code></td>
|
|
<td style="text-align: left;"><code>dict[str, Any] \| None</code></td>
|
|
<td style="text-align: left;">Constraints for media tracks (e.g., resolution).</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>webrtc_component</code></td>
|
|
<td style="text-align: left;"><code>WebRTC</code></td>
|
|
<td style="text-align: left;">The underlying Gradio WebRTC component instance.</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>rtc_configuration</code></td>
|
|
<td style="text-align: left;"><code>dict[str, Any] \| None \| Callable</code></td>
|
|
<td style="text-align: left;">Configuration for the RTCPeerConnection (e.g., ICE servers).</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>server_rtc_configuration</code></td>
|
|
<td style="text-align: left;"><code>dict[str, Any] \| None</code></td>
|
|
<td style="text-align: left;">Configuration for the RTCPeerConnection (e.g., ICE servers) to be used in the server</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>_ui</code></td>
|
|
<td style="text-align: left;"><code>Blocks</code></td>
|
|
<td style="text-align: left;">The Gradio Blocks UI instance.</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<h2 id="methods">Methods</h2>
|
|
<h3 id="mount"><code>mount</code></h3>
|
|
<div class="language-python highlight"><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="n">mount</span><span class="p">(</span><span class="n">app</span><span class="p">:</span> <span class="n">FastAPI</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">""</span><span class="p">)</span>
|
|
</span></code></pre></div>
|
|
<p>Mount the stream's API endpoints onto a FastAPI application.</p>
|
|
<p>This method adds the necessary routes (<code>/webrtc/offer</code>, <code>/telephone/handler</code>, <code>/telephone/incoming</code>, <code>/websocket/offer</code>) to the provided FastAPI app, prefixed with the optional <code>path</code>. It also injects a startup message into the app's lifespan.</p>
|
|
<p><strong>Args:</strong></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th style="text-align: left;">Name</th>
|
|
<th style="text-align: left;">Type</th>
|
|
<th style="text-align: left;">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td style="text-align: left;"><code>app</code></td>
|
|
<td style="text-align: left;"><code>FastAPI</code></td>
|
|
<td style="text-align: left;">The FastAPI application instance.</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>path</code></td>
|
|
<td style="text-align: left;"><code>str</code></td>
|
|
<td style="text-align: left;">An optional URL prefix for the mounted routes.</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<hr />
|
|
<h3 id="fastphone"><code>fastphone</code></h3>
|
|
<div class="language-python highlight"><pre><span></span><code><span id="__span-2-1"><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a><span class="n">fastphone</span><span class="p">(</span>
|
|
</span><span id="__span-2-2"><a id="__codelineno-2-2" name="__codelineno-2-2" href="#__codelineno-2-2"></a> <span class="n">token</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
</span><span id="__span-2-3"><a id="__codelineno-2-3" name="__codelineno-2-3" href="#__codelineno-2-3"></a> <span class="n">host</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"127.0.0.1"</span><span class="p">,</span>
|
|
</span><span id="__span-2-4"><a id="__codelineno-2-4" name="__codelineno-2-4" href="#__codelineno-2-4"></a> <span class="n">port</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">8000</span><span class="p">,</span>
|
|
</span><span id="__span-2-5"><a id="__codelineno-2-5" name="__codelineno-2-5" href="#__codelineno-2-5"></a> <span class="o">**</span><span class="n">kwargs</span>
|
|
</span><span id="__span-2-6"><a id="__codelineno-2-6" name="__codelineno-2-6" href="#__codelineno-2-6"></a><span class="p">)</span>
|
|
</span></code></pre></div>
|
|
<p>Launch the FastPhone service for telephone integration.</p>
|
|
<p>Starts a local FastAPI server, mounts the stream, creates a public tunnel (using Gradio's tunneling), registers the tunnel URL with the FastPhone backend service, and prints the assigned phone number and access code. This allows users to call the phone number and interact with the stream handler.</p>
|
|
<p><strong>Args:</strong></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th style="text-align: left;">Name</th>
|
|
<th style="text-align: left;">Type</th>
|
|
<th style="text-align: left;">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td style="text-align: left;"><code>token</code></td>
|
|
<td style="text-align: left;"><code>str \| None</code></td>
|
|
<td style="text-align: left;">Optional Hugging Face Hub token for authentication with the FastPhone service. If None, attempts to find one automatically.</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>host</code></td>
|
|
<td style="text-align: left;"><code>str</code></td>
|
|
<td style="text-align: left;">The local host address to bind the server to.</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>port</code></td>
|
|
<td style="text-align: left;"><code>int</code></td>
|
|
<td style="text-align: left;">The local port to bind the server to.</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>**kwargs</code></td>
|
|
<td style="text-align: left;"></td>
|
|
<td style="text-align: left;">Additional keyword arguments passed to <code>uvicorn.run</code>.</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p><strong>Raises:</strong></p>
|
|
<ul>
|
|
<li><strong><code>httpx.HTTPStatusError</code></strong>: If registration with the FastPhone service fails.</li>
|
|
<li><strong><code>RuntimeError</code></strong>: If running in Colab/Spaces without <code>rtc_configuration</code>.</li>
|
|
</ul>
|
|
<h3 id="offer"><code>offer</code></h3>
|
|
<div class="language-python highlight"><pre><span></span><code><span id="__span-3-1"><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a><span class="k">async</span> <span class="n">offer</span><span class="p">(</span><span class="n">body</span><span class="p">:</span> <span class="n">Body</span><span class="p">)</span>
|
|
</span></code></pre></div>
|
|
<p>Handle an incoming WebRTC offer via HTTP POST.</p>
|
|
<p>Processes the SDP offer and ICE candidates from the client to establish a WebRTC connection.</p>
|
|
<p><strong>Args:</strong></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th style="text-align: left;">Name</th>
|
|
<th style="text-align: left;">Type</th>
|
|
<th style="text-align: left;">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td style="text-align: left;"><code>body</code></td>
|
|
<td style="text-align: left;"><code>Body</code></td>
|
|
<td style="text-align: left;">A Pydantic model containing the SDP offer, optional ICE candidate, type ('offer'), and a unique WebRTC ID.</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p><strong>Returns:</strong></p>
|
|
<ul>
|
|
<li>A dictionary containing the SDP answer generated by the server.</li>
|
|
</ul>
|
|
<hr />
|
|
<h3 id="handle_incoming_call"><code>handle_incoming_call</code></h3>
|
|
<div class="language-python highlight"><pre><span></span><code><span id="__span-4-1"><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a><span class="k">async</span> <span class="n">handle_incoming_call</span><span class="p">(</span><span class="n">request</span><span class="p">:</span> <span class="n">Request</span><span class="p">)</span>
|
|
</span></code></pre></div>
|
|
<p>Handle incoming telephone calls (e.g., via Twilio).</p>
|
|
<p>Generates TwiML instructions to connect the incoming call to the WebSocket handler (<code>/telephone/handler</code>) for audio streaming.</p>
|
|
<p><strong>Args:</strong></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th style="text-align: left;">Name</th>
|
|
<th style="text-align: left;">Type</th>
|
|
<th style="text-align: left;">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td style="text-align: left;"><code>request</code></td>
|
|
<td style="text-align: left;"><code>Request</code></td>
|
|
<td style="text-align: left;">The FastAPI Request object for the incoming call webhook.</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p><strong>Returns:</strong></p>
|
|
<ul>
|
|
<li>An <code>HTMLResponse</code> containing the TwiML instructions as XML.</li>
|
|
</ul>
|
|
<hr />
|
|
<h3 id="telephone_handler"><code>telephone_handler</code></h3>
|
|
<div class="language-python highlight"><pre><span></span><code><span id="__span-5-1"><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a><span class="k">async</span> <span class="n">telephone_handler</span><span class="p">(</span><span class="n">websocket</span><span class="p">:</span> <span class="n">WebSocket</span><span class="p">)</span>
|
|
</span></code></pre></div>
|
|
<p>The websocket endpoint for streaming audio over Twilio phone.</p>
|
|
<p><strong>Args:</strong></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th style="text-align: left;">Name</th>
|
|
<th style="text-align: left;">Type</th>
|
|
<th style="text-align: left;">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td style="text-align: left;"><code>websocket</code></td>
|
|
<td style="text-align: left;"><code>WebSocket</code></td>
|
|
<td style="text-align: left;">The incoming WebSocket connection object.</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<hr />
|
|
<h3 id="websocket_offer"><code>websocket_offer</code></h3>
|
|
<div class="language-python highlight"><pre><span></span><code><span id="__span-6-1"><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a><span class="k">async</span> <span class="n">websocket_offer</span><span class="p">(</span><span class="n">websocket</span><span class="p">:</span> <span class="n">WebSocket</span><span class="p">)</span>
|
|
</span></code></pre></div>
|
|
<p>Establish a Websocket connection to the Stream..</p>
|
|
<p><strong>Args:</strong></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th style="text-align: left;">Name</th>
|
|
<th style="text-align: left;">Type</th>
|
|
<th style="text-align: left;">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td style="text-align: left;"><code>websocket</code></td>
|
|
<td style="text-align: left;"><code>WebSocket</code></td>
|
|
<td style="text-align: left;">The incoming WebSocket connection object.</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<h2 id="properties">Properties</h2>
|
|
<h3 id="ui"><code>ui</code></h3>
|
|
<div class="language-python highlight"><pre><span></span><code><span id="__span-7-1"><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a><span class="nd">@property</span>
|
|
</span><span id="__span-7-2"><a id="__codelineno-7-2" name="__codelineno-7-2" href="#__codelineno-7-2"></a><span class="n">ui</span><span class="p">()</span> <span class="o">-></span> <span class="n">Blocks</span>
|
|
</span></code></pre></div>
|
|
<p>Get the Gradio Blocks UI instance associated with this stream.</p>
|
|
<p><strong>Returns:</strong></p>
|
|
<ul>
|
|
<li>The <code>gradio.Blocks</code> UI instance.</li>
|
|
</ul>
|
|
<div class="language-python highlight"><pre><span></span><code><span id="__span-8-1"><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a><span class="nd">@ui</span><span class="o">.</span><span class="n">setter</span>
|
|
</span><span id="__span-8-2"><a id="__codelineno-8-2" name="__codelineno-8-2" href="#__codelineno-8-2"></a><span class="n">ui</span><span class="p">(</span><span class="n">blocks</span><span class="p">:</span> <span class="n">Blocks</span><span class="p">)</span>
|
|
</span></code></pre></div>
|
|
<p>Set a custom Gradio Blocks UI for this stream.</p>
|
|
<p><strong>Args:</strong></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th style="text-align: left;">Name</th>
|
|
<th style="text-align: left;">Type</th>
|
|
<th style="text-align: left;">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td style="text-align: left;"><code>blocks</code></td>
|
|
<td style="text-align: left;"><code>Blocks</code></td>
|
|
<td style="text-align: left;">The <code>gradio.Blocks</code> instance to use as the UI.</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</article>
|
|
</div>
|
|
|
|
|
|
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
|
|
</div>
|
|
|
|
</main>
|
|
|
|
<footer class="md-footer">
|
|
|
|
<div class="md-footer-meta md-typeset">
|
|
<div class="md-footer-meta__inner md-grid">
|
|
<div class="md-copyright">
|
|
|
|
|
|
Made with
|
|
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
|
|
Material for MkDocs
|
|
</a>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
|
|
</div>
|
|
<div class="md-dialog" data-md-component="dialog">
|
|
<div class="md-dialog__inner md-typeset"></div>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<script id="__config" type="application/json">{"base": "../..", "features": ["content.code.copy", "content.code.annotate", "navigation.indexes"], "search": "../../assets/javascripts/workers/search.d50fe291.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script>
|
|
|
|
|
|
<script src="../../assets/javascripts/bundle.13a4f30d.min.js"></script>
|
|
|
|
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
|
|
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js"></script>
|
|
|
|
|
|
</body>
|
|
</html> |