From 077f080579e1e021cc9980b4738a1794ff558e79 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 28 Mar 2024 09:22:13 +0000 Subject: [PATCH] deploy: 70a6fbf39abab7487789a0d802b389f967a7e778 --- 404.html | 2 +- assets/js/5e68c76a.a7a967da.js | 1 + assets/js/5e68c76a.cb281847.js | 1 - assets/js/d30da6cd.7551d2b4.js | 1 + assets/js/d30da6cd.abf6c8bc.js | 1 - .../{runtime~main.765556ff.js => runtime~main.71a62cce.js} | 2 +- docs/api/components/Image.html | 2 +- docs/api/components/InputStream.html | 2 +- docs/api/components/Rescaler.html | 2 +- docs/api/components/Shader.html | 2 +- docs/api/components/Text.html | 2 +- docs/api/components/Tiles.html | 2 +- docs/api/components/View.html | 2 +- docs/api/components/WebView.html | 2 +- docs/api/generated/component-Image.html | 2 +- docs/api/generated/component-InputStream.html | 2 +- docs/api/generated/component-Rescaler.html | 2 +- docs/api/generated/component-Text.html | 2 +- docs/api/generated/component-Tiles.html | 2 +- docs/api/generated/component-View.html | 2 +- docs/api/generated/component-WebView.html | 2 +- docs/api/generated/renderer-Mp4.html | 2 +- docs/api/generated/renderer-OutputStream.html | 5 +++-- docs/api/generated/renderer-RtpInputStream.html | 2 +- docs/api/generated/renderer-Shader.html | 2 +- docs/api/generated/renderer-WebRenderer.html | 2 +- docs/api/inputs/mp4.html | 2 +- docs/api/inputs/rtp.html | 2 +- docs/api/outputs/rtp.html | 5 +++-- docs/api/renderers/image.html | 2 +- docs/api/renderers/shader.html | 2 +- docs/api/renderers/web.html | 2 +- docs/api/routes.html | 2 +- docs/category/api-reference.html | 2 +- docs/category/deployment.html | 2 +- docs/common/absolute-position.html | 2 +- docs/concept/component.html | 2 +- docs/concept/layouts.html | 2 +- docs/concept/shaders.html | 2 +- docs/concept/web.html | 2 +- docs/deployment/configuration.html | 2 +- docs/get-started.html | 2 +- docs/get-started/elixir.html | 2 +- docs/get-started/node.html | 2 +- docs/intro.html | 2 +- index.html | 2 +- 46 files changed, 48 insertions(+), 46 deletions(-) create mode 100644 assets/js/5e68c76a.a7a967da.js delete mode 100644 assets/js/5e68c76a.cb281847.js create mode 100644 assets/js/d30da6cd.7551d2b4.js delete mode 100644 assets/js/d30da6cd.abf6c8bc.js rename assets/js/{runtime~main.765556ff.js => runtime~main.71a62cce.js} (97%) diff --git a/404.html b/404.html index 5e2a67ebd..cdbbb302c 100644 --- a/404.html +++ b/404.html @@ -4,7 +4,7 @@ Page Not Found | Live Compositor - + diff --git a/assets/js/5e68c76a.a7a967da.js b/assets/js/5e68c76a.a7a967da.js new file mode 100644 index 000000000..ee6e66e95 --- /dev/null +++ b/assets/js/5e68c76a.a7a967da.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcompositor_live=self.webpackChunkcompositor_live||[]).push([[7247],{936:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>p,frontMatter:()=>s,metadata:()=>d,toc:()=>c});var t=i(5893),r=i(1151);const s={},o=void 0,d={id:"api/generated/renderer-OutputStream",title:"renderer-OutputStream",description:"OutputStream",source:"@site/pages/api/generated/renderer-OutputStream.md",sourceDirName:"api/generated",slug:"/api/generated/renderer-OutputStream",permalink:"/docs/api/generated/renderer-OutputStream",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{}},l={},c=[{value:"OutputStream",id:"outputstream",level:2},{value:"Properties",id:"properties",level:4},{value:"OutputVideoOptions",id:"outputvideooptions",level:2},{value:"Properties",id:"properties-1",level:4},{value:"Resolution",id:"resolution",level:2},{value:"Properties",id:"properties-2",level:4},{value:"OutputEndCondition",id:"outputendcondition",level:2},{value:"Properties",id:"properties-3",level:4},{value:"OutputAudioOptions",id:"outputaudiooptions",level:2},{value:"Properties",id:"properties-4",level:4},{value:"Audio",id:"audio",level:2},{value:"Properties",id:"properties-5",level:4},{value:"InputAudio",id:"inputaudio",level:2},{value:"Properties",id:"properties-6",level:4}];function u(e){const n={a:"a",code:"code",h2:"h2",h4:"h4",li:"li",pre:"pre",strong:"strong",ul:"ul",...(0,r.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h2,{id:"outputstream",children:"OutputStream"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",children:'type OutputStream = {\n output_id: string;\n port: string | u16;\n ip?: string;\n transport_protocol?: "udp" | "tcp_server";\n video?: OutputVideoOptions;\n audio?: OutputAudioOptions;\n}\n'})}),"\n",(0,t.jsx)(n.h4,{id:"properties",children:"Properties"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"output_id"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"port"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"ip"})}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"transport_protocol"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:'"udp"'})," - UDP protocol."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:'"tcp_server"'})," - TCP protocol where LiveCompositor is the server side of the connection."]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"video"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"audio"})}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"outputvideooptions",children:"OutputVideoOptions"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",children:'type OutputVideoOptions = {\n resolution: Resolution;\n encoder_preset: \n | "ultrafast"\n | "superfast"\n | "veryfast"\n | "faster"\n | "fast"\n | "medium"\n | "slow"\n | "slower"\n | "veryslow"\n | "placebo";\n ffmpeg_options?: {\n};\n initial: Component;\n send_eos_when?: OutputEndCondition;\n}\n'})}),"\n",(0,t.jsx)(n.h4,{id:"properties-1",children:"Properties"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"resolution"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"encoder_preset"})}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"ffmpeg_options"})," - Raw FFmpeg encoder options. See ",(0,t.jsx)(n.a,{href:"https://ffmpeg.org/ffmpeg-codecs.html",children:"docs"})," for more."]}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"initial"})}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"send_eos_when"})," - Condition for termination of output stream based on the input streams states."]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"resolution",children:"Resolution"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",children:"type Resolution = {\n width: u32;\n height: u32;\n}\n"})}),"\n",(0,t.jsx)(n.h4,{id:"properties-2",children:"Properties"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"width"})," - Width in pixels."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"height"})," - Height in pixels."]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"outputendcondition",children:"OutputEndCondition"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",children:"type OutputEndCondition = {\n any_of?: string[];\n all_of?: string[];\n any_input?: bool;\n all_inputs?: bool;\n}\n"})}),"\n",(0,t.jsx)(n.h4,{id:"properties-3",children:"Properties"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"any_of"})," - Output will be terminated if any of the listed input streams are finished.\nInput stream is considered finished if: - Input never existed - RTCP Goodbye packet was received - MP4 track has ended - Input was unregistered (before or after output registration)\nIn particular, output stream will ",(0,t.jsx)(n.strong,{children:"be"})," terminated if no inputs were ever connected."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"all_of"})," - Output will be terminated if all of the listed input streams are finished. In particular, output stream will ",(0,t.jsx)(n.strong,{children:"be"})," terminated if no inputs were ever connected."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"any_input"})," - Output will be terminated in any of the input streams did terminate. This includes streams added after the output was registered. In particular, output stream will ",(0,t.jsx)(n.strong,{children:"not be"})," terminated if no inputs were ever connected."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"all_inputs"})," - Output will be terminated if all of the input streams are finished. In particular, output stream will ",(0,t.jsx)(n.strong,{children:"be"})," terminated if no inputs were ever connected."]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"outputaudiooptions",children:"OutputAudioOptions"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",children:'type OutputAudioOptions = {\n initial: Audio;\n channels: "mono" | "stereo";\n forward_error_correction?: bool;\n encoder_preset?: "quality" | "voip" | "lowest_latency";\n mixing_strategy?: "SumClip" | "SumScale";\n send_eos_when?: OutputEndCondition;\n}\n'})}),"\n",(0,t.jsx)(n.h4,{id:"properties-4",children:"Properties"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"initial"})," - Initial audio for output."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"channels"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:'"mono"'})," - Mono audio (single channel)."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:'"stereo"'})," - Stereo audio (two channels)."]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"forward_error_correction"})," - (",(0,t.jsxs)(n.strong,{children:["default=",(0,t.jsx)(n.code,{children:"false"})]}),") Specifies whether the stream use forward error correction. It's specific for Opus codec. For more information, check out ",(0,t.jsx)(n.a,{href:"https://datatracker.ietf.org/doc/html/rfc6716#section-2.1.7",children:"RFC"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"encoder_preset"})," - (",(0,t.jsx)(n.strong,{children:'default="voip"'}),") Specifies preset for audio output encoder.","\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:'"quality"'})," - Best for broadcast/high-fidelity application where the decoded audio should be as close as possible to the input."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:'"voip"'})," - Best for most VoIP/videoconference applications where listening quality and intelligibility matter most."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:'"lowest_latency"'})," - Only use when lowest-achievable latency is what matters most."]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"mixing_strategy"}),' - (**default="sum_clip") Specifies how audio should be mixed.',"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:'"SumClip"'})," - Firstly, input samples are summed. If the result is outside the i16 PCM range, it gets clipped."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:'"SumScale"'})," - Firstly, input samples are summed. If the result is outside the i16 PCM range, nearby summed samples are scaled down by factor, such that the summed wave is in the i16 PCM range."]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"send_eos_when"})," - Condition for termination of output stream based on the input streams states."]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"audio",children:"Audio"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",children:"type Audio = {\n inputs: InputAudio[];\n}\n"})}),"\n",(0,t.jsx)(n.h4,{id:"properties-5",children:"Properties"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"inputs"})}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"inputaudio",children:"InputAudio"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",children:"type InputAudio = {\n input_id: string;\n volume?: f32;\n}\n"})}),"\n",(0,t.jsx)(n.h4,{id:"properties-6",children:"Properties"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"input_id"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"volume"})}),"\n"]})]})}function p(e={}){const{wrapper:n}={...(0,r.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(u,{...e})}):u(e)}},1151:(e,n,i)=>{i.d(n,{Z:()=>d,a:()=>o});var t=i(7294);const r={},s=t.createContext(r);function o(e){const n=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),t.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/5e68c76a.cb281847.js b/assets/js/5e68c76a.cb281847.js deleted file mode 100644 index 093d803f4..000000000 --- a/assets/js/5e68c76a.cb281847.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkcompositor_live=self.webpackChunkcompositor_live||[]).push([[7247],{936:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>d,contentTitle:()=>o,default:()=>a,frontMatter:()=>s,metadata:()=>l,toc:()=>c});var t=i(5893),r=i(1151);const s={},o=void 0,l={id:"api/generated/renderer-OutputStream",title:"renderer-OutputStream",description:"OutputStream",source:"@site/pages/api/generated/renderer-OutputStream.md",sourceDirName:"api/generated",slug:"/api/generated/renderer-OutputStream",permalink:"/docs/api/generated/renderer-OutputStream",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{}},d={},c=[{value:"OutputStream",id:"outputstream",level:2},{value:"Properties",id:"properties",level:4},{value:"OutputVideoOptions",id:"outputvideooptions",level:2},{value:"Properties",id:"properties-1",level:4},{value:"Resolution",id:"resolution",level:2},{value:"Properties",id:"properties-2",level:4},{value:"OutputEndCondition",id:"outputendcondition",level:2},{value:"Properties",id:"properties-3",level:4},{value:"OutputAudioOptions",id:"outputaudiooptions",level:2},{value:"Properties",id:"properties-4",level:4},{value:"Audio",id:"audio",level:2},{value:"Properties",id:"properties-5",level:4},{value:"InputAudio",id:"inputaudio",level:2},{value:"Properties",id:"properties-6",level:4}];function u(e){const n={a:"a",code:"code",h2:"h2",h4:"h4",li:"li",pre:"pre",strong:"strong",ul:"ul",...(0,r.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h2,{id:"outputstream",children:"OutputStream"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",children:'type OutputStream = {\n output_id: string;\n port: string | u16;\n ip?: string;\n transport_protocol?: "udp" | "tcp_server";\n video?: OutputVideoOptions;\n audio?: OutputAudioOptions;\n}\n'})}),"\n",(0,t.jsx)(n.h4,{id:"properties",children:"Properties"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"output_id"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"port"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"ip"})}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"transport_protocol"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:'"udp"'})," - UDP protocol."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:'"tcp_server"'})," - TCP protocol where LiveCompositor is the server side of the connection."]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"video"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"audio"})}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"outputvideooptions",children:"OutputVideoOptions"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",children:'type OutputVideoOptions = {\n resolution: Resolution;\n encoder_preset: \n | "ultrafast"\n | "superfast"\n | "veryfast"\n | "faster"\n | "fast"\n | "medium"\n | "slow"\n | "slower"\n | "veryslow"\n | "placebo";\n initial: Component;\n send_eos_when?: OutputEndCondition;\n}\n'})}),"\n",(0,t.jsx)(n.h4,{id:"properties-1",children:"Properties"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"resolution"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"encoder_preset"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"initial"})}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"send_eos_when"})," - Condition for termination of output stream based on the input streams states."]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"resolution",children:"Resolution"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",children:"type Resolution = {\n width: u32;\n height: u32;\n}\n"})}),"\n",(0,t.jsx)(n.h4,{id:"properties-2",children:"Properties"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"width"})," - Width in pixels."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"height"})," - Height in pixels."]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"outputendcondition",children:"OutputEndCondition"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",children:"type OutputEndCondition = {\n any_of?: string[];\n all_of?: string[];\n any_input?: bool;\n all_inputs?: bool;\n}\n"})}),"\n",(0,t.jsx)(n.h4,{id:"properties-3",children:"Properties"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"any_of"})," - Output will be terminated if any of the listed input streams are finished.\nInput stream is considered finished if: - Input never existed - RTCP Goodbye packet was received - MP4 track has ended - Input was unregistered (before or after output registration)\nIn particular, output stream will ",(0,t.jsx)(n.strong,{children:"be"})," terminated if no inputs were ever connected."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"all_of"})," - Output will be terminated if all of the listed input streams are finished. In particular, output stream will ",(0,t.jsx)(n.strong,{children:"be"})," terminated if no inputs were ever connected."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"any_input"})," - Output will be terminated in any of the input streams did terminate. This includes streams added after the output was registered. In particular, output stream will ",(0,t.jsx)(n.strong,{children:"not be"})," terminated if no inputs were ever connected."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"all_inputs"})," - Output will be terminated if all of the input streams are finished. In particular, output stream will ",(0,t.jsx)(n.strong,{children:"be"})," terminated if no inputs were ever connected."]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"outputaudiooptions",children:"OutputAudioOptions"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",children:'type OutputAudioOptions = {\n initial: Audio;\n channels: "mono" | "stereo";\n forward_error_correction?: bool;\n encoder_preset?: "quality" | "voip" | "lowest_latency";\n mixing_strategy?: "SumClip" | "SumScale";\n send_eos_when?: OutputEndCondition;\n}\n'})}),"\n",(0,t.jsx)(n.h4,{id:"properties-4",children:"Properties"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"initial"})," - Initial audio for output."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"channels"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:'"mono"'})," - Mono audio (single channel)."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:'"stereo"'})," - Stereo audio (two channels)."]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"forward_error_correction"})," - (",(0,t.jsxs)(n.strong,{children:["default=",(0,t.jsx)(n.code,{children:"false"})]}),") Specifies whether the stream use forward error correction. It's specific for Opus codec. For more information, check out ",(0,t.jsx)(n.a,{href:"https://datatracker.ietf.org/doc/html/rfc6716#section-2.1.7",children:"RFC"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"encoder_preset"})," - (",(0,t.jsx)(n.strong,{children:'default="voip"'}),") Specifies preset for audio output encoder.","\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:'"quality"'})," - Best for broadcast/high-fidelity application where the decoded audio should be as close as possible to the input."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:'"voip"'})," - Best for most VoIP/videoconference applications where listening quality and intelligibility matter most."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:'"lowest_latency"'})," - Only use when lowest-achievable latency is what matters most."]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"mixing_strategy"}),' - (**default="sum_clip") Specifies how audio should be mixed.',"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:'"SumClip"'})," - Firstly, input samples are summed. If the result is outside the i16 PCM range, it gets clipped."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:'"SumScale"'})," - Firstly, input samples are summed. If the result is outside the i16 PCM range, nearby summed samples are scaled down by factor, such that the summed wave is in the i16 PCM range."]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"send_eos_when"})," - Condition for termination of output stream based on the input streams states."]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"audio",children:"Audio"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",children:"type Audio = {\n inputs: InputAudio[];\n}\n"})}),"\n",(0,t.jsx)(n.h4,{id:"properties-5",children:"Properties"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"inputs"})}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"inputaudio",children:"InputAudio"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-typescript",children:"type InputAudio = {\n input_id: string;\n volume?: f32;\n}\n"})}),"\n",(0,t.jsx)(n.h4,{id:"properties-6",children:"Properties"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"input_id"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"volume"})}),"\n"]})]})}function a(e={}){const{wrapper:n}={...(0,r.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(u,{...e})}):u(e)}},1151:(e,n,i)=>{i.d(n,{Z:()=>l,a:()=>o});var t=i(7294);const r={},s=t.createContext(r);function o(e){const n=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),t.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d30da6cd.7551d2b4.js b/assets/js/d30da6cd.7551d2b4.js new file mode 100644 index 000000000..77331f49d --- /dev/null +++ b/assets/js/d30da6cd.7551d2b4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcompositor_live=self.webpackChunkcompositor_live||[]).push([[6010],{7181:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>r,metadata:()=>d,toc:()=>c});var s=t(5893),i=t(1151);const r={},o="RTP",d={id:"api/outputs/rtp",title:"RTP",description:"An output type that allows streaming video and audio from the compositor over RTP.",source:"@site/pages/api/outputs/rtp.md",sourceDirName:"api/outputs",slug:"/api/outputs/rtp",permalink:"/docs/api/outputs/rtp",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{},sidebar:"sidebar",previous:{title:"Web Renderer",permalink:"/docs/api/renderers/web"},next:{title:"RTP",permalink:"/docs/api/inputs/rtp"}},l={},c=[];function a(e){const n={a:"a",code:"code",h1:"h1",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"rtp",children:"RTP"}),"\n",(0,s.jsx)(n.p,{children:"An output type that allows streaming video and audio from the compositor over RTP."}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-typescript",children:'type RegisterOutputStream = {\n output_id: string;\n transport_protocol?: "udp" | "tcp_server";\n port: u16;\n ip?: string;\n video?: Video;\n audio?: Audio;\n}\n'})}),"\n",(0,s.jsx)(n.p,{children:"Register a new RTP output stream."}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"output_id"})," - An identifier for the output stream. It can be used in the ",(0,s.jsx)(n.code,{children:"UpdateOutput"})," request to define what to render for the output stream."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transport_protocol"})," - (",(0,s.jsxs)(n.strong,{children:["default=",(0,s.jsx)(n.code,{children:'"udp"'})]}),") Transport layer protocol that will be used to send RTP packets.","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"udp"})," - UDP protocol."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"tcp_server"})," - TCP protocol where LiveCompositor is the server side of the connection."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"port"})," - Depends on the value of the ",(0,s.jsx)(n.code,{children:"transport_protocol"})," field:","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"udp"})," - An UDP port number that RTP packets will be sent to."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"tcp_server"})," - A local TCP port number or a port range that LiveCompositor will listen for incoming connections."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"ip"})," - Only valid if ",(0,s.jsx)(n.code,{children:'transport_protocol="udp"'}),". IP address where RTP packets should be sent to."]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-typescript",children:'type Video = {\n resolution: { width: number; height: number };\n encoder_preset?: VideoEncoderPreset;\n ffmpeg_options?: Map;\n send_eos_when?: EosCondition;\n initial: Component;\n}\n\ntype VideoEncoderPreset =\n | "ultrafast"\n | "superfast"\n | "veryfast"\n | "faster"\n | "fast"\n | "medium"\n | "slow"\n | "slower"\n | "veryslow"\n | "placebo"\n\n'})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"resolution"})," - Output resolution in pixels."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"encoder_preset"})," - (",(0,s.jsxs)(n.strong,{children:["default=",(0,s.jsx)(n.code,{children:'"fast"'})]}),") Preset for an encoder. See ",(0,s.jsx)(n.code,{children:"FFmpeg"})," ",(0,s.jsx)(n.a,{href:"https://trac.ffmpeg.org/wiki/Encode/H.264#Preset",children:"docs"})," to learn more."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"ffmepg_options"})," - Raw FFmpeg encoder options. See ",(0,s.jsx)(n.a,{href:"https://ffmpeg.org/ffmpeg-codecs.html",children:"docs"})," for more."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"send_eos_when"})," - Defines when output stream should end if some of the input streams are finished. If output includes both audio and video streams, then EOS needs to be sent on both."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"initial"})," - Root of a component tree/scene that should be rendered for the output. Use ",(0,s.jsxs)(n.a,{href:"/docs/api/routes#update-output",children:[(0,s.jsx)(n.code,{children:"update_output"})," request"]})," to update this value after registration. ",(0,s.jsx)(n.a,{href:"/docs/concept/component",children:"Learn more"}),"."]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-typescript",children:'type Audio = {\n channels: "stereo" | "mono";\n forward_error_correction?: boolean;\n encoder_preset?: AudioEncoderPreset;\n send_eos_when?: EosCondition;\n initial: {\n inputs: AudioInput[];\n };\n mixing_strategy?: "sum_clip" | "sum_scale" \n}\n\ntype AudioInput = {\n input_id: string;\n volume?: number;\n}\n\ntype AudioEncoderPreset =\n | "quality"\n | "voip"\n | "lowest_latency"\n\n'})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"channels"})," - Channel configuration for output audio."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"forward_error_correction"})," - (",(0,s.jsxs)(n.strong,{children:["default=",(0,s.jsx)(n.code,{children:"false"})]}),") Specifies whether the stream use forward error correction. It's specific for Opus codec. For more information, check out ",(0,s.jsx)(n.a,{href:"https://datatracker.ietf.org/doc/html/rfc6716#section-2.1.7",children:"RFC"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"encoder_preset"})," - (",(0,s.jsxs)(n.strong,{children:["default=",(0,s.jsx)(n.code,{children:'"voip"'})]}),") Preset for an encoder.","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"quality"})," - Best for broadcast/high-fidelity application where the decoded audio should be as close as possible to the input."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"voip"})," - Best for most VoIP/videoconference applications where listening quality and intelligibility matter most."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"lowest_latency"})," - Only use when lowest-achievable latency is what matters most."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"send_eos_when"})," - Defines when output stream should end if some of the input streams are finished. If output includes both audio and video streams, then EOS needs to be sent on both."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"initial"})," - Initial configuration for audio mixer for this output. Use ",(0,s.jsxs)(n.a,{href:"/docs/api/routes#update-output",children:[(0,s.jsx)(n.code,{children:"update_output"})," request"]})," to update this value after registration."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"initial.inputs[].input_id"})," - Input ID."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"initial.inputs[].volume"})," - (",(0,s.jsxs)(n.strong,{children:["default=",(0,s.jsx)(n.code,{children:"1.0"})]}),") Float in ",(0,s.jsx)(n.code,{children:"[0, 1]"})," range representing volume."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"mixing_strategy"})," - (",(0,s.jsxs)(n.strong,{children:["default=",(0,s.jsx)(n.code,{children:"sum_clip"})]}),") Specifies how input samples should be mixed:","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"sum_clip"})," - Firstly, input samples are summed. If the result sample is outside the i16 PCM range, it gets clipped."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"sum_scale"})," - Firstly, input samples are summed. If the result wave is outside the i16 PCM range, nearby samples are scaled down by factor, such that the summed wave is in the i16 PCM range."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-typescript",children:"type EosCondition = {\n any_input?: bool;\n all_inputs?: bool;\n any_of?: InputId[];\n all_of?: InputId[];\n}\n"})}),"\n",(0,s.jsx)(n.p,{children:"This type defines when end of an input stream should trigger end of the output stream. Only one of those fields can be set at the time."}),"\n",(0,s.jsx)(n.p,{children:"Unless specified otherwise the input stream is considered finished/ended when:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"TCP connection was dropped/closed."}),"\n",(0,s.jsxs)(n.li,{children:["RTCP Goodbye packet (",(0,s.jsx)(n.code,{children:"BYE"}),") was received."]}),"\n",(0,s.jsx)(n.li,{children:"Mp4 track has ended."}),"\n",(0,s.jsx)(n.li,{children:"Input was unregistered already (or never registered)."}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Options:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"any_of"})," - Terminate output stream if any of the input streams from the list are finished."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"all_of"})," - Terminate output stream if all the input streams from the list are finished."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"any_input"})," - Terminate output stream if any of the input streams ends. This includes streams added after the output was registered. In particular, output stream will ",(0,s.jsx)(n.strong,{children:"not be"})," terminated if no inputs were ever connected."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"all_inputs"})," - Terminate output stream if all the input streams finish. In particular, output stream will ",(0,s.jsx)(n.strong,{children:"be"})," terminated if no inputs were ever connected."]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,i.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>d,a:()=>o});var s=t(7294);const i={},r=s.createContext(i);function o(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),s.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d30da6cd.abf6c8bc.js b/assets/js/d30da6cd.abf6c8bc.js deleted file mode 100644 index a84626a38..000000000 --- a/assets/js/d30da6cd.abf6c8bc.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkcompositor_live=self.webpackChunkcompositor_live||[]).push([[6010],{7181:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>r,metadata:()=>d,toc:()=>c});var s=t(5893),i=t(1151);const r={},o="RTP",d={id:"api/outputs/rtp",title:"RTP",description:"An output type that allows streaming video and audio from the compositor over RTP.",source:"@site/pages/api/outputs/rtp.md",sourceDirName:"api/outputs",slug:"/api/outputs/rtp",permalink:"/docs/api/outputs/rtp",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{},sidebar:"sidebar",previous:{title:"Web Renderer",permalink:"/docs/api/renderers/web"},next:{title:"RTP",permalink:"/docs/api/inputs/rtp"}},l={},c=[];function a(e){const n={a:"a",code:"code",h1:"h1",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"rtp",children:"RTP"}),"\n",(0,s.jsx)(n.p,{children:"An output type that allows streaming video and audio from the compositor over RTP."}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-typescript",children:'type RegisterOutputStream = {\n output_id: string;\n transport_protocol?: "udp" | "tcp_server";\n port: u16;\n ip?: string;\n video?: Video;\n audio?: Audio;\n}\n'})}),"\n",(0,s.jsx)(n.p,{children:"Register a new RTP output stream."}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"output_id"})," - An identifier for the output stream. It can be used in the ",(0,s.jsx)(n.code,{children:"UpdateOutput"})," request to define what to render for the output stream."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"transport_protocol"})," - (",(0,s.jsxs)(n.strong,{children:["default=",(0,s.jsx)(n.code,{children:'"udp"'})]}),") Transport layer protocol that will be used to send RTP packets.","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"udp"})," - UDP protocol."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"tcp_server"})," - TCP protocol where LiveCompositor is the server side of the connection."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"port"})," - Depends on the value of the ",(0,s.jsx)(n.code,{children:"transport_protocol"})," field:","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"udp"})," - An UDP port number that RTP packets will be sent to."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"tcp_server"})," - A local TCP port number or a port range that LiveCompositor will listen for incoming connections."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"ip"})," - Only valid if ",(0,s.jsx)(n.code,{children:'transport_protocol="udp"'}),". IP address where RTP packets should be sent to."]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-typescript",children:'type Video = {\n resolution: { width: number; height: number };\n encoder_preset?: VideoEncoderPreset;\n send_eos_when?: EosCondition;\n initial: Component;\n}\n\ntype VideoEncoderPreset =\n | "ultrafast"\n | "superfast"\n | "veryfast"\n | "faster"\n | "fast"\n | "medium"\n | "slow"\n | "slower"\n | "veryslow"\n | "placebo"\n\n'})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"resolution"})," - Output resolution in pixels."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"encoder_preset"})," - (",(0,s.jsxs)(n.strong,{children:["default=",(0,s.jsx)(n.code,{children:'"fast"'})]}),") Preset for an encoder. See ",(0,s.jsx)(n.code,{children:"FFmpeg"})," ",(0,s.jsx)(n.a,{href:"https://trac.ffmpeg.org/wiki/Encode/H.264#Preset",children:"docs"})," to learn more."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"send_eos_when"})," - Defines when output stream should end if some of the input streams are finished. If output includes both audio and video streams, then EOS needs to be sent on both."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"initial"})," - Root of a component tree/scene that should be rendered for the output. Use ",(0,s.jsxs)(n.a,{href:"/docs/api/routes#update-output",children:[(0,s.jsx)(n.code,{children:"update_output"})," request"]})," to update this value after registration. ",(0,s.jsx)(n.a,{href:"/docs/concept/component",children:"Learn more"}),"."]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-typescript",children:'type Audio = {\n channels: "stereo" | "mono";\n forward_error_correction?: boolean;\n encoder_preset?: AudioEncoderPreset;\n send_eos_when?: EosCondition;\n initial: {\n inputs: AudioInput[];\n };\n mixing_strategy?: "sum_clip" | "sum_scale" \n}\n\ntype AudioInput = {\n input_id: string;\n volume?: number;\n}\n\ntype AudioEncoderPreset =\n | "quality"\n | "voip"\n | "lowest_latency"\n\n'})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"channels"})," - Channel configuration for output audio."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"forward_error_correction"})," - (",(0,s.jsxs)(n.strong,{children:["default=",(0,s.jsx)(n.code,{children:"false"})]}),") Specifies whether the stream use forward error correction. It's specific for Opus codec. For more information, check out ",(0,s.jsx)(n.a,{href:"https://datatracker.ietf.org/doc/html/rfc6716#section-2.1.7",children:"RFC"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"encoder_preset"})," - (",(0,s.jsxs)(n.strong,{children:["default=",(0,s.jsx)(n.code,{children:'"voip"'})]}),") Preset for an encoder.","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"quality"})," - Best for broadcast/high-fidelity application where the decoded audio should be as close as possible to the input."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"voip"})," - Best for most VoIP/videoconference applications where listening quality and intelligibility matter most."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"lowest_latency"})," - Only use when lowest-achievable latency is what matters most."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"send_eos_when"})," - Defines when output stream should end if some of the input streams are finished. If output includes both audio and video streams, then EOS needs to be sent on both."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"initial"})," - Initial configuration for audio mixer for this output. Use ",(0,s.jsxs)(n.a,{href:"/docs/api/routes#update-output",children:[(0,s.jsx)(n.code,{children:"update_output"})," request"]})," to update this value after registration."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"initial.inputs[].input_id"})," - Input ID."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"initial.inputs[].volume"})," - (",(0,s.jsxs)(n.strong,{children:["default=",(0,s.jsx)(n.code,{children:"1.0"})]}),") Float in ",(0,s.jsx)(n.code,{children:"[0, 1]"})," range representing volume."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"mixing_strategy"})," - (",(0,s.jsxs)(n.strong,{children:["default=",(0,s.jsx)(n.code,{children:"sum_clip"})]}),") Specifies how input samples should be mixed:","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"sum_clip"})," - Firstly, input samples are summed. If the result sample is outside the i16 PCM range, it gets clipped."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"sum_scale"})," - Firstly, input samples are summed. If the result wave is outside the i16 PCM range, nearby samples are scaled down by factor, such that the summed wave is in the i16 PCM range."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-typescript",children:"type EosCondition = {\n any_input?: bool;\n all_inputs?: bool;\n any_of?: InputId[];\n all_of?: InputId[];\n}\n"})}),"\n",(0,s.jsx)(n.p,{children:"This type defines when end of an input stream should trigger end of the output stream. Only one of those fields can be set at the time."}),"\n",(0,s.jsx)(n.p,{children:"Unless specified otherwise the input stream is considered finished/ended when:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"TCP connection was dropped/closed."}),"\n",(0,s.jsxs)(n.li,{children:["RTCP Goodbye packet (",(0,s.jsx)(n.code,{children:"BYE"}),") was received."]}),"\n",(0,s.jsx)(n.li,{children:"Mp4 track has ended."}),"\n",(0,s.jsx)(n.li,{children:"Input was unregistered already (or never registered)."}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Options:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"any_of"})," - Terminate output stream if any of the input streams from the list are finished."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"all_of"})," - Terminate output stream if all the input streams from the list are finished."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"any_input"})," - Terminate output stream if any of the input streams ends. This includes streams added after the output was registered. In particular, output stream will ",(0,s.jsx)(n.strong,{children:"not be"})," terminated if no inputs were ever connected."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"all_inputs"})," - Terminate output stream if all the input streams finish. In particular, output stream will ",(0,s.jsx)(n.strong,{children:"be"})," terminated if no inputs were ever connected."]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,i.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>d,a:()=>o});var s=t(7294);const i={},r=s.createContext(i);function o(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),s.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/runtime~main.765556ff.js b/assets/js/runtime~main.71a62cce.js similarity index 97% rename from assets/js/runtime~main.765556ff.js rename to assets/js/runtime~main.71a62cce.js index a83de19f1..e40c9cb9b 100644 --- a/assets/js/runtime~main.765556ff.js +++ b/assets/js/runtime~main.71a62cce.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,t,r,f,d={},c={};function o(e){var a=c[e];if(void 0!==a)return a.exports;var t=c[e]={exports:{}};return d[e].call(t.exports,t,t.exports,o),t.exports}o.m=d,e=[],o.O=(a,t,r,f)=>{if(!t){var d=1/0;for(i=0;i=f)&&Object.keys(o.O).every((e=>o.O[e](t[b])))?t.splice(b--,1):(c=!1,f0&&e[i-1][2]>f;i--)e[i]=e[i-1];e[i]=[t,r,f]},o.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return o.d(a,{a:a}),a},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var f=Object.create(null);o.r(f);var d={};a=a||[null,t({}),t([]),t(t)];for(var c=2&r&&e;"object"==typeof c&&!~a.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((a=>d[a]=()=>e[a]));return d.default=()=>e,o.d(f,d),f},o.d=(e,a)=>{for(var t in a)o.o(a,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:a[t]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((a,t)=>(o.f[t](e,a),a)),[])),o.u=e=>"assets/js/"+({2:"4e76d5b1",53:"935f2afb",222:"583850f4",580:"19a7aa20",821:"5732f308",1015:"d81783d9",1252:"914825a2",1342:"9641c2a9",1361:"be91778b",1538:"14eaa339",1724:"cd44186e",1778:"15cc4295",1792:"f3168f4a",2402:"42b33983",2676:"896f0ba9",2692:"f94d6d54",3237:"1df93b7f",3268:"7ef038ae",4368:"a94703ab",4771:"fca0959c",4775:"d5b534ab",5195:"b360e2f2",5874:"fab95674",6010:"d30da6cd",6279:"c2904cbc",6439:"dcfd3d15",7140:"03d586bf",7180:"3d0d9de9",7247:"5e68c76a",7508:"b542e828",7598:"20fb3f1d",7613:"21a024a3",7721:"6402fa87",7918:"17896441",8196:"9280379f",8260:"2a8dccce",8407:"e17b63fd",8421:"d654602c",8422:"31161cd8",8508:"2688c0dd",8518:"a7bd4aaa",8646:"6ecc9e9d",8780:"0cb07e4e",8930:"e1fd9655",9318:"584f2726",9651:"177e5166",9661:"5e95c892",9817:"14eb3368"}[e]||e)+"."+{2:"46794a55",53:"fbddf355",222:"9afb887a",580:"50e6026e",821:"b784e312",1015:"d55ee15a",1252:"74196099",1342:"a1147615",1361:"58c8ae9e",1538:"16ccf94c",1724:"a6d697f6",1772:"225f8635",1778:"31286260",1792:"0ce81fa7",2402:"ec4f283c",2676:"f2ad333a",2692:"e9a2af06",3237:"b8b89c37",3268:"caa6b389",4368:"e2a61cf4",4771:"3a18c4f9",4775:"de58a3fb",5195:"0057c1c1",5874:"2d9c84b0",6010:"abf6c8bc",6279:"70b35cd5",6439:"fe7de27f",7140:"e5ae3d1e",7180:"26440cf7",7247:"cb281847",7508:"0357c40a",7598:"97a9db77",7613:"2640735a",7721:"f595f69a",7918:"83ee43b0",8015:"529d47f0",8196:"dba23a16",8260:"8e842ddb",8407:"d3046dc5",8421:"f127afd6",8422:"b4534a52",8508:"eaaccdac",8518:"6cbc061c",8646:"3a9f48eb",8780:"c5109037",8930:"33e48f0e",9318:"d3b416a7",9651:"6e4b4ac8",9661:"0cf0e896",9817:"f7dcb3c5"}[e]+".js",o.miniCssF=e=>{},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),r={},f="compositor-live:",o.l=(e,a,t,d)=>{if(r[e])r[e].push(a);else{var c,b;if(void 0!==t)for(var n=document.getElementsByTagName("script"),i=0;i{c.onerror=c.onload=null,clearTimeout(s);var f=r[e];if(delete r[e],c.parentNode&&c.parentNode.removeChild(c),f&&f.forEach((e=>e(t))),a)return a(t)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=l.bind(null,c.onerror),c.onload=l.bind(null,c.onload),b&&document.head.appendChild(c)}},o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.p="/",o.gca=function(e){return e={17896441:"7918","4e76d5b1":"2","935f2afb":"53","583850f4":"222","19a7aa20":"580","5732f308":"821",d81783d9:"1015","914825a2":"1252","9641c2a9":"1342",be91778b:"1361","14eaa339":"1538",cd44186e:"1724","15cc4295":"1778",f3168f4a:"1792","42b33983":"2402","896f0ba9":"2676",f94d6d54:"2692","1df93b7f":"3237","7ef038ae":"3268",a94703ab:"4368",fca0959c:"4771",d5b534ab:"4775",b360e2f2:"5195",fab95674:"5874",d30da6cd:"6010",c2904cbc:"6279",dcfd3d15:"6439","03d586bf":"7140","3d0d9de9":"7180","5e68c76a":"7247",b542e828:"7508","20fb3f1d":"7598","21a024a3":"7613","6402fa87":"7721","9280379f":"8196","2a8dccce":"8260",e17b63fd:"8407",d654602c:"8421","31161cd8":"8422","2688c0dd":"8508",a7bd4aaa:"8518","6ecc9e9d":"8646","0cb07e4e":"8780",e1fd9655:"8930","584f2726":"9318","177e5166":"9651","5e95c892":"9661","14eb3368":"9817"}[e]||e,o.p+o.u(e)},(()=>{var e={1303:0,532:0};o.f.j=(a,t)=>{var r=o.o(e,a)?e[a]:void 0;if(0!==r)if(r)t.push(r[2]);else if(/^(1303|532)$/.test(a))e[a]=0;else{var f=new Promise(((t,f)=>r=e[a]=[t,f]));t.push(r[2]=f);var d=o.p+o.u(a),c=new Error;o.l(d,(t=>{if(o.o(e,a)&&(0!==(r=e[a])&&(e[a]=void 0),r)){var f=t&&("load"===t.type?"missing":t.type),d=t&&t.target&&t.target.src;c.message="Loading chunk "+a+" failed.\n("+f+": "+d+")",c.name="ChunkLoadError",c.type=f,c.request=d,r[1](c)}}),"chunk-"+a,a)}},o.O.j=a=>0===e[a];var a=(a,t)=>{var r,f,d=t[0],c=t[1],b=t[2],n=0;if(d.some((a=>0!==e[a]))){for(r in c)o.o(c,r)&&(o.m[r]=c[r]);if(b)var i=b(o)}for(a&&a(t);n{"use strict";var e,a,t,r,f,d={},c={};function o(e){var a=c[e];if(void 0!==a)return a.exports;var t=c[e]={exports:{}};return d[e].call(t.exports,t,t.exports,o),t.exports}o.m=d,e=[],o.O=(a,t,r,f)=>{if(!t){var d=1/0;for(i=0;i=f)&&Object.keys(o.O).every((e=>o.O[e](t[b])))?t.splice(b--,1):(c=!1,f0&&e[i-1][2]>f;i--)e[i]=e[i-1];e[i]=[t,r,f]},o.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return o.d(a,{a:a}),a},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var f=Object.create(null);o.r(f);var d={};a=a||[null,t({}),t([]),t(t)];for(var c=2&r&&e;"object"==typeof c&&!~a.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((a=>d[a]=()=>e[a]));return d.default=()=>e,o.d(f,d),f},o.d=(e,a)=>{for(var t in a)o.o(a,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:a[t]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((a,t)=>(o.f[t](e,a),a)),[])),o.u=e=>"assets/js/"+({2:"4e76d5b1",53:"935f2afb",222:"583850f4",580:"19a7aa20",821:"5732f308",1015:"d81783d9",1252:"914825a2",1342:"9641c2a9",1361:"be91778b",1538:"14eaa339",1724:"cd44186e",1778:"15cc4295",1792:"f3168f4a",2402:"42b33983",2676:"896f0ba9",2692:"f94d6d54",3237:"1df93b7f",3268:"7ef038ae",4368:"a94703ab",4771:"fca0959c",4775:"d5b534ab",5195:"b360e2f2",5874:"fab95674",6010:"d30da6cd",6279:"c2904cbc",6439:"dcfd3d15",7140:"03d586bf",7180:"3d0d9de9",7247:"5e68c76a",7508:"b542e828",7598:"20fb3f1d",7613:"21a024a3",7721:"6402fa87",7918:"17896441",8196:"9280379f",8260:"2a8dccce",8407:"e17b63fd",8421:"d654602c",8422:"31161cd8",8508:"2688c0dd",8518:"a7bd4aaa",8646:"6ecc9e9d",8780:"0cb07e4e",8930:"e1fd9655",9318:"584f2726",9651:"177e5166",9661:"5e95c892",9817:"14eb3368"}[e]||e)+"."+{2:"46794a55",53:"fbddf355",222:"9afb887a",580:"50e6026e",821:"b784e312",1015:"d55ee15a",1252:"74196099",1342:"a1147615",1361:"58c8ae9e",1538:"16ccf94c",1724:"a6d697f6",1772:"225f8635",1778:"31286260",1792:"0ce81fa7",2402:"ec4f283c",2676:"f2ad333a",2692:"e9a2af06",3237:"b8b89c37",3268:"caa6b389",4368:"e2a61cf4",4771:"3a18c4f9",4775:"de58a3fb",5195:"0057c1c1",5874:"2d9c84b0",6010:"7551d2b4",6279:"70b35cd5",6439:"fe7de27f",7140:"e5ae3d1e",7180:"26440cf7",7247:"a7a967da",7508:"0357c40a",7598:"97a9db77",7613:"2640735a",7721:"f595f69a",7918:"83ee43b0",8015:"529d47f0",8196:"dba23a16",8260:"8e842ddb",8407:"d3046dc5",8421:"f127afd6",8422:"b4534a52",8508:"eaaccdac",8518:"6cbc061c",8646:"3a9f48eb",8780:"c5109037",8930:"33e48f0e",9318:"d3b416a7",9651:"6e4b4ac8",9661:"0cf0e896",9817:"f7dcb3c5"}[e]+".js",o.miniCssF=e=>{},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),r={},f="compositor-live:",o.l=(e,a,t,d)=>{if(r[e])r[e].push(a);else{var c,b;if(void 0!==t)for(var n=document.getElementsByTagName("script"),i=0;i{c.onerror=c.onload=null,clearTimeout(s);var f=r[e];if(delete r[e],c.parentNode&&c.parentNode.removeChild(c),f&&f.forEach((e=>e(t))),a)return a(t)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=l.bind(null,c.onerror),c.onload=l.bind(null,c.onload),b&&document.head.appendChild(c)}},o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.p="/",o.gca=function(e){return e={17896441:"7918","4e76d5b1":"2","935f2afb":"53","583850f4":"222","19a7aa20":"580","5732f308":"821",d81783d9:"1015","914825a2":"1252","9641c2a9":"1342",be91778b:"1361","14eaa339":"1538",cd44186e:"1724","15cc4295":"1778",f3168f4a:"1792","42b33983":"2402","896f0ba9":"2676",f94d6d54:"2692","1df93b7f":"3237","7ef038ae":"3268",a94703ab:"4368",fca0959c:"4771",d5b534ab:"4775",b360e2f2:"5195",fab95674:"5874",d30da6cd:"6010",c2904cbc:"6279",dcfd3d15:"6439","03d586bf":"7140","3d0d9de9":"7180","5e68c76a":"7247",b542e828:"7508","20fb3f1d":"7598","21a024a3":"7613","6402fa87":"7721","9280379f":"8196","2a8dccce":"8260",e17b63fd:"8407",d654602c:"8421","31161cd8":"8422","2688c0dd":"8508",a7bd4aaa:"8518","6ecc9e9d":"8646","0cb07e4e":"8780",e1fd9655:"8930","584f2726":"9318","177e5166":"9651","5e95c892":"9661","14eb3368":"9817"}[e]||e,o.p+o.u(e)},(()=>{var e={1303:0,532:0};o.f.j=(a,t)=>{var r=o.o(e,a)?e[a]:void 0;if(0!==r)if(r)t.push(r[2]);else if(/^(1303|532)$/.test(a))e[a]=0;else{var f=new Promise(((t,f)=>r=e[a]=[t,f]));t.push(r[2]=f);var d=o.p+o.u(a),c=new Error;o.l(d,(t=>{if(o.o(e,a)&&(0!==(r=e[a])&&(e[a]=void 0),r)){var f=t&&("load"===t.type?"missing":t.type),d=t&&t.target&&t.target.src;c.message="Loading chunk "+a+" failed.\n("+f+": "+d+")",c.name="ChunkLoadError",c.type=f,c.request=d,r[1](c)}}),"chunk-"+a,a)}},o.O.j=a=>0===e[a];var a=(a,t)=>{var r,f,d=t[0],c=t[1],b=t[2],n=0;if(d.some((a=>0!==e[a]))){for(r in c)o.o(c,r)&&(o.m[r]=c[r]);if(b)var i=b(o)}for(a&&a(t);n Image | Live Compositor - + diff --git a/docs/api/components/InputStream.html b/docs/api/components/InputStream.html index 646167553..31066b421 100644 --- a/docs/api/components/InputStream.html +++ b/docs/api/components/InputStream.html @@ -4,7 +4,7 @@ InputStream | Live Compositor - + diff --git a/docs/api/components/Rescaler.html b/docs/api/components/Rescaler.html index 8a7d72702..27f7bfb77 100644 --- a/docs/api/components/Rescaler.html +++ b/docs/api/components/Rescaler.html @@ -4,7 +4,7 @@ Rescaler | Live Compositor - + diff --git a/docs/api/components/Shader.html b/docs/api/components/Shader.html index 8d1bbe3a6..6e22bf359 100644 --- a/docs/api/components/Shader.html +++ b/docs/api/components/Shader.html @@ -4,7 +4,7 @@ Shader | Live Compositor - + diff --git a/docs/api/components/Text.html b/docs/api/components/Text.html index a68b6d449..7406e4f74 100644 --- a/docs/api/components/Text.html +++ b/docs/api/components/Text.html @@ -4,7 +4,7 @@ Text | Live Compositor - + diff --git a/docs/api/components/Tiles.html b/docs/api/components/Tiles.html index c7e005656..840672dab 100644 --- a/docs/api/components/Tiles.html +++ b/docs/api/components/Tiles.html @@ -4,7 +4,7 @@ Tiles | Live Compositor - + diff --git a/docs/api/components/View.html b/docs/api/components/View.html index e4270971e..743983b95 100644 --- a/docs/api/components/View.html +++ b/docs/api/components/View.html @@ -4,7 +4,7 @@ View | Live Compositor - + diff --git a/docs/api/components/WebView.html b/docs/api/components/WebView.html index 33cc4d202..9421a2e0d 100644 --- a/docs/api/components/WebView.html +++ b/docs/api/components/WebView.html @@ -4,7 +4,7 @@ WebView | Live Compositor - + diff --git a/docs/api/generated/component-Image.html b/docs/api/generated/component-Image.html index f0a0cd6a2..0c8156feb 100644 --- a/docs/api/generated/component-Image.html +++ b/docs/api/generated/component-Image.html @@ -4,7 +4,7 @@ component-Image | Live Compositor - + diff --git a/docs/api/generated/component-InputStream.html b/docs/api/generated/component-InputStream.html index 2e2da337b..8f3b49823 100644 --- a/docs/api/generated/component-InputStream.html +++ b/docs/api/generated/component-InputStream.html @@ -4,7 +4,7 @@ component-InputStream | Live Compositor - + diff --git a/docs/api/generated/component-Rescaler.html b/docs/api/generated/component-Rescaler.html index 0e840613a..7936e2366 100644 --- a/docs/api/generated/component-Rescaler.html +++ b/docs/api/generated/component-Rescaler.html @@ -4,7 +4,7 @@ component-Rescaler | Live Compositor - + diff --git a/docs/api/generated/component-Text.html b/docs/api/generated/component-Text.html index 9b09c1145..92c57352b 100644 --- a/docs/api/generated/component-Text.html +++ b/docs/api/generated/component-Text.html @@ -4,7 +4,7 @@ component-Text | Live Compositor - + diff --git a/docs/api/generated/component-Tiles.html b/docs/api/generated/component-Tiles.html index a1f4d211e..4f3be4885 100644 --- a/docs/api/generated/component-Tiles.html +++ b/docs/api/generated/component-Tiles.html @@ -4,7 +4,7 @@ component-Tiles | Live Compositor - + diff --git a/docs/api/generated/component-View.html b/docs/api/generated/component-View.html index 15ce41506..dad64cf86 100644 --- a/docs/api/generated/component-View.html +++ b/docs/api/generated/component-View.html @@ -4,7 +4,7 @@ component-View | Live Compositor - + diff --git a/docs/api/generated/component-WebView.html b/docs/api/generated/component-WebView.html index 7a0ac9e63..0ed9407c5 100644 --- a/docs/api/generated/component-WebView.html +++ b/docs/api/generated/component-WebView.html @@ -4,7 +4,7 @@ component-WebView | Live Compositor - + diff --git a/docs/api/generated/renderer-Mp4.html b/docs/api/generated/renderer-Mp4.html index 399bbb8f6..8a36c4a19 100644 --- a/docs/api/generated/renderer-Mp4.html +++ b/docs/api/generated/renderer-Mp4.html @@ -4,7 +4,7 @@ renderer-Mp4 | Live Compositor - + diff --git a/docs/api/generated/renderer-OutputStream.html b/docs/api/generated/renderer-OutputStream.html index 6419ea0b0..8ca64f418 100644 --- a/docs/api/generated/renderer-OutputStream.html +++ b/docs/api/generated/renderer-OutputStream.html @@ -4,7 +4,7 @@ renderer-OutputStream | Live Compositor - + @@ -25,11 +25,12 @@

Propertiesaudio

OutputVideoOptions

-
type OutputVideoOptions = {
resolution: Resolution;
encoder_preset:
| "ultrafast"
| "superfast"
| "veryfast"
| "faster"
| "fast"
| "medium"
| "slow"
| "slower"
| "veryslow"
| "placebo";
initial: Component;
send_eos_when?: OutputEndCondition;
}
+
type OutputVideoOptions = {
resolution: Resolution;
encoder_preset:
| "ultrafast"
| "superfast"
| "veryfast"
| "faster"
| "fast"
| "medium"
| "slow"
| "slower"
| "veryslow"
| "placebo";
ffmpeg_options?: {
};
initial: Component;
send_eos_when?: OutputEndCondition;
}

Properties

  • resolution
  • encoder_preset
  • +
  • ffmpeg_options - Raw FFmpeg encoder options. See docs for more.
  • initial
  • send_eos_when - Condition for termination of output stream based on the input streams states.
diff --git a/docs/api/generated/renderer-RtpInputStream.html b/docs/api/generated/renderer-RtpInputStream.html index 52261629e..686bf85d0 100644 --- a/docs/api/generated/renderer-RtpInputStream.html +++ b/docs/api/generated/renderer-RtpInputStream.html @@ -4,7 +4,7 @@ renderer-RtpInputStream | Live Compositor - + diff --git a/docs/api/generated/renderer-Shader.html b/docs/api/generated/renderer-Shader.html index 32f5b7824..ad420b4fe 100644 --- a/docs/api/generated/renderer-Shader.html +++ b/docs/api/generated/renderer-Shader.html @@ -4,7 +4,7 @@ renderer-Shader | Live Compositor - + diff --git a/docs/api/generated/renderer-WebRenderer.html b/docs/api/generated/renderer-WebRenderer.html index 3a564b998..6fccc896a 100644 --- a/docs/api/generated/renderer-WebRenderer.html +++ b/docs/api/generated/renderer-WebRenderer.html @@ -4,7 +4,7 @@ renderer-WebRenderer | Live Compositor - + diff --git a/docs/api/inputs/mp4.html b/docs/api/inputs/mp4.html index a4b95b1cf..2f795a231 100644 --- a/docs/api/inputs/mp4.html +++ b/docs/api/inputs/mp4.html @@ -4,7 +4,7 @@ MP4 | Live Compositor - + diff --git a/docs/api/inputs/rtp.html b/docs/api/inputs/rtp.html index a9743495b..eddcc31d5 100644 --- a/docs/api/inputs/rtp.html +++ b/docs/api/inputs/rtp.html @@ -4,7 +4,7 @@ RTP | Live Compositor - + diff --git a/docs/api/outputs/rtp.html b/docs/api/outputs/rtp.html index 6299e8730..2770a7cf9 100644 --- a/docs/api/outputs/rtp.html +++ b/docs/api/outputs/rtp.html @@ -4,7 +4,7 @@ RTP | Live Compositor - + @@ -28,10 +28,11 @@
  • ip - Only valid if transport_protocol="udp". IP address where RTP packets should be sent to.
  • -
    type Video = {
    resolution: { width: number; height: number };
    encoder_preset?: VideoEncoderPreset;
    send_eos_when?: EosCondition;
    initial: Component;
    }

    type VideoEncoderPreset =
    | "ultrafast"
    | "superfast"
    | "veryfast"
    | "faster"
    | "fast"
    | "medium"
    | "slow"
    | "slower"
    | "veryslow"
    | "placebo"

    +
    type Video = {
    resolution: { width: number; height: number };
    encoder_preset?: VideoEncoderPreset;
    ffmpeg_options?: Map<String, String>;
    send_eos_when?: EosCondition;
    initial: Component;
    }

    type VideoEncoderPreset =
    | "ultrafast"
    | "superfast"
    | "veryfast"
    | "faster"
    | "fast"
    | "medium"
    | "slow"
    | "slower"
    | "veryslow"
    | "placebo"

    • resolution - Output resolution in pixels.
    • encoder_preset - (default="fast") Preset for an encoder. See FFmpeg docs to learn more.
    • +
    • ffmepg_options - Raw FFmpeg encoder options. See docs for more.
    • send_eos_when - Defines when output stream should end if some of the input streams are finished. If output includes both audio and video streams, then EOS needs to be sent on both.
    • initial - Root of a component tree/scene that should be rendered for the output. Use update_output request to update this value after registration. Learn more.
    diff --git a/docs/api/renderers/image.html b/docs/api/renderers/image.html index ffe5c887b..fb68f7f28 100644 --- a/docs/api/renderers/image.html +++ b/docs/api/renderers/image.html @@ -4,7 +4,7 @@ Image | Live Compositor - + diff --git a/docs/api/renderers/shader.html b/docs/api/renderers/shader.html index f989e7f99..2e9f51cbf 100644 --- a/docs/api/renderers/shader.html +++ b/docs/api/renderers/shader.html @@ -4,7 +4,7 @@ Shader | Live Compositor - + diff --git a/docs/api/renderers/web.html b/docs/api/renderers/web.html index 5976e58c7..00c8c1b56 100644 --- a/docs/api/renderers/web.html +++ b/docs/api/renderers/web.html @@ -4,7 +4,7 @@ Web Renderer | Live Compositor - + diff --git a/docs/api/routes.html b/docs/api/routes.html index 0e2d41741..ac031c735 100644 --- a/docs/api/routes.html +++ b/docs/api/routes.html @@ -4,7 +4,7 @@ Routes | Live Compositor - + diff --git a/docs/category/api-reference.html b/docs/category/api-reference.html index e57a80c76..837fec7b7 100644 --- a/docs/category/api-reference.html +++ b/docs/category/api-reference.html @@ -4,7 +4,7 @@ API Reference | Live Compositor - + diff --git a/docs/category/deployment.html b/docs/category/deployment.html index 1fb68390f..3aa79a1e1 100644 --- a/docs/category/deployment.html +++ b/docs/category/deployment.html @@ -4,7 +4,7 @@ Deployment | Live Compositor - + diff --git a/docs/common/absolute-position.html b/docs/common/absolute-position.html index 7af0cc0e4..166ccae0b 100644 --- a/docs/common/absolute-position.html +++ b/docs/common/absolute-position.html @@ -4,7 +4,7 @@ absolute-position | Live Compositor - + diff --git a/docs/concept/component.html b/docs/concept/component.html index fe6d8e2d3..3f1dddbde 100644 --- a/docs/concept/component.html +++ b/docs/concept/component.html @@ -4,7 +4,7 @@ Component | Live Compositor - + diff --git a/docs/concept/layouts.html b/docs/concept/layouts.html index 33bc3fe60..a4f86bdcf 100644 --- a/docs/concept/layouts.html +++ b/docs/concept/layouts.html @@ -4,7 +4,7 @@ Layouts | Live Compositor - + diff --git a/docs/concept/shaders.html b/docs/concept/shaders.html index db68164a8..5316fa555 100644 --- a/docs/concept/shaders.html +++ b/docs/concept/shaders.html @@ -4,7 +4,7 @@ Shaders | Live Compositor - + diff --git a/docs/concept/web.html b/docs/concept/web.html index b4e1d84c1..bf3b1e832 100644 --- a/docs/concept/web.html +++ b/docs/concept/web.html @@ -4,7 +4,7 @@ Web Renderer | Live Compositor - + diff --git a/docs/deployment/configuration.html b/docs/deployment/configuration.html index 91b53f101..2c5400b6c 100644 --- a/docs/deployment/configuration.html +++ b/docs/deployment/configuration.html @@ -4,7 +4,7 @@ Configuration | Live Compositor - + diff --git a/docs/get-started.html b/docs/get-started.html index 94f281ea0..16318cf92 100644 --- a/docs/get-started.html +++ b/docs/get-started.html @@ -4,7 +4,7 @@ Get started | Live Compositor - + diff --git a/docs/get-started/elixir.html b/docs/get-started/elixir.html index 4b775d8a2..14ff83e90 100644 --- a/docs/get-started/elixir.html +++ b/docs/get-started/elixir.html @@ -4,7 +4,7 @@ Elixir | Live Compositor - + diff --git a/docs/get-started/node.html b/docs/get-started/node.html index 02baefdc5..5f3268a9a 100644 --- a/docs/get-started/node.html +++ b/docs/get-started/node.html @@ -4,7 +4,7 @@ Node.js | Live Compositor - + diff --git a/docs/intro.html b/docs/intro.html index 167a0f4e4..3480c8b3e 100644 --- a/docs/intro.html +++ b/docs/intro.html @@ -4,7 +4,7 @@ Introduction | Live Compositor - + diff --git a/index.html b/index.html index 1872f08fb..6141e2ec9 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ Live Compositor | Live Compositor - +