From 4388f0675cf08d08d159082c196657f626ff8780 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 19 Aug 2024 16:46:19 +0000 Subject: [PATCH] deploy: 1379cce4ee74a0e3ff69ee03b732123431b616d9 --- 404.html | 2 +- assets/js/{8b6aa7f8.4c845e76.js => 8b6aa7f8.79b22697.js} | 2 +- assets/js/{935f2afb.ad0f012a.js => 935f2afb.a500497b.js} | 2 +- ...runtime~main.96f480b1.js => runtime~main.03d4f7b6.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/events.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-Shader.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/output-Mp4Output.html | 2 +- docs/api/generated/output-RtpOutputStream.html | 2 +- docs/api/generated/renderer-DeckLink.html | 2 +- docs/api/generated/renderer-Image.html | 2 +- docs/api/generated/renderer-Mp4Input.html | 2 +- docs/api/generated/renderer-RtpInputStream.html | 2 +- docs/api/generated/renderer-Shader.html | 2 +- docs/api/generated/renderer-WebRenderer.html | 2 +- docs/api/inputs/decklink.html | 2 +- docs/api/inputs/mp4.html | 2 +- docs/api/inputs/rtp.html | 2 +- docs/api/outputs/mp4.html | 9 ++++++--- docs/api/outputs/rtp.html | 2 +- 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/guides.html | 2 +- docs/common/absolute-position.html | 2 +- docs/concept/component.html | 2 +- docs/concept/layouts.html | 2 +- docs/concept/overview.html | 2 +- docs/concept/shaders.html | 2 +- docs/concept/web.html | 2 +- docs/deployment/aws-ec2.html | 2 +- docs/deployment/configuration.html | 2 +- docs/deployment/overview.html | 2 +- docs/deployment/requirements.html | 2 +- docs/guides/deliver-input.html | 2 +- docs/guides/receive-output.html | 2 +- docs/guides/simple-scene.html | 2 +- docs/guides/view-transition.html | 2 +- docs/intro.html | 2 +- index.html | 2 +- search.html | 2 +- 57 files changed, 62 insertions(+), 59 deletions(-) rename assets/js/{8b6aa7f8.4c845e76.js => 8b6aa7f8.79b22697.js} (86%) rename assets/js/{935f2afb.ad0f012a.js => 935f2afb.a500497b.js} (68%) rename assets/js/{runtime~main.96f480b1.js => runtime~main.03d4f7b6.js} (98%) diff --git a/404.html b/404.html index 128e6e2e4..420b513d0 100644 --- a/404.html +++ b/404.html @@ -10,7 +10,7 @@ - + diff --git a/assets/js/8b6aa7f8.4c845e76.js b/assets/js/8b6aa7f8.79b22697.js similarity index 86% rename from assets/js/8b6aa7f8.4c845e76.js rename to assets/js/8b6aa7f8.79b22697.js index 4e4d5f00d..de0c7f956 100644 --- a/assets/js/8b6aa7f8.4c845e76.js +++ b/assets/js/8b6aa7f8.79b22697.js @@ -1 +1 @@ -"use strict";(self.webpackChunkcompositor_live=self.webpackChunkcompositor_live||[]).push([[1182,1897],{7786:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>p,contentTitle:()=>r,default:()=>c,frontMatter:()=>o,metadata:()=>d,toc:()=>l});var i=t(5893),s=t(1151);const o={},r=void 0,d={id:"api/generated/output-Mp4Output",title:"output-Mp4Output",description:"Mp4Output",source:"@site/pages/api/generated/output-Mp4Output.md",sourceDirName:"api/generated",slug:"/api/generated/output-Mp4Output",permalink:"/docs/api/generated/output-Mp4Output",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{}},p={},l=[{value:"Mp4Output",id:"mp4output",level:2},{value:"Properties",id:"properties",level:4},{value:"OutputVideoOptions",id:"outputvideooptions",level:2},{value:"Properties",id:"properties-1",level:4},{value:"OutputMp4AudioOptions",id:"outputmp4audiooptions",level:2},{value:"Properties",id:"properties-2",level:4},{value:"OutputEndCondition",id:"outputendcondition",level:2},{value:"Properties",id:"properties-3",level:4},{value:"VideoEncoderOptions",id:"videoencoderoptions",level:2},{value:"Properties (type: "ffmpeg_h264")",id:"properties-type-ffmpeg_h264",level:4},{value:"Mp4AudioEncoderOptions",id:"mp4audioencoderoptions",level:2},{value:"InputAudio",id:"inputaudio",level:2},{value:"Properties",id:"properties-4",level:4}];function u(e){const n={a:"a",code:"code",h2:"h2",h4:"h4",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h2,{id:"mp4output",children:"Mp4Output"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-typescript",children:"type Mp4Output = {\n path: string;\n video?: OutputVideoOptions;\n audio?: OutputMp4AudioOptions;\n}\n"})}),"\n",(0,i.jsx)(n.h4,{id:"properties",children:"Properties"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"path"})," - Path to output MP4 file."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"video"})," - Video track configuration."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"audio"})," - Audio track configuration."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"outputvideooptions",children:"OutputVideoOptions"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-typescript",children:"type OutputVideoOptions = {\n resolution: {\n width: u32;\n height: u32;\n };\n send_eos_when?: OutputEndCondition;\n encoder: VideoEncoderOptions;\n initial: { root: Component; };\n}\n"})}),"\n",(0,i.jsx)(n.h4,{id:"properties-1",children:"Properties"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"resolution"})," - Output resolution in pixels."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.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,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"encoder"})," - Video encoder options."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"initial"})," - Root of a component tree/scene that should be rendered for the output. Use ",(0,i.jsxs)(n.a,{href:"/docs/api/routes#update-output",children:[(0,i.jsx)(n.code,{children:"update_output"})," request"]})," to update this value after registration. ",(0,i.jsx)(n.a,{href:"/docs/concept/component",children:"Learn more"}),"."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"outputmp4audiooptions",children:"OutputMp4AudioOptions"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-typescript",children:'type OutputMp4AudioOptions = {\n mixing_strategy?: "sum_clip" | "sum_scale";\n send_eos_when?: OutputEndCondition;\n encoder: Mp4AudioEncoderOptions;\n initial: { inputs: InputAudio[]; };\n}\n'})}),"\n",(0,i.jsx)(n.h4,{id:"properties-2",children:"Properties"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"mixing_strategy"})," - (",(0,i.jsx)(n.strong,{children:'default="sum_clip"'}),") Specifies how audio should be mixed.","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:'"sum_clip"'})," - Firstly, input samples are summed. If the result is outside the i16 PCM range, it gets clipped."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:'"sum_scale"'})," - Firstly, input samples are summed. If the result is outside the i16 PCM range,\nnearby summed samples are scaled down by factor, such that the summed wave is in the i16 PCM range."]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"send_eos_when"})," - Condition for termination of output stream based on the input streams states."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"encoder"})," - Audio encoder options."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"initial"})," - Initial audio mixer configuration for output."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"outputendcondition",children:"OutputEndCondition"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.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,i.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.\nUnless specified otherwise the input stream is considered finished/ended when:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"TCP connection was dropped/closed."}),"\n",(0,i.jsxs)(n.li,{children:["RTCP Goodbye packet (",(0,i.jsx)(n.code,{children:"BYE"}),") was received."]}),"\n",(0,i.jsx)(n.li,{children:"Mp4 track has ended."}),"\n",(0,i.jsx)(n.li,{children:"Input was unregistered already (or never registered)."}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"properties-3",children:"Properties"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"any_of"})," - Terminate output stream if any of the input streams from the list are finished."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"all_of"})," - Terminate output stream if all the input streams from the list are finished."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.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,i.jsx)(n.strong,{children:"not be"})," terminated if no inputs were ever connected."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"all_inputs"})," - Terminate output stream if all the input streams finish. In particular, output stream will ",(0,i.jsx)(n.strong,{children:"be"})," terminated if no inputs were ever connected."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"videoencoderoptions",children:"VideoEncoderOptions"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-typescript",children:'type VideoEncoderOptions = \n | {\n type: "ffmpeg_h264";\n preset: \n | "ultrafast"\n | "superfast"\n | "veryfast"\n | "faster"\n | "fast"\n | "medium"\n | "slow"\n | "slower"\n | "veryslow"\n | "placebo";\n ffmpeg_options?: Map;\n }\n'})}),"\n",(0,i.jsxs)(n.h4,{id:"properties-type-ffmpeg_h264",children:["Properties (",(0,i.jsx)(n.code,{children:'type: "ffmpeg_h264"'}),")"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"preset"})," - (",(0,i.jsxs)(n.strong,{children:["default=",(0,i.jsx)(n.code,{children:'"fast"'})]}),") Preset for an encoder. See ",(0,i.jsx)(n.code,{children:"FFmpeg"})," ",(0,i.jsx)(n.a,{href:"https://trac.ffmpeg.org/wiki/Encode/H.264#Preset",children:"docs"})," to learn more."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"ffmpeg_options"})," - Raw FFmpeg encoder options. See ",(0,i.jsx)(n.a,{href:"https://ffmpeg.org/ffmpeg-codecs.html",children:"docs"})," for more."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"mp4audioencoderoptions",children:"Mp4AudioEncoderOptions"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-typescript",children:'type Mp4AudioEncoderOptions = { type: "aac"; channels: "mono" | "stereo"; }\n'})}),"\n",(0,i.jsx)(n.h2,{id:"inputaudio",children:"InputAudio"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-typescript",children:"type InputAudio = {\n input_id: string;\n volume?: f32;\n}\n"})}),"\n",(0,i.jsx)(n.h4,{id:"properties-4",children:"Properties"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"volume"})," - (",(0,i.jsxs)(n.strong,{children:["default=",(0,i.jsx)(n.code,{children:"1.0"})]}),") float in ",(0,i.jsx)(n.code,{children:"[0, 1]"})," range representing input volume"]}),"\n"]})]})}function c(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},6826:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>d,default:()=>a,frontMatter:()=>r,metadata:()=>p,toc:()=>u});var i=t(5893),s=t(1151),o=t(7786);const r={},d="MP4",p={id:"api/outputs/mp4",title:"MP4",description:"An output type that allows saving video and audio from the compositor to MP4 file.",source:"@site/pages/api/outputs/mp4.md",sourceDirName:"api/outputs",slug:"/api/outputs/mp4",permalink:"/docs/api/outputs/mp4",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{},sidebar:"sidebar",previous:{title:"RTP",permalink:"/docs/api/outputs/rtp"},next:{title:"RTP",permalink:"/docs/api/inputs/rtp"}},l={},u=[];function c(e){const n={h1:"h1",p:"p",...(0,s.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h1,{id:"mp4",children:"MP4"}),"\n",(0,i.jsx)(n.p,{children:"An output type that allows saving video and audio from the compositor to MP4 file."}),"\n",(0,i.jsx)(o.default,{})]})}function a(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>d,a:()=>r});var i=t(7294);const s={},o=i.createContext(s);function r(e){const n=i.useContext(o);return i.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(s):e.components||s:r(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkcompositor_live=self.webpackChunkcompositor_live||[]).push([[1182,1897],{7786:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>p,contentTitle:()=>r,default:()=>c,frontMatter:()=>o,metadata:()=>d,toc:()=>l});var i=t(5893),s=t(1151);const o={},r=void 0,d={id:"api/generated/output-Mp4Output",title:"output-Mp4Output",description:"Mp4Output",source:"@site/pages/api/generated/output-Mp4Output.md",sourceDirName:"api/generated",slug:"/api/generated/output-Mp4Output",permalink:"/docs/api/generated/output-Mp4Output",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{}},p={},l=[{value:"Mp4Output",id:"mp4output",level:2},{value:"Properties",id:"properties",level:4},{value:"OutputVideoOptions",id:"outputvideooptions",level:2},{value:"Properties",id:"properties-1",level:4},{value:"OutputMp4AudioOptions",id:"outputmp4audiooptions",level:2},{value:"Properties",id:"properties-2",level:4},{value:"OutputEndCondition",id:"outputendcondition",level:2},{value:"Properties",id:"properties-3",level:4},{value:"VideoEncoderOptions",id:"videoencoderoptions",level:2},{value:"Properties (type: "ffmpeg_h264")",id:"properties-type-ffmpeg_h264",level:4},{value:"Mp4AudioEncoderOptions",id:"mp4audioencoderoptions",level:2},{value:"InputAudio",id:"inputaudio",level:2},{value:"Properties",id:"properties-4",level:4}];function u(e){const n={a:"a",code:"code",h2:"h2",h4:"h4",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h2,{id:"mp4output",children:"Mp4Output"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-typescript",children:"type Mp4Output = {\n path: string;\n video?: OutputVideoOptions;\n audio?: OutputMp4AudioOptions;\n}\n"})}),"\n",(0,i.jsx)(n.h4,{id:"properties",children:"Properties"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"path"})," - Path to output MP4 file."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"video"})," - Video track configuration."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"audio"})," - Audio track configuration."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"outputvideooptions",children:"OutputVideoOptions"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-typescript",children:"type OutputVideoOptions = {\n resolution: {\n width: u32;\n height: u32;\n };\n send_eos_when?: OutputEndCondition;\n encoder: VideoEncoderOptions;\n initial: { root: Component; };\n}\n"})}),"\n",(0,i.jsx)(n.h4,{id:"properties-1",children:"Properties"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"resolution"})," - Output resolution in pixels."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.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,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"encoder"})," - Video encoder options."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"initial"})," - Root of a component tree/scene that should be rendered for the output. Use ",(0,i.jsxs)(n.a,{href:"/docs/api/routes#update-output",children:[(0,i.jsx)(n.code,{children:"update_output"})," request"]})," to update this value after registration. ",(0,i.jsx)(n.a,{href:"/docs/concept/component",children:"Learn more"}),"."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"outputmp4audiooptions",children:"OutputMp4AudioOptions"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-typescript",children:'type OutputMp4AudioOptions = {\n mixing_strategy?: "sum_clip" | "sum_scale";\n send_eos_when?: OutputEndCondition;\n encoder: Mp4AudioEncoderOptions;\n initial: { inputs: InputAudio[]; };\n}\n'})}),"\n",(0,i.jsx)(n.h4,{id:"properties-2",children:"Properties"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"mixing_strategy"})," - (",(0,i.jsx)(n.strong,{children:'default="sum_clip"'}),") Specifies how audio should be mixed.","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:'"sum_clip"'})," - Firstly, input samples are summed. If the result is outside the i16 PCM range, it gets clipped."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:'"sum_scale"'})," - Firstly, input samples are summed. If the result is outside the i16 PCM range,\nnearby summed samples are scaled down by factor, such that the summed wave is in the i16 PCM range."]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"send_eos_when"})," - Condition for termination of output stream based on the input streams states."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"encoder"})," - Audio encoder options."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"initial"})," - Initial audio mixer configuration for output."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"outputendcondition",children:"OutputEndCondition"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.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,i.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.\nUnless specified otherwise the input stream is considered finished/ended when:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"TCP connection was dropped/closed."}),"\n",(0,i.jsxs)(n.li,{children:["RTCP Goodbye packet (",(0,i.jsx)(n.code,{children:"BYE"}),") was received."]}),"\n",(0,i.jsx)(n.li,{children:"Mp4 track has ended."}),"\n",(0,i.jsx)(n.li,{children:"Input was unregistered already (or never registered)."}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"properties-3",children:"Properties"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"any_of"})," - Terminate output stream if any of the input streams from the list are finished."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"all_of"})," - Terminate output stream if all the input streams from the list are finished."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.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,i.jsx)(n.strong,{children:"not be"})," terminated if no inputs were ever connected."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"all_inputs"})," - Terminate output stream if all the input streams finish. In particular, output stream will ",(0,i.jsx)(n.strong,{children:"be"})," terminated if no inputs were ever connected."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"videoencoderoptions",children:"VideoEncoderOptions"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-typescript",children:'type VideoEncoderOptions = \n | {\n type: "ffmpeg_h264";\n preset: \n | "ultrafast"\n | "superfast"\n | "veryfast"\n | "faster"\n | "fast"\n | "medium"\n | "slow"\n | "slower"\n | "veryslow"\n | "placebo";\n ffmpeg_options?: Map;\n }\n'})}),"\n",(0,i.jsxs)(n.h4,{id:"properties-type-ffmpeg_h264",children:["Properties (",(0,i.jsx)(n.code,{children:'type: "ffmpeg_h264"'}),")"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"preset"})," - (",(0,i.jsxs)(n.strong,{children:["default=",(0,i.jsx)(n.code,{children:'"fast"'})]}),") Preset for an encoder. See ",(0,i.jsx)(n.code,{children:"FFmpeg"})," ",(0,i.jsx)(n.a,{href:"https://trac.ffmpeg.org/wiki/Encode/H.264#Preset",children:"docs"})," to learn more."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"ffmpeg_options"})," - Raw FFmpeg encoder options. See ",(0,i.jsx)(n.a,{href:"https://ffmpeg.org/ffmpeg-codecs.html",children:"docs"})," for more."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"mp4audioencoderoptions",children:"Mp4AudioEncoderOptions"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-typescript",children:'type Mp4AudioEncoderOptions = { type: "aac"; channels: "mono" | "stereo"; }\n'})}),"\n",(0,i.jsx)(n.h2,{id:"inputaudio",children:"InputAudio"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-typescript",children:"type InputAudio = {\n input_id: string;\n volume?: f32;\n}\n"})}),"\n",(0,i.jsx)(n.h4,{id:"properties-4",children:"Properties"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"volume"})," - (",(0,i.jsxs)(n.strong,{children:["default=",(0,i.jsx)(n.code,{children:"1.0"})]}),") float in ",(0,i.jsx)(n.code,{children:"[0, 1]"})," range representing input volume"]}),"\n"]})]})}function c(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},6826:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>d,default:()=>a,frontMatter:()=>r,metadata:()=>p,toc:()=>u});var i=t(5893),s=t(1151),o=t(7786);const r={title:"MP4"},d="MP4",p={id:"api/outputs/mp4",title:"MP4",description:"Added in v0.3.0",source:"@site/pages/api/outputs/mp4.md",sourceDirName:"api/outputs",slug:"/api/outputs/mp4",permalink:"/docs/api/outputs/mp4",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{title:"MP4"},sidebar:"sidebar",previous:{title:"RTP",permalink:"/docs/api/outputs/rtp"},next:{title:"RTP",permalink:"/docs/api/inputs/rtp"}},l={},u=[];function c(e){const n={h1:"h1",p:"p",...(0,s.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("span",{class:"badge badge--primary",children:"Added in v0.3.0"}),"\n",(0,i.jsx)("br",{}),"\n",(0,i.jsx)("br",{}),"\n",(0,i.jsx)(n.h1,{id:"mp4",children:"MP4"}),"\n",(0,i.jsx)(n.p,{children:"An output type that allows saving video and audio from the compositor to MP4 file."}),"\n",(0,i.jsx)(o.default,{})]})}function a(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>d,a:()=>r});var i=t(7294);const s={},o=i.createContext(s);function r(e){const n=i.useContext(o);return i.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(s):e.components||s:r(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.ad0f012a.js b/assets/js/935f2afb.a500497b.js similarity index 68% rename from assets/js/935f2afb.ad0f012a.js rename to assets/js/935f2afb.a500497b.js index aa61194be..c68ebe62c 100644 --- a/assets/js/935f2afb.ad0f012a.js +++ b/assets/js/935f2afb.a500497b.js @@ -1 +1 @@ -"use strict";(self.webpackChunkcompositor_live=self.webpackChunkcompositor_live||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"sidebar":[{"type":"link","label":"Getting started","href":"/docs/intro","docId":"intro","unlisted":false},{"type":"category","label":"Guides","items":[{"type":"link","label":"Simple scene","href":"/docs/guides/simple-scene","docId":"guides/simple-scene","unlisted":false},{"type":"link","label":"Deliver input streams","href":"/docs/guides/deliver-input","docId":"guides/deliver-input","unlisted":false},{"type":"link","label":"Receive output streams","href":"/docs/guides/receive-output","docId":"guides/receive-output","unlisted":false},{"type":"link","label":"Transitions (View/Rescaler)","href":"/docs/guides/view-transition","docId":"guides/view-transition","unlisted":false}],"collapsed":true,"collapsible":true,"href":"/docs/category/guides"},{"type":"category","label":"Concepts","items":[{"type":"link","label":"Overview","href":"/docs/concept/overview","docId":"concept/overview","unlisted":false},{"type":"link","label":"Component","href":"/docs/concept/component","docId":"concept/component","unlisted":false},{"type":"link","label":"Layouts","href":"/docs/concept/layouts","docId":"concept/layouts","unlisted":false},{"type":"link","label":"Shaders","href":"/docs/concept/shaders","docId":"concept/shaders","unlisted":false},{"type":"link","label":"Web Renderer","href":"/docs/concept/web","docId":"concept/web","unlisted":false}],"collapsed":true,"collapsible":true,"href":"/docs/concept/overview"},{"type":"category","label":"Deployment","items":[{"type":"link","label":"Overview","href":"/docs/deployment/overview","docId":"deployment/overview","unlisted":false},{"type":"link","label":"Requirements","href":"/docs/deployment/requirements","docId":"deployment/requirements","unlisted":false},{"type":"link","label":"Configuration","href":"/docs/deployment/configuration","docId":"deployment/configuration","unlisted":false},{"type":"link","label":"Example: AWS EC2","href":"/docs/deployment/aws-ec2","docId":"deployment/aws-ec2","unlisted":false}],"collapsed":true,"collapsible":true,"href":"/docs/deployment/overview"},{"type":"category","label":"API Reference","collapsible":false,"items":[{"type":"link","label":"HTTP Routes","href":"/docs/api/routes","docId":"api/routes","unlisted":false},{"type":"link","label":"Events","href":"/docs/api/events","docId":"api/events","unlisted":false},{"type":"category","label":"Components","collapsible":false,"description":"Basic blocks used to define a scene.","items":[{"type":"link","label":"InputStream","href":"/docs/api/components/InputStream","docId":"api/components/InputStream","unlisted":false},{"type":"link","label":"View","href":"/docs/api/components/View","docId":"api/components/View","unlisted":false},{"type":"link","label":"Rescaler","href":"/docs/api/components/Rescaler","docId":"api/components/Rescaler","unlisted":false},{"type":"link","label":"Tiles","href":"/docs/api/components/Tiles","docId":"api/components/Tiles","unlisted":false},{"type":"link","label":"Text","href":"/docs/api/components/Text","docId":"api/components/Text","unlisted":false},{"type":"link","label":"Shader","href":"/docs/api/components/Shader","docId":"api/components/Shader","unlisted":false},{"type":"link","label":"Image","href":"/docs/api/components/Image","docId":"api/components/Image","unlisted":false},{"type":"link","label":"WebView","href":"/docs/api/components/WebView","docId":"api/components/WebView","unlisted":false}],"collapsed":false},{"type":"category","label":"Renderers","collapsible":false,"description":"Resources that need to be registered first before they can be used.","items":[{"type":"link","label":"Shader","href":"/docs/api/renderers/shader","docId":"api/renderers/shader","unlisted":false},{"type":"link","label":"Image","href":"/docs/api/renderers/image","docId":"api/renderers/image","unlisted":false},{"type":"link","label":"Web Renderer","href":"/docs/api/renderers/web","docId":"api/renderers/web","unlisted":false}],"collapsed":false},{"type":"category","label":"Outputs","collapsible":false,"description":"Elements that deliver generated media.","items":[{"type":"link","label":"RTP","href":"/docs/api/outputs/rtp","docId":"api/outputs/rtp","unlisted":false},{"type":"link","label":"MP4","href":"/docs/api/outputs/mp4","docId":"api/outputs/mp4","unlisted":false}],"collapsed":false},{"type":"category","label":"Inputs","collapsible":false,"description":"Elements that deliver media from external sources.","items":[{"type":"link","label":"RTP","href":"/docs/api/inputs/rtp","docId":"api/inputs/rtp","unlisted":false},{"type":"link","label":"MP4","href":"/docs/api/inputs/mp4","docId":"api/inputs/mp4","unlisted":false},{"type":"link","label":"DeckLink","href":"/docs/api/inputs/decklink","docId":"api/inputs/decklink","unlisted":false}],"collapsed":false}],"collapsed":false,"href":"/docs/category/api-reference"}]},"docs":{"api/components/Image":{"id":"api/components/Image","title":"Image","description":"A component for rendering images.","sidebar":"sidebar"},"api/components/InputStream":{"id":"api/components/InputStream","title":"InputStream","description":"InputStream represents an input.","sidebar":"sidebar"},"api/components/Rescaler":{"id":"api/components/Rescaler","title":"Rescaler","description":"Rescaler is a layout component responsible for rescaling other components.","sidebar":"sidebar"},"api/components/Shader":{"id":"api/components/Shader","title":"Shader","description":"Shader applies transformation defined via WGSL shader on its children. Learn more.","sidebar":"sidebar"},"api/components/Text":{"id":"api/components/Text","title":"Text","description":"A component for rendering text.","sidebar":"sidebar"},"api/components/Tiles":{"id":"api/components/Tiles","title":"Tiles","description":"Tiles is a layout component that places all the child components next to each other while maximizing the use of available space. The component divides its area into multiple rectangles/tiles, one for each child component. All of those rectangles are the same size and do not overlap over each other.","sidebar":"sidebar"},"api/components/View":{"id":"api/components/View","title":"View","description":"View is the compositor\'s core layout mechanism. Its role is analogous to the","sidebar":"sidebar"},"api/components/WebView":{"id":"api/components/WebView","title":"WebView","description":"Required feature: web_renderer","sidebar":"sidebar"},"api/events":{"id":"api/events","title":"Events","description":"WebSocket events","sidebar":"sidebar"},"api/generated/component-Image":{"id":"api/generated/component-Image","title":"component-Image","description":"Image"},"api/generated/component-InputStream":{"id":"api/generated/component-InputStream","title":"component-InputStream","description":"InputStream"},"api/generated/component-Rescaler":{"id":"api/generated/component-Rescaler","title":"component-Rescaler","description":"Rescaler"},"api/generated/component-Shader":{"id":"api/generated/component-Shader","title":"component-Shader","description":"Shader"},"api/generated/component-Text":{"id":"api/generated/component-Text","title":"component-Text","description":"Text"},"api/generated/component-Tiles":{"id":"api/generated/component-Tiles","title":"component-Tiles","description":"Tiles"},"api/generated/component-View":{"id":"api/generated/component-View","title":"component-View","description":"View"},"api/generated/component-WebView":{"id":"api/generated/component-WebView","title":"component-WebView","description":"WebView"},"api/generated/output-Mp4Output":{"id":"api/generated/output-Mp4Output","title":"output-Mp4Output","description":"Mp4Output"},"api/generated/output-RtpOutputStream":{"id":"api/generated/output-RtpOutputStream","title":"output-RtpOutputStream","description":"RtpOutputStream"},"api/generated/renderer-DeckLink":{"id":"api/generated/renderer-DeckLink","title":"renderer-DeckLink","description":"DeckLink"},"api/generated/renderer-Image":{"id":"api/generated/renderer-Image","title":"renderer-Image","description":"Image"},"api/generated/renderer-Mp4Input":{"id":"api/generated/renderer-Mp4Input","title":"renderer-Mp4Input","description":"Mp4Input"},"api/generated/renderer-RtpInputStream":{"id":"api/generated/renderer-RtpInputStream","title":"renderer-RtpInputStream","description":"RtpInputStream"},"api/generated/renderer-Shader":{"id":"api/generated/renderer-Shader","title":"renderer-Shader","description":"Shader"},"api/generated/renderer-WebRenderer":{"id":"api/generated/renderer-WebRenderer","title":"renderer-WebRenderer","description":"WebRenderer"},"api/inputs/decklink":{"id":"api/inputs/decklink","title":"DeckLink","description":"Added in v0.3.0","sidebar":"sidebar"},"api/inputs/mp4":{"id":"api/inputs/mp4","title":"MP4","description":"An input type that allows the compositor to read static MP4 files.","sidebar":"sidebar"},"api/inputs/rtp":{"id":"api/inputs/rtp","title":"RTP","description":"An input type that allows streaming video and audio to the compositor over RTP.","sidebar":"sidebar"},"api/outputs/mp4":{"id":"api/outputs/mp4","title":"MP4","description":"An output type that allows saving video and audio from the compositor to MP4 file.","sidebar":"sidebar"},"api/outputs/rtp":{"id":"api/outputs/rtp","title":"RTP","description":"An output type that allows streaming video and audio from the compositor over RTP.","sidebar":"sidebar"},"api/renderers/image":{"id":"api/renderers/image","title":"Image","description":"Represents an image asset uploaded to the compositor. Used by a Image component.","sidebar":"sidebar"},"api/renderers/shader":{"id":"api/renderers/shader","title":"Shader","description":"Represents compiled shader. Used by a Shader component.","sidebar":"sidebar"},"api/renderers/web":{"id":"api/renderers/web","title":"Web Renderer","description":"Required feature: web_renderer","sidebar":"sidebar"},"api/routes":{"id":"api/routes","title":"Routes","description":"API routes to configure the compositor.","sidebar":"sidebar"},"common/absolute-position":{"id":"common/absolute-position","title":"absolute-position","description":"A component is absolutely positioned if it defines fields like top, left, right, bottom, or rotation."},"concept/component":{"id":"concept/component","title":"Component","description":"A component is a basic block used to define how video streams are composed.","sidebar":"sidebar"},"concept/layouts":{"id":"concept/layouts","title":"Layouts","description":"Layout components define the size, position, and simple styling of other components.","sidebar":"sidebar"},"concept/overview":{"id":"concept/overview","title":"Concepts","description":"Inputs/outputs streams","sidebar":"sidebar"},"concept/shaders":{"id":"concept/shaders","title":"Shaders","description":"Shaders are small programs that we send to a GPU to perform some computation for us. They are used extensively in the LiveCompositor. All builtin transformation are implemented as shaders under the hood. It is also possible to create render nodes that run a custom shader on their input. Since LiveCompositor is implemented using wgpu, the shaders have to be written in WGSL (WebGPU Shading Language). They also have to fulfill some custom requirements that allow them to be run by the LiveCompositor.","sidebar":"sidebar"},"concept/web":{"id":"concept/web","title":"Web Renderer","description":"Web renderer allows you to capture that output of a browser and compose it with other streams.","sidebar":"sidebar"},"deployment/aws-ec2":{"id":"deployment/aws-ec2","title":"Example: AWS EC2","description":"This is an example configuration that shows how to deploy LiveCompositor to an AWS EC2 instance with Terraform configuration.","sidebar":"sidebar"},"deployment/configuration":{"id":"deployment/configuration","title":"Configuration","description":"Environment variables","sidebar":"sidebar"},"deployment/overview":{"id":"deployment/overview","title":"Deployment","description":"LiveCompositor can be deployed in various ways, depending on your platform, used features and whether it is used standalone or via Membrane Framework plugin.","sidebar":"sidebar"},"deployment/requirements":{"id":"deployment/requirements","title":"Requirements","description":"LiveCompositor imposes certain requirements both in the runtime and during a build. Specifics might differ depending on the way you use the compositor and features you are requiring.","sidebar":"sidebar"},"guides/deliver-input":{"id":"guides/deliver-input","title":"How to deliver input streams","description":"Live Compositor currently supports 2 input types:","sidebar":"sidebar"},"guides/receive-output":{"id":"guides/receive-output","title":"How to receive output streams","description":"Live Compositor currently supports 2 output types:","sidebar":"sidebar"},"guides/simple-scene":{"id":"guides/simple-scene","title":"Simple scene","description":"This guide will explain how to create simple scene that is combining input streams in a simple layout into single output stream.","sidebar":"sidebar"},"guides/view-transition":{"id":"guides/view-transition","title":"Transitions (View/Rescaler)","description":"This guide will show a few basic examples of animated transitions on View/Rescaler components.","sidebar":"sidebar"},"intro":{"id":"intro","title":"Getting started","description":"What is Live Compositor?","sidebar":"sidebar"}}}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkcompositor_live=self.webpackChunkcompositor_live||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"sidebar":[{"type":"link","label":"Getting started","href":"/docs/intro","docId":"intro","unlisted":false},{"type":"category","label":"Guides","items":[{"type":"link","label":"Simple scene","href":"/docs/guides/simple-scene","docId":"guides/simple-scene","unlisted":false},{"type":"link","label":"Deliver input streams","href":"/docs/guides/deliver-input","docId":"guides/deliver-input","unlisted":false},{"type":"link","label":"Receive output streams","href":"/docs/guides/receive-output","docId":"guides/receive-output","unlisted":false},{"type":"link","label":"Transitions (View/Rescaler)","href":"/docs/guides/view-transition","docId":"guides/view-transition","unlisted":false}],"collapsed":true,"collapsible":true,"href":"/docs/category/guides"},{"type":"category","label":"Concepts","items":[{"type":"link","label":"Overview","href":"/docs/concept/overview","docId":"concept/overview","unlisted":false},{"type":"link","label":"Component","href":"/docs/concept/component","docId":"concept/component","unlisted":false},{"type":"link","label":"Layouts","href":"/docs/concept/layouts","docId":"concept/layouts","unlisted":false},{"type":"link","label":"Shaders","href":"/docs/concept/shaders","docId":"concept/shaders","unlisted":false},{"type":"link","label":"Web Renderer","href":"/docs/concept/web","docId":"concept/web","unlisted":false}],"collapsed":true,"collapsible":true,"href":"/docs/concept/overview"},{"type":"category","label":"Deployment","items":[{"type":"link","label":"Overview","href":"/docs/deployment/overview","docId":"deployment/overview","unlisted":false},{"type":"link","label":"Requirements","href":"/docs/deployment/requirements","docId":"deployment/requirements","unlisted":false},{"type":"link","label":"Configuration","href":"/docs/deployment/configuration","docId":"deployment/configuration","unlisted":false},{"type":"link","label":"Example: AWS EC2","href":"/docs/deployment/aws-ec2","docId":"deployment/aws-ec2","unlisted":false}],"collapsed":true,"collapsible":true,"href":"/docs/deployment/overview"},{"type":"category","label":"API Reference","collapsible":false,"items":[{"type":"link","label":"HTTP Routes","href":"/docs/api/routes","docId":"api/routes","unlisted":false},{"type":"link","label":"Events","href":"/docs/api/events","docId":"api/events","unlisted":false},{"type":"category","label":"Components","collapsible":false,"description":"Basic blocks used to define a scene.","items":[{"type":"link","label":"InputStream","href":"/docs/api/components/InputStream","docId":"api/components/InputStream","unlisted":false},{"type":"link","label":"View","href":"/docs/api/components/View","docId":"api/components/View","unlisted":false},{"type":"link","label":"Rescaler","href":"/docs/api/components/Rescaler","docId":"api/components/Rescaler","unlisted":false},{"type":"link","label":"Tiles","href":"/docs/api/components/Tiles","docId":"api/components/Tiles","unlisted":false},{"type":"link","label":"Text","href":"/docs/api/components/Text","docId":"api/components/Text","unlisted":false},{"type":"link","label":"Shader","href":"/docs/api/components/Shader","docId":"api/components/Shader","unlisted":false},{"type":"link","label":"Image","href":"/docs/api/components/Image","docId":"api/components/Image","unlisted":false},{"type":"link","label":"WebView","href":"/docs/api/components/WebView","docId":"api/components/WebView","unlisted":false}],"collapsed":false},{"type":"category","label":"Renderers","collapsible":false,"description":"Resources that need to be registered first before they can be used.","items":[{"type":"link","label":"Shader","href":"/docs/api/renderers/shader","docId":"api/renderers/shader","unlisted":false},{"type":"link","label":"Image","href":"/docs/api/renderers/image","docId":"api/renderers/image","unlisted":false},{"type":"link","label":"Web Renderer","href":"/docs/api/renderers/web","docId":"api/renderers/web","unlisted":false}],"collapsed":false},{"type":"category","label":"Outputs","collapsible":false,"description":"Elements that deliver generated media.","items":[{"type":"link","label":"RTP","href":"/docs/api/outputs/rtp","docId":"api/outputs/rtp","unlisted":false},{"type":"link","label":"MP4","href":"/docs/api/outputs/mp4","docId":"api/outputs/mp4","unlisted":false}],"collapsed":false},{"type":"category","label":"Inputs","collapsible":false,"description":"Elements that deliver media from external sources.","items":[{"type":"link","label":"RTP","href":"/docs/api/inputs/rtp","docId":"api/inputs/rtp","unlisted":false},{"type":"link","label":"MP4","href":"/docs/api/inputs/mp4","docId":"api/inputs/mp4","unlisted":false},{"type":"link","label":"DeckLink","href":"/docs/api/inputs/decklink","docId":"api/inputs/decklink","unlisted":false}],"collapsed":false}],"collapsed":false,"href":"/docs/category/api-reference"}]},"docs":{"api/components/Image":{"id":"api/components/Image","title":"Image","description":"A component for rendering images.","sidebar":"sidebar"},"api/components/InputStream":{"id":"api/components/InputStream","title":"InputStream","description":"InputStream represents an input.","sidebar":"sidebar"},"api/components/Rescaler":{"id":"api/components/Rescaler","title":"Rescaler","description":"Rescaler is a layout component responsible for rescaling other components.","sidebar":"sidebar"},"api/components/Shader":{"id":"api/components/Shader","title":"Shader","description":"Shader applies transformation defined via WGSL shader on its children. Learn more.","sidebar":"sidebar"},"api/components/Text":{"id":"api/components/Text","title":"Text","description":"A component for rendering text.","sidebar":"sidebar"},"api/components/Tiles":{"id":"api/components/Tiles","title":"Tiles","description":"Tiles is a layout component that places all the child components next to each other while maximizing the use of available space. The component divides its area into multiple rectangles/tiles, one for each child component. All of those rectangles are the same size and do not overlap over each other.","sidebar":"sidebar"},"api/components/View":{"id":"api/components/View","title":"View","description":"View is the compositor\'s core layout mechanism. Its role is analogous to the","sidebar":"sidebar"},"api/components/WebView":{"id":"api/components/WebView","title":"WebView","description":"Required feature: web_renderer","sidebar":"sidebar"},"api/events":{"id":"api/events","title":"Events","description":"WebSocket events","sidebar":"sidebar"},"api/generated/component-Image":{"id":"api/generated/component-Image","title":"component-Image","description":"Image"},"api/generated/component-InputStream":{"id":"api/generated/component-InputStream","title":"component-InputStream","description":"InputStream"},"api/generated/component-Rescaler":{"id":"api/generated/component-Rescaler","title":"component-Rescaler","description":"Rescaler"},"api/generated/component-Shader":{"id":"api/generated/component-Shader","title":"component-Shader","description":"Shader"},"api/generated/component-Text":{"id":"api/generated/component-Text","title":"component-Text","description":"Text"},"api/generated/component-Tiles":{"id":"api/generated/component-Tiles","title":"component-Tiles","description":"Tiles"},"api/generated/component-View":{"id":"api/generated/component-View","title":"component-View","description":"View"},"api/generated/component-WebView":{"id":"api/generated/component-WebView","title":"component-WebView","description":"WebView"},"api/generated/output-Mp4Output":{"id":"api/generated/output-Mp4Output","title":"output-Mp4Output","description":"Mp4Output"},"api/generated/output-RtpOutputStream":{"id":"api/generated/output-RtpOutputStream","title":"output-RtpOutputStream","description":"RtpOutputStream"},"api/generated/renderer-DeckLink":{"id":"api/generated/renderer-DeckLink","title":"renderer-DeckLink","description":"DeckLink"},"api/generated/renderer-Image":{"id":"api/generated/renderer-Image","title":"renderer-Image","description":"Image"},"api/generated/renderer-Mp4Input":{"id":"api/generated/renderer-Mp4Input","title":"renderer-Mp4Input","description":"Mp4Input"},"api/generated/renderer-RtpInputStream":{"id":"api/generated/renderer-RtpInputStream","title":"renderer-RtpInputStream","description":"RtpInputStream"},"api/generated/renderer-Shader":{"id":"api/generated/renderer-Shader","title":"renderer-Shader","description":"Shader"},"api/generated/renderer-WebRenderer":{"id":"api/generated/renderer-WebRenderer","title":"renderer-WebRenderer","description":"WebRenderer"},"api/inputs/decklink":{"id":"api/inputs/decklink","title":"DeckLink","description":"Added in v0.3.0","sidebar":"sidebar"},"api/inputs/mp4":{"id":"api/inputs/mp4","title":"MP4","description":"An input type that allows the compositor to read static MP4 files.","sidebar":"sidebar"},"api/inputs/rtp":{"id":"api/inputs/rtp","title":"RTP","description":"An input type that allows streaming video and audio to the compositor over RTP.","sidebar":"sidebar"},"api/outputs/mp4":{"id":"api/outputs/mp4","title":"MP4","description":"Added in v0.3.0","sidebar":"sidebar"},"api/outputs/rtp":{"id":"api/outputs/rtp","title":"RTP","description":"An output type that allows streaming video and audio from the compositor over RTP.","sidebar":"sidebar"},"api/renderers/image":{"id":"api/renderers/image","title":"Image","description":"Represents an image asset uploaded to the compositor. Used by a Image component.","sidebar":"sidebar"},"api/renderers/shader":{"id":"api/renderers/shader","title":"Shader","description":"Represents compiled shader. Used by a Shader component.","sidebar":"sidebar"},"api/renderers/web":{"id":"api/renderers/web","title":"Web Renderer","description":"Required feature: web_renderer","sidebar":"sidebar"},"api/routes":{"id":"api/routes","title":"Routes","description":"API routes to configure the compositor.","sidebar":"sidebar"},"common/absolute-position":{"id":"common/absolute-position","title":"absolute-position","description":"A component is absolutely positioned if it defines fields like top, left, right, bottom, or rotation."},"concept/component":{"id":"concept/component","title":"Component","description":"A component is a basic block used to define how video streams are composed.","sidebar":"sidebar"},"concept/layouts":{"id":"concept/layouts","title":"Layouts","description":"Layout components define the size, position, and simple styling of other components.","sidebar":"sidebar"},"concept/overview":{"id":"concept/overview","title":"Concepts","description":"Inputs/outputs streams","sidebar":"sidebar"},"concept/shaders":{"id":"concept/shaders","title":"Shaders","description":"Shaders are small programs that we send to a GPU to perform some computation for us. They are used extensively in the LiveCompositor. All builtin transformation are implemented as shaders under the hood. It is also possible to create render nodes that run a custom shader on their input. Since LiveCompositor is implemented using wgpu, the shaders have to be written in WGSL (WebGPU Shading Language). They also have to fulfill some custom requirements that allow them to be run by the LiveCompositor.","sidebar":"sidebar"},"concept/web":{"id":"concept/web","title":"Web Renderer","description":"Web renderer allows you to capture that output of a browser and compose it with other streams.","sidebar":"sidebar"},"deployment/aws-ec2":{"id":"deployment/aws-ec2","title":"Example: AWS EC2","description":"This is an example configuration that shows how to deploy LiveCompositor to an AWS EC2 instance with Terraform configuration.","sidebar":"sidebar"},"deployment/configuration":{"id":"deployment/configuration","title":"Configuration","description":"Environment variables","sidebar":"sidebar"},"deployment/overview":{"id":"deployment/overview","title":"Deployment","description":"LiveCompositor can be deployed in various ways, depending on your platform, used features and whether it is used standalone or via Membrane Framework plugin.","sidebar":"sidebar"},"deployment/requirements":{"id":"deployment/requirements","title":"Requirements","description":"LiveCompositor imposes certain requirements both in the runtime and during a build. Specifics might differ depending on the way you use the compositor and features you are requiring.","sidebar":"sidebar"},"guides/deliver-input":{"id":"guides/deliver-input","title":"How to deliver input streams","description":"Live Compositor currently supports 2 input types:","sidebar":"sidebar"},"guides/receive-output":{"id":"guides/receive-output","title":"How to receive output streams","description":"Live Compositor currently supports 2 output types:","sidebar":"sidebar"},"guides/simple-scene":{"id":"guides/simple-scene","title":"Simple scene","description":"This guide will explain how to create simple scene that is combining input streams in a simple layout into single output stream.","sidebar":"sidebar"},"guides/view-transition":{"id":"guides/view-transition","title":"Transitions (View/Rescaler)","description":"This guide will show a few basic examples of animated transitions on View/Rescaler components.","sidebar":"sidebar"},"intro":{"id":"intro","title":"Getting started","description":"What is Live Compositor?","sidebar":"sidebar"}}}')}}]); \ No newline at end of file diff --git a/assets/js/runtime~main.96f480b1.js b/assets/js/runtime~main.03d4f7b6.js similarity index 98% rename from assets/js/runtime~main.96f480b1.js rename to assets/js/runtime~main.03d4f7b6.js index e8c657675..4b5d66609 100644 --- a/assets/js/runtime~main.96f480b1.js +++ b/assets/js/runtime~main.03d4f7b6.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,f,d,c,t={},r={};function b(e){var a=r[e];if(void 0!==a)return a.exports;var f=r[e]={exports:{}};return t[e].call(f.exports,f,f.exports,b),f.exports}b.m=t,e=[],b.O=(a,f,d,c)=>{if(!f){var t=1/0;for(i=0;i=c)&&Object.keys(b.O).every((e=>b.O[e](f[o])))?f.splice(o--,1):(r=!1,c0&&e[i-1][2]>c;i--)e[i]=e[i-1];e[i]=[f,d,c]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var c=Object.create(null);b.r(c);var t={};a=a||[null,f({}),f([]),f(f)];for(var r=2&d&&e;"object"==typeof r&&!~a.indexOf(r);r=f(r))Object.getOwnPropertyNames(r).forEach((a=>t[a]=()=>e[a]));return t.default=()=>e,b.d(c,t),c},b.d=(e,a)=>{for(var f in a)b.o(a,f)&&!b.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,f)=>(b.f[f](e,a),a)),[])),b.u=e=>"assets/js/"+({53:"935f2afb",222:"583850f4",230:"40bc831f",249:"1ec835e1",580:"19a7aa20",821:"5732f308",1015:"d81783d9",1153:"81bcc942",1182:"8b6aa7f8",1252:"914825a2",1361:"be91778b",1508:"b674f25e",1538:"14eaa339",1595:"431449dc",1724:"cd44186e",1778:"15cc4295",1792:"f3168f4a",1897:"ea6d9d64",2402:"42b33983",2676:"896f0ba9",2692:"f94d6d54",2967:"2fb3c611",3224:"72fe5344",3237:"1df93b7f",3268:"7ef038ae",3303:"7a01de4d",3533:"26033596",3565:"8465aa74",3569:"aaf9fdb2",3982:"4eceb64f",3987:"286afa91",4368:"a94703ab",4771:"fca0959c",4775:"d5b534ab",5195:"b360e2f2",5695:"1e196f43",5860:"3d5f68d7",5874:"fab95674",6010:"d30da6cd",6279:"c2904cbc",7140:"03d586bf",7180:"3d0d9de9",7265:"e6a4582a",7508:"b542e828",7598:"20fb3f1d",7721:"6402fa87",7918:"17896441",7920:"1a4e3797",8051:"f14f804c",8158:"6e7ae30b",8260:"2a8dccce",8407:"e17b63fd",8508:"2688c0dd",8518:"a7bd4aaa",8646:"6ecc9e9d",8780:"0cb07e4e",8930:"e1fd9655",9318:"584f2726",9593:"c7461f95",9651:"177e5166",9661:"5e95c892",9817:"14eb3368"}[e]||e)+"."+{53:"ad0f012a",222:"df4eaab1",230:"cbadcd18",249:"915b899f",580:"0828891b",804:"f707c5b6",821:"66e476d4",1015:"52236f1f",1153:"c76ecf07",1182:"4c845e76",1252:"9c002111",1361:"6dc84f0a",1426:"70221f07",1508:"2543f46c",1538:"bf521e6b",1595:"a38898d4",1724:"18eaa273",1772:"aa2c22c6",1778:"05ed33c7",1792:"d12a965a",1897:"7bebef79",2402:"98622aed",2676:"25941a29",2692:"24ec38c0",2967:"e736d831",3224:"acf09f74",3237:"19282068",3268:"a20fec29",3303:"cc84cd50",3533:"ee26fbfc",3565:"d0d68e16",3569:"710251ad",3982:"452775aa",3987:"57751937",4368:"cf35d549",4771:"8be4d7e4",4775:"8b96aefc",5195:"425ff6d6",5695:"a78f7ba7",5860:"736b5c9e",5874:"a324ab7f",6010:"fb1a3245",6279:"50105736",6945:"ea91a03f",7140:"1e8f5404",7180:"2c6452c9",7265:"e593b942",7508:"818fb191",7598:"97a9db77",7721:"2f3e13a4",7918:"0197e451",7920:"d3bbac73",8051:"0bcbfb42",8158:"ae5d8ce5",8260:"19cb1e61",8407:"c44734f1",8508:"69162418",8518:"700ccf1a",8646:"0010af33",8780:"c4108567",8894:"d8676939",8930:"37bd587c",9286:"e909a71e",9318:"9ae6eb2e",9593:"ae7627bf",9651:"ab542cfb",9661:"105726d8",9817:"fb789b39"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),d={},c="compositor-live:",b.l=(e,a,f,t)=>{if(d[e])d[e].push(a);else{var r,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i{r.onerror=r.onload=null,clearTimeout(s);var c=d[e];if(delete d[e],r.parentNode&&r.parentNode.removeChild(r),c&&c.forEach((e=>e(f))),a)return a(f)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:r}),12e4);r.onerror=l.bind(null,r.onerror),r.onload=l.bind(null,r.onload),o&&document.head.appendChild(r)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/",b.gca=function(e){return e={17896441:"7918",26033596:"3533","935f2afb":"53","583850f4":"222","40bc831f":"230","1ec835e1":"249","19a7aa20":"580","5732f308":"821",d81783d9:"1015","81bcc942":"1153","8b6aa7f8":"1182","914825a2":"1252",be91778b:"1361",b674f25e:"1508","14eaa339":"1538","431449dc":"1595",cd44186e:"1724","15cc4295":"1778",f3168f4a:"1792",ea6d9d64:"1897","42b33983":"2402","896f0ba9":"2676",f94d6d54:"2692","2fb3c611":"2967","72fe5344":"3224","1df93b7f":"3237","7ef038ae":"3268","7a01de4d":"3303","8465aa74":"3565",aaf9fdb2:"3569","4eceb64f":"3982","286afa91":"3987",a94703ab:"4368",fca0959c:"4771",d5b534ab:"4775",b360e2f2:"5195","1e196f43":"5695","3d5f68d7":"5860",fab95674:"5874",d30da6cd:"6010",c2904cbc:"6279","03d586bf":"7140","3d0d9de9":"7180",e6a4582a:"7265",b542e828:"7508","20fb3f1d":"7598","6402fa87":"7721","1a4e3797":"7920",f14f804c:"8051","6e7ae30b":"8158","2a8dccce":"8260",e17b63fd:"8407","2688c0dd":"8508",a7bd4aaa:"8518","6ecc9e9d":"8646","0cb07e4e":"8780",e1fd9655:"8930","584f2726":"9318",c7461f95:"9593","177e5166":"9651","5e95c892":"9661","14eb3368":"9817"}[e]||e,b.p+b.u(e)},(()=>{var e={1303:0,532:0};b.f.j=(a,f)=>{var d=b.o(e,a)?e[a]:void 0;if(0!==d)if(d)f.push(d[2]);else if(/^(1303|532)$/.test(a))e[a]=0;else{var c=new Promise(((f,c)=>d=e[a]=[f,c]));f.push(d[2]=c);var t=b.p+b.u(a),r=new Error;b.l(t,(f=>{if(b.o(e,a)&&(0!==(d=e[a])&&(e[a]=void 0),d)){var c=f&&("load"===f.type?"missing":f.type),t=f&&f.target&&f.target.src;r.message="Loading chunk "+a+" failed.\n("+c+": "+t+")",r.name="ChunkLoadError",r.type=c,r.request=t,d[1](r)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,f)=>{var d,c,t=f[0],r=f[1],o=f[2],n=0;if(t.some((a=>0!==e[a]))){for(d in r)b.o(r,d)&&(b.m[d]=r[d]);if(o)var i=o(b)}for(a&&a(f);n{"use strict";var e,a,f,d,c,t={},r={};function b(e){var a=r[e];if(void 0!==a)return a.exports;var f=r[e]={exports:{}};return t[e].call(f.exports,f,f.exports,b),f.exports}b.m=t,e=[],b.O=(a,f,d,c)=>{if(!f){var t=1/0;for(i=0;i=c)&&Object.keys(b.O).every((e=>b.O[e](f[o])))?f.splice(o--,1):(r=!1,c0&&e[i-1][2]>c;i--)e[i]=e[i-1];e[i]=[f,d,c]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var c=Object.create(null);b.r(c);var t={};a=a||[null,f({}),f([]),f(f)];for(var r=2&d&&e;"object"==typeof r&&!~a.indexOf(r);r=f(r))Object.getOwnPropertyNames(r).forEach((a=>t[a]=()=>e[a]));return t.default=()=>e,b.d(c,t),c},b.d=(e,a)=>{for(var f in a)b.o(a,f)&&!b.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,f)=>(b.f[f](e,a),a)),[])),b.u=e=>"assets/js/"+({53:"935f2afb",222:"583850f4",230:"40bc831f",249:"1ec835e1",580:"19a7aa20",821:"5732f308",1015:"d81783d9",1153:"81bcc942",1182:"8b6aa7f8",1252:"914825a2",1361:"be91778b",1508:"b674f25e",1538:"14eaa339",1595:"431449dc",1724:"cd44186e",1778:"15cc4295",1792:"f3168f4a",1897:"ea6d9d64",2402:"42b33983",2676:"896f0ba9",2692:"f94d6d54",2967:"2fb3c611",3224:"72fe5344",3237:"1df93b7f",3268:"7ef038ae",3303:"7a01de4d",3533:"26033596",3565:"8465aa74",3569:"aaf9fdb2",3982:"4eceb64f",3987:"286afa91",4368:"a94703ab",4771:"fca0959c",4775:"d5b534ab",5195:"b360e2f2",5695:"1e196f43",5860:"3d5f68d7",5874:"fab95674",6010:"d30da6cd",6279:"c2904cbc",7140:"03d586bf",7180:"3d0d9de9",7265:"e6a4582a",7508:"b542e828",7598:"20fb3f1d",7721:"6402fa87",7918:"17896441",7920:"1a4e3797",8051:"f14f804c",8158:"6e7ae30b",8260:"2a8dccce",8407:"e17b63fd",8508:"2688c0dd",8518:"a7bd4aaa",8646:"6ecc9e9d",8780:"0cb07e4e",8930:"e1fd9655",9318:"584f2726",9593:"c7461f95",9651:"177e5166",9661:"5e95c892",9817:"14eb3368"}[e]||e)+"."+{53:"a500497b",222:"df4eaab1",230:"cbadcd18",249:"915b899f",580:"0828891b",804:"f707c5b6",821:"66e476d4",1015:"52236f1f",1153:"c76ecf07",1182:"79b22697",1252:"9c002111",1361:"6dc84f0a",1426:"70221f07",1508:"2543f46c",1538:"bf521e6b",1595:"a38898d4",1724:"18eaa273",1772:"aa2c22c6",1778:"05ed33c7",1792:"d12a965a",1897:"7bebef79",2402:"98622aed",2676:"25941a29",2692:"24ec38c0",2967:"e736d831",3224:"acf09f74",3237:"19282068",3268:"a20fec29",3303:"cc84cd50",3533:"ee26fbfc",3565:"d0d68e16",3569:"710251ad",3982:"452775aa",3987:"57751937",4368:"cf35d549",4771:"8be4d7e4",4775:"8b96aefc",5195:"425ff6d6",5695:"a78f7ba7",5860:"736b5c9e",5874:"a324ab7f",6010:"fb1a3245",6279:"50105736",6945:"ea91a03f",7140:"1e8f5404",7180:"2c6452c9",7265:"e593b942",7508:"818fb191",7598:"97a9db77",7721:"2f3e13a4",7918:"0197e451",7920:"d3bbac73",8051:"0bcbfb42",8158:"ae5d8ce5",8260:"19cb1e61",8407:"c44734f1",8508:"69162418",8518:"700ccf1a",8646:"0010af33",8780:"c4108567",8894:"d8676939",8930:"37bd587c",9286:"e909a71e",9318:"9ae6eb2e",9593:"ae7627bf",9651:"ab542cfb",9661:"105726d8",9817:"fb789b39"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),d={},c="compositor-live:",b.l=(e,a,f,t)=>{if(d[e])d[e].push(a);else{var r,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i{r.onerror=r.onload=null,clearTimeout(s);var c=d[e];if(delete d[e],r.parentNode&&r.parentNode.removeChild(r),c&&c.forEach((e=>e(f))),a)return a(f)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:r}),12e4);r.onerror=l.bind(null,r.onerror),r.onload=l.bind(null,r.onload),o&&document.head.appendChild(r)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/",b.gca=function(e){return e={17896441:"7918",26033596:"3533","935f2afb":"53","583850f4":"222","40bc831f":"230","1ec835e1":"249","19a7aa20":"580","5732f308":"821",d81783d9:"1015","81bcc942":"1153","8b6aa7f8":"1182","914825a2":"1252",be91778b:"1361",b674f25e:"1508","14eaa339":"1538","431449dc":"1595",cd44186e:"1724","15cc4295":"1778",f3168f4a:"1792",ea6d9d64:"1897","42b33983":"2402","896f0ba9":"2676",f94d6d54:"2692","2fb3c611":"2967","72fe5344":"3224","1df93b7f":"3237","7ef038ae":"3268","7a01de4d":"3303","8465aa74":"3565",aaf9fdb2:"3569","4eceb64f":"3982","286afa91":"3987",a94703ab:"4368",fca0959c:"4771",d5b534ab:"4775",b360e2f2:"5195","1e196f43":"5695","3d5f68d7":"5860",fab95674:"5874",d30da6cd:"6010",c2904cbc:"6279","03d586bf":"7140","3d0d9de9":"7180",e6a4582a:"7265",b542e828:"7508","20fb3f1d":"7598","6402fa87":"7721","1a4e3797":"7920",f14f804c:"8051","6e7ae30b":"8158","2a8dccce":"8260",e17b63fd:"8407","2688c0dd":"8508",a7bd4aaa:"8518","6ecc9e9d":"8646","0cb07e4e":"8780",e1fd9655:"8930","584f2726":"9318",c7461f95:"9593","177e5166":"9651","5e95c892":"9661","14eb3368":"9817"}[e]||e,b.p+b.u(e)},(()=>{var e={1303:0,532:0};b.f.j=(a,f)=>{var d=b.o(e,a)?e[a]:void 0;if(0!==d)if(d)f.push(d[2]);else if(/^(1303|532)$/.test(a))e[a]=0;else{var c=new Promise(((f,c)=>d=e[a]=[f,c]));f.push(d[2]=c);var t=b.p+b.u(a),r=new Error;b.l(t,(f=>{if(b.o(e,a)&&(0!==(d=e[a])&&(e[a]=void 0),d)){var c=f&&("load"===f.type?"missing":f.type),t=f&&f.target&&f.target.src;r.message="Loading chunk "+a+" failed.\n("+c+": "+t+")",r.name="ChunkLoadError",r.type=c,r.request=t,d[1](r)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,f)=>{var d,c,t=f[0],r=f[1],o=f[2],n=0;if(t.some((a=>0!==e[a]))){for(d in r)b.o(r,d)&&(b.m[d]=r[d]);if(o)var i=o(b)}for(a&&a(f);n