From 52820fd5fbfaf276b0663ea647d8f00e6dc0e662 Mon Sep 17 00:00:00 2001 From: cartierf89 Date: Fri, 29 Aug 2025 18:12:15 -0400 Subject: [PATCH] declarative obs config with nvidia encoders --- hosts/desktop/default.nix | 2 + .../basic/profiles/Untitled/basic.ini | 1 + .../basic/profiles/Untitled/hotkeys.json | 1 + .../profiles/Untitled/recordEncoder.json | 1 + .../basic/profiles/Untitled2/basic.ini | 115 +++++ .../profiles/Untitled2/recordEncoder.json | 1 + .../obs-config/basic/scenes/Untitled.json | 207 ++++++++ .../obs-config/basic/scenes/Untitled.json.bak | 207 ++++++++ modules/home/common/obs-config/global.ini | 48 ++ .../obs-config/logs/2025-08-29 17-47-15.txt | 307 ++++++++++++ .../obs-config/logs/2025-08-29 17-59-05.txt | 222 +++++++++ .../plugin_config/obs-websocket/config.json | 8 + .../rtmp-services/amazon_ivs_ingests.json | 454 ++++++++++++++++++ .../plugin_config/rtmp-services/package.json | 1 + .../plugin_config/rtmp-services/services.json | 1 + .../rtmp-services/twitch_ingests.json | 454 ++++++++++++++++++ .../profiler_data/2025-08-29 17-47-15.csv.gz | Bin 0 -> 56102 bytes .../profiler_data/2025-08-29 17-59-05.csv.gz | Bin 0 -> 14318 bytes modules/home/common/obs-config/service.json | 1 + modules/home/common/obs-config/user.ini | 67 +++ modules/home/common/obs.nix | 13 + modules/home/home.nix | 17 +- modules/system/gaming.nix | 1 + modules/system/nvidia.nix | 2 +- 24 files changed, 2122 insertions(+), 9 deletions(-) create mode 120000 modules/home/common/obs-config/basic/profiles/Untitled/basic.ini create mode 120000 modules/home/common/obs-config/basic/profiles/Untitled/hotkeys.json create mode 120000 modules/home/common/obs-config/basic/profiles/Untitled/recordEncoder.json create mode 100644 modules/home/common/obs-config/basic/profiles/Untitled2/basic.ini create mode 100644 modules/home/common/obs-config/basic/profiles/Untitled2/recordEncoder.json create mode 100644 modules/home/common/obs-config/basic/scenes/Untitled.json create mode 100644 modules/home/common/obs-config/basic/scenes/Untitled.json.bak create mode 100644 modules/home/common/obs-config/global.ini create mode 100644 modules/home/common/obs-config/logs/2025-08-29 17-47-15.txt create mode 100644 modules/home/common/obs-config/logs/2025-08-29 17-59-05.txt create mode 100644 modules/home/common/obs-config/plugin_config/obs-websocket/config.json create mode 100644 modules/home/common/obs-config/plugin_config/rtmp-services/amazon_ivs_ingests.json create mode 100644 modules/home/common/obs-config/plugin_config/rtmp-services/package.json create mode 100644 modules/home/common/obs-config/plugin_config/rtmp-services/services.json create mode 100644 modules/home/common/obs-config/plugin_config/rtmp-services/twitch_ingests.json create mode 100644 modules/home/common/obs-config/profiler_data/2025-08-29 17-47-15.csv.gz create mode 100644 modules/home/common/obs-config/profiler_data/2025-08-29 17-59-05.csv.gz create mode 120000 modules/home/common/obs-config/service.json create mode 100644 modules/home/common/obs-config/user.ini create mode 100644 modules/home/common/obs.nix diff --git a/hosts/desktop/default.nix b/hosts/desktop/default.nix index e2c7056..0514306 100755 --- a/hosts/desktop/default.nix +++ b/hosts/desktop/default.nix @@ -13,7 +13,9 @@ ../../modules/system/device-management/logitech.nix ./hardware-configuration.nix ../../modules/system/gaming.nix + #../../modules/home/common/obs.nix ]; + # Set primary monitor for SDDM login screen services.xserver.displayManager.sddm.settings = { General = { diff --git a/modules/home/common/obs-config/basic/profiles/Untitled/basic.ini b/modules/home/common/obs-config/basic/profiles/Untitled/basic.ini new file mode 120000 index 0000000..e19137b --- /dev/null +++ b/modules/home/common/obs-config/basic/profiles/Untitled/basic.ini @@ -0,0 +1 @@ +/nix/store/c7bha5xg5r8iy4fskijvpbi6j42ck8cj-home-manager-files/.config/obs-studio/basic/profiles/Untitled/basic.ini \ No newline at end of file diff --git a/modules/home/common/obs-config/basic/profiles/Untitled/hotkeys.json b/modules/home/common/obs-config/basic/profiles/Untitled/hotkeys.json new file mode 120000 index 0000000..9a2c509 --- /dev/null +++ b/modules/home/common/obs-config/basic/profiles/Untitled/hotkeys.json @@ -0,0 +1 @@ +/nix/store/c7bha5xg5r8iy4fskijvpbi6j42ck8cj-home-manager-files/.config/obs-studio/basic/profiles/Untitled/hotkeys.json \ No newline at end of file diff --git a/modules/home/common/obs-config/basic/profiles/Untitled/recordEncoder.json b/modules/home/common/obs-config/basic/profiles/Untitled/recordEncoder.json new file mode 120000 index 0000000..741a06d --- /dev/null +++ b/modules/home/common/obs-config/basic/profiles/Untitled/recordEncoder.json @@ -0,0 +1 @@ +/nix/store/c7bha5xg5r8iy4fskijvpbi6j42ck8cj-home-manager-files/.config/obs-studio/basic/profiles/Untitled/recordEncoder.json \ No newline at end of file diff --git a/modules/home/common/obs-config/basic/profiles/Untitled2/basic.ini b/modules/home/common/obs-config/basic/profiles/Untitled2/basic.ini new file mode 100644 index 0000000..9c1bec9 --- /dev/null +++ b/modules/home/common/obs-config/basic/profiles/Untitled2/basic.ini @@ -0,0 +1,115 @@ +[General] +Name=Untitled + +[Output] +Mode=Advanced +FilenameFormatting=%CCYY-%MM-%DD %hh-%mm-%ss +DelayEnable=false +DelaySec=20 +DelayPreserve=true +Reconnect=true +RetryDelay=2 +MaxRetries=25 +BindIP=default +IPFamily=IPv4+IPv6 +NewSocketLoopEnable=false +LowLatencyEnable=false + +[Stream1] +IgnoreRecommended=false +EnableMultitrackVideo=false +MultitrackVideoMaximumAggregateBitrateAuto=true +MultitrackVideoMaximumVideoTracksAuto=true + +[SimpleOutput] +FilePath=/home/cartier +RecFormat2=mkv +VBitrate=2500 +ABitrate=160 +UseAdvanced=false +Preset=veryfast +NVENCPreset2=p5 +RecQuality=Stream +RecRB=false +RecRBTime=20 +RecRBSize=512 +RecRBPrefix=Replay +StreamAudioEncoder=aac +RecAudioEncoder=aac +RecTracks=1 +StreamEncoder=x264 +RecEncoder=x264 + +[AdvOut] +ApplyServiceSettings=true +UseRescale=false +TrackIndex=1 +VodTrackIndex=2 +Encoder=obs_x264 +RecType=Standard +RecFilePath=/home/cartier/gamer-drive/obsclips +RecFormat2=mp4 +RecUseRescale=false +RecTracks=1 +RecEncoder=ffmpeg_vaapi_tex +FLVTrack=1 +StreamMultiTrackAudioMixes=1 +FFOutputToFile=true +FFFilePath=/home/cartier +FFVBitrate=2500 +FFVGOPSize=250 +FFUseRescale=false +FFIgnoreCompat=false +FFABitrate=160 +FFAudioMixes=1 +Track1Bitrate=320 +Track2Bitrate=320 +Track3Bitrate=320 +Track4Bitrate=320 +Track5Bitrate=320 +Track6Bitrate=320 +RecSplitFileTime=15 +RecSplitFileSize=2048 +RecRB=true +RecRBTime=120 +RecRBSize=512 +AudioEncoder=libfdk_aac +RecAudioEncoder=libfdk_aac +RecSplitFileType=Time +FFFormat= +FFFormatMimeType= +FFVEncoderId=0 +FFVEncoder= +FFAEncoderId=0 +FFAEncoder= + +[Video] +BaseCX=2560 +BaseCY=1440 +OutputCX=2560 +OutputCY=1440 +FPSType=1 +FPSCommon=30 +FPSInt=120 +FPSNum=30 +FPSDen=1 +ScaleType=bicubic +ColorFormat=NV12 +ColorSpace=709 +ColorRange=Partial +SdrWhiteLevel=300 +HdrNominalPeakLevel=1000 + +[Audio] +MonitoringDeviceId=default +MonitoringDeviceName=Default +SampleRate=48000 +ChannelSetup=Stereo +MeterDecayRate=23.53 +PeakMeterType=0 + +[Panels] +CookieId=E8BC3E95F6423E01 + +[Hotkeys] +ReplayBuffer={"ReplayBuffer.Save":[{"key":"OBS_KEY_END"}]} diff --git a/modules/home/common/obs-config/basic/profiles/Untitled2/recordEncoder.json b/modules/home/common/obs-config/basic/profiles/Untitled2/recordEncoder.json new file mode 100644 index 0000000..68bd407 --- /dev/null +++ b/modules/home/common/obs-config/basic/profiles/Untitled2/recordEncoder.json @@ -0,0 +1 @@ +{"vaapi_device":"/dev/dri/by-path/pci-0000:08:00.0-render","bitrate":50000} \ No newline at end of file diff --git a/modules/home/common/obs-config/basic/scenes/Untitled.json b/modules/home/common/obs-config/basic/scenes/Untitled.json new file mode 100644 index 0000000..f98e54f --- /dev/null +++ b/modules/home/common/obs-config/basic/scenes/Untitled.json @@ -0,0 +1,207 @@ +{ + "DesktopAudioDevice1": { + "prev_ver": 520159234, + "name": "Desktop Audio", + "uuid": "45138c8a-9de7-4f6a-a00b-ea79f200b78b", + "id": "pulse_output_capture", + "versioned_id": "pulse_output_capture", + "settings": { + "device_id": "alsa_output.usb-Logitech_G533_Gaming_Headset-00.analog-stereo.monitor" + }, + "mixers": 255, + "sync": 0, + "flags": 0, + "volume": 1.0, + "balance": 0.5, + "enabled": true, + "muted": false, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "hotkeys": { + "libobs.mute": [], + "libobs.unmute": [], + "libobs.push-to-mute": [], + "libobs.push-to-talk": [] + }, + "deinterlace_mode": 0, + "deinterlace_field_order": 0, + "monitoring_type": 0, + "private_settings": {} + }, + "current_scene": "Scene", + "current_program_scene": "Scene", + "scene_order": [ + { + "name": "Scene" + } + ], + "name": "Untitled", + "sources": [ + { + "prev_ver": 520159234, + "name": "Scene", + "uuid": "09db9299-4a61-466d-b0fb-496efa58b321", + "id": "scene", + "versioned_id": "scene", + "settings": { + "id_counter": 1, + "custom_size": false, + "items": [ + { + "name": "Monitor", + "source_uuid": "ba040adc-4c29-43f2-8670-42a99a947acc", + "visible": true, + "locked": false, + "rot": 0.0, + "scale_ref": { + "x": 1080.0, + "y": 1920.0 + }, + "align": 5, + "bounds_type": 2, + "bounds_align": 0, + "bounds_crop": false, + "crop_left": 0, + "crop_top": 0, + "crop_right": 0, + "crop_bottom": 0, + "id": 1, + "group_item_backup": false, + "pos": { + "x": 0.0, + "y": 0.0 + }, + "pos_rel": { + "x": -1.7777777910232544, + "y": -1.0 + }, + "scale": { + "x": 1.0, + "y": 1.0 + }, + "scale_rel": { + "x": 1.3333333730697632, + "y": 1.3333333730697632 + }, + "bounds": { + "x": 2560.0, + "y": 1440.0 + }, + "bounds_rel": { + "x": 3.5555555820465088, + "y": 2.0 + }, + "scale_filter": "disable", + "blend_method": "default", + "blend_type": "normal", + "show_transition": { + "duration": 0 + }, + "hide_transition": { + "duration": 0 + }, + "private_settings": {} + } + ] + }, + "mixers": 0, + "sync": 0, + "flags": 0, + "volume": 1.0, + "balance": 0.5, + "enabled": true, + "muted": false, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "hotkeys": { + "OBSBasic.SelectScene": [], + "libobs.show_scene_item.1": [], + "libobs.hide_scene_item.1": [] + }, + "deinterlace_mode": 0, + "deinterlace_field_order": 0, + "monitoring_type": 0, + "canvas_uuid": "6c69626f-6273-4c00-9d88-c5136d61696e", + "private_settings": {} + }, + { + "prev_ver": 520159234, + "name": "Monitor", + "uuid": "ba040adc-4c29-43f2-8670-42a99a947acc", + "id": "pipewire-screen-capture-source", + "versioned_id": "pipewire-screen-capture-source", + "settings": { + "RestoreToken": "" + }, + "mixers": 0, + "sync": 0, + "flags": 0, + "volume": 1.0, + "balance": 0.5, + "enabled": true, + "muted": false, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "hotkeys": {}, + "deinterlace_mode": 0, + "deinterlace_field_order": 0, + "monitoring_type": 0, + "private_settings": {} + } + ], + "groups": [], + "quick_transitions": [ + { + "name": "Cut", + "duration": 300, + "hotkeys": [], + "id": 1, + "fade_to_black": false + }, + { + "name": "Fade", + "duration": 300, + "hotkeys": [], + "id": 2, + "fade_to_black": false + }, + { + "name": "Fade", + "duration": 300, + "hotkeys": [], + "id": 3, + "fade_to_black": true + } + ], + "transitions": [], + "saved_projectors": [], + "canvases": [], + "current_transition": "Fade", + "transition_duration": 300, + "preview_locked": false, + "scaling_enabled": false, + "scaling_level": -23, + "scaling_off_x": 0.0, + "scaling_off_y": 0.0, + "modules": { + "scripts-tool": [], + "output-timer": { + "streamTimerHours": 0, + "streamTimerMinutes": 0, + "streamTimerSeconds": 30, + "recordTimerHours": 0, + "recordTimerMinutes": 0, + "recordTimerSeconds": 30, + "autoStartStreamTimer": false, + "autoStartRecordTimer": false, + "pauseRecordTimer": true + } + }, + "version": 2 +} \ No newline at end of file diff --git a/modules/home/common/obs-config/basic/scenes/Untitled.json.bak b/modules/home/common/obs-config/basic/scenes/Untitled.json.bak new file mode 100644 index 0000000..f98e54f --- /dev/null +++ b/modules/home/common/obs-config/basic/scenes/Untitled.json.bak @@ -0,0 +1,207 @@ +{ + "DesktopAudioDevice1": { + "prev_ver": 520159234, + "name": "Desktop Audio", + "uuid": "45138c8a-9de7-4f6a-a00b-ea79f200b78b", + "id": "pulse_output_capture", + "versioned_id": "pulse_output_capture", + "settings": { + "device_id": "alsa_output.usb-Logitech_G533_Gaming_Headset-00.analog-stereo.monitor" + }, + "mixers": 255, + "sync": 0, + "flags": 0, + "volume": 1.0, + "balance": 0.5, + "enabled": true, + "muted": false, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "hotkeys": { + "libobs.mute": [], + "libobs.unmute": [], + "libobs.push-to-mute": [], + "libobs.push-to-talk": [] + }, + "deinterlace_mode": 0, + "deinterlace_field_order": 0, + "monitoring_type": 0, + "private_settings": {} + }, + "current_scene": "Scene", + "current_program_scene": "Scene", + "scene_order": [ + { + "name": "Scene" + } + ], + "name": "Untitled", + "sources": [ + { + "prev_ver": 520159234, + "name": "Scene", + "uuid": "09db9299-4a61-466d-b0fb-496efa58b321", + "id": "scene", + "versioned_id": "scene", + "settings": { + "id_counter": 1, + "custom_size": false, + "items": [ + { + "name": "Monitor", + "source_uuid": "ba040adc-4c29-43f2-8670-42a99a947acc", + "visible": true, + "locked": false, + "rot": 0.0, + "scale_ref": { + "x": 1080.0, + "y": 1920.0 + }, + "align": 5, + "bounds_type": 2, + "bounds_align": 0, + "bounds_crop": false, + "crop_left": 0, + "crop_top": 0, + "crop_right": 0, + "crop_bottom": 0, + "id": 1, + "group_item_backup": false, + "pos": { + "x": 0.0, + "y": 0.0 + }, + "pos_rel": { + "x": -1.7777777910232544, + "y": -1.0 + }, + "scale": { + "x": 1.0, + "y": 1.0 + }, + "scale_rel": { + "x": 1.3333333730697632, + "y": 1.3333333730697632 + }, + "bounds": { + "x": 2560.0, + "y": 1440.0 + }, + "bounds_rel": { + "x": 3.5555555820465088, + "y": 2.0 + }, + "scale_filter": "disable", + "blend_method": "default", + "blend_type": "normal", + "show_transition": { + "duration": 0 + }, + "hide_transition": { + "duration": 0 + }, + "private_settings": {} + } + ] + }, + "mixers": 0, + "sync": 0, + "flags": 0, + "volume": 1.0, + "balance": 0.5, + "enabled": true, + "muted": false, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "hotkeys": { + "OBSBasic.SelectScene": [], + "libobs.show_scene_item.1": [], + "libobs.hide_scene_item.1": [] + }, + "deinterlace_mode": 0, + "deinterlace_field_order": 0, + "monitoring_type": 0, + "canvas_uuid": "6c69626f-6273-4c00-9d88-c5136d61696e", + "private_settings": {} + }, + { + "prev_ver": 520159234, + "name": "Monitor", + "uuid": "ba040adc-4c29-43f2-8670-42a99a947acc", + "id": "pipewire-screen-capture-source", + "versioned_id": "pipewire-screen-capture-source", + "settings": { + "RestoreToken": "" + }, + "mixers": 0, + "sync": 0, + "flags": 0, + "volume": 1.0, + "balance": 0.5, + "enabled": true, + "muted": false, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "hotkeys": {}, + "deinterlace_mode": 0, + "deinterlace_field_order": 0, + "monitoring_type": 0, + "private_settings": {} + } + ], + "groups": [], + "quick_transitions": [ + { + "name": "Cut", + "duration": 300, + "hotkeys": [], + "id": 1, + "fade_to_black": false + }, + { + "name": "Fade", + "duration": 300, + "hotkeys": [], + "id": 2, + "fade_to_black": false + }, + { + "name": "Fade", + "duration": 300, + "hotkeys": [], + "id": 3, + "fade_to_black": true + } + ], + "transitions": [], + "saved_projectors": [], + "canvases": [], + "current_transition": "Fade", + "transition_duration": 300, + "preview_locked": false, + "scaling_enabled": false, + "scaling_level": -23, + "scaling_off_x": 0.0, + "scaling_off_y": 0.0, + "modules": { + "scripts-tool": [], + "output-timer": { + "streamTimerHours": 0, + "streamTimerMinutes": 0, + "streamTimerSeconds": 30, + "recordTimerHours": 0, + "recordTimerMinutes": 0, + "recordTimerSeconds": 30, + "autoStartStreamTimer": false, + "autoStartRecordTimer": false, + "pauseRecordTimer": true + } + }, + "version": 2 +} \ No newline at end of file diff --git a/modules/home/common/obs-config/global.ini b/modules/home/common/obs-config/global.ini new file mode 100644 index 0000000..4323ee3 --- /dev/null +++ b/modules/home/common/obs-config/global.ini @@ -0,0 +1,48 @@ +[General] +Name1=Desktop Audio +Name2=Mic/Aux +MaxLogs=10 +InfoIncrement=-1 +ProcessPriority=Normal +EnableAutoUpdates=true +BrowserHWAccel=false +LastVersion=520159234 + +[BasicWindow] +geometry=@ByteArray(\\x1\\xd9\\xd0\\xcb\\0\\x3\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\x5\\x9f\\0\\0\\x3\\x37\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\x5\\x9f\\0\\0\\x3\\x37\\0\\0\\0\\0\\x2\\0\\0\\0\\a\\x80\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\x5\\x9f\\0\\0\\x3\\x37) + +[Output] +Mode=Advanced + +[AdvOut] +TrackIndex=1 +Encoder=ffmpeg_nvenc +RecFormat=mp4 +RecEncoder=ffmpeg_nvenc +FFOutputToFile=true +FFFilePath=/home/cartier/Videos +RecRB=true +RecRBTime=20 +RecRBSize=512 + +[Video] +BaseCX=2560 +BaseCY=1440 +OutputCX=2560 +OutputCY=1440 +FPSType=0 +FPSNum=120 +FPSDen=1 +ColorFormat=NV12 +ColorSpace=709 +ColorRange=1 +Renderer=OpenGL + +[Locations] +Configuration=/home/cartier/.config +SceneCollections=/home/cartier/.config +Profiles=/home/cartier/.config + +[PropertiesWindow] +cx=720 +cy=580 diff --git a/modules/home/common/obs-config/logs/2025-08-29 17-47-15.txt b/modules/home/common/obs-config/logs/2025-08-29 17-47-15.txt new file mode 100644 index 0000000..df96fdb --- /dev/null +++ b/modules/home/common/obs-config/logs/2025-08-29 17-47-15.txt @@ -0,0 +1,307 @@ +17:47:15.707: Platform: Wayland +17:47:15.707: CPU Name: AMD Ryzen 7 5800X3D 8-Core Processor +17:47:15.707: CPU Speed: 4449.908MHz +17:47:15.708: Physical Cores: 8, Logical Cores: 16 +17:47:15.708: Physical Memory: 32001MB Total, 21505MB Free +17:47:15.708: Kernel Version: Linux 6.12.41 +17:47:15.708: Distribution: NixOS "25.11" +17:47:15.708: Desktop Environment: Hyprland (Hyprland) +17:47:15.708: Session Type: wayland +17:47:15.709: Current Date/Time: 2025-08-29, 05:47:15 PM +17:47:15.709: Browser Hardware Acceleration: true +17:47:15.709: Qt Version: 6.9.1 (runtime), 6.9.1 (compiled) +17:47:15.709: Portable mode: false +17:47:15.766: OBS 31.1.2 (linux) +17:47:15.766: --------------------------------- +17:47:15.767: --------------------------------- +17:47:15.767: audio settings reset: +17:47:15.767: samples per sec: 48000 +17:47:15.767: speakers: 2 +17:47:15.767: max buffering: 960 milliseconds +17:47:15.767: buffering type: dynamically increasing +17:47:15.768: --------------------------------- +17:47:15.768: Initializing OpenGL... +17:47:15.768: Using EGL/Wayland +17:47:15.812: Initialized EGL 1.5 +17:47:15.876: Loading up OpenGL on adapter NVIDIA Corporation NVIDIA GeForce RTX 4080/PCIe/SSE2 +17:47:15.877: OpenGL loaded successfully, version 3.3.0 NVIDIA 570.172.08, shading language 3.30 NVIDIA via Cg compiler +17:47:15.897: --------------------------------- +17:47:15.897: video settings reset: +17:47:15.897: base resolution: 1080x1920 +17:47:15.897: output resolution: 720x1280 +17:47:15.897: downscale filter: Bicubic +17:47:15.897: fps: 30/1 +17:47:15.897: format: NV12 +17:47:15.897: YUV mode: Rec. 709/Partial +17:47:15.897: NV12 texture support enabled +17:47:15.897: P010 texture support not available +17:47:15.897: Audio monitoring device: +17:47:15.897: name: Default +17:47:15.897: id: default +17:47:15.934: --------------------------------- +17:47:15.941: Failed to load 'en-US' text for module: 'decklink-captions.so' +17:47:15.948: Failed to load 'en-US' text for module: 'decklink-output-ui.so' +17:47:15.954: A DeckLink iterator could not be created. The DeckLink drivers may not be installed +17:47:15.954: Failed to initialize module 'decklink.so' +17:47:16.163: [pipewire] Available capture sources: +17:47:16.163: [pipewire] - Monitor source +17:47:16.163: [pipewire] - Window source +17:47:16.182: v4l2loopback not installed, virtual camera not registered +17:47:16.191: [obs-browser]: Version 2.25.3 +17:47:16.191: [obs-browser]: CEF Version 138.0.7204.97 (runtime), 138.0.17+gac9b751+chromium-138.0.7204.97 (compiled) +17:47:16.191: [obs-browser]: Blacklisted driver detected, disabling browser source hardware acceleration. +17:47:16.491: VAAPI: API version 1.22 +17:47:16.555: FFmpeg VAAPI H264 encoding supported +17:47:16.820: FFmpeg VAAPI AV1 encoding supported +17:47:17.087: FFmpeg VAAPI HEVC encoding supported +17:47:17.124: [NVENC] Test process failed: nvenc_lib +17:47:17.124: NVENC not supported +17:47:17.124: Failed to initialize module 'obs-nvenc.so' +17:47:17.911: [obs-websocket] [obs_module_load] you can haz websockets (Version: 5.6.2 | RPC Version: 1) +17:47:17.911: [obs-websocket] [obs_module_load] Qt version (compile-time): 6.9.1 | Qt version (run-time): 6.9.1 +17:47:17.911: [obs-websocket] [obs_module_load] Linked ASIO Version: 102400 +17:47:17.911: DEPRECATION: obs_frontend_get_global_config is deprecated. Read from global or user configuration explicitly instead. +17:47:17.911: [obs-websocket] [Config::Load] Existing configuration not found, using defaults. +17:47:17.911: [obs-websocket] [Config::Load] (FirstLoad) Generating new server password. +17:47:17.916: [obs-websocket] [obs_module_load] Module loaded. +17:47:17.947: [vlc-video]: VLC 3.0.21 Vetinari found, VLC video source enabled +17:47:17.947: --------------------------------- +17:47:17.947: Loaded Modules: +17:47:17.947: vlc-video.so +17:47:17.947: text-freetype2.so +17:47:17.947: rtmp-services.so +17:47:17.947: obs-x264.so +17:47:17.947: obs-websocket.so +17:47:17.947: obs-webrtc.so +17:47:17.947: obs-vst.so +17:47:17.947: obs-transitions.so +17:47:17.947: obs-qsv11.so +17:47:17.947: obs-outputs.so +17:47:17.947: obs-libfdk.so +17:47:17.947: obs-filters.so +17:47:17.947: obs-ffmpeg.so +17:47:17.947: obs-browser.so +17:47:17.948: linux-v4l2.so +17:47:17.948: linux-pulseaudio.so +17:47:17.948: linux-pipewire.so +17:47:17.948: linux-jack.so +17:47:17.948: linux-capture.so +17:47:17.948: linux-alsa.so +17:47:17.948: image-source.so +17:47:17.948: frontend-tools.so +17:47:17.948: decklink-output-ui.so +17:47:17.948: decklink-captions.so +17:47:17.948: --------------------------------- +17:47:17.948: --------------------------------- +17:47:17.948: Available Encoders: +17:47:17.948: Video Encoders: +17:47:17.948: - ffmpeg_svt_av1 (SVT-AV1) +17:47:17.948: - ffmpeg_aom_av1 (AOM AV1) +17:47:17.948: - ffmpeg_vaapi_tex (FFmpeg VAAPI H.264) +17:47:17.948: - av1_ffmpeg_vaapi_tex (FFmpeg VAAPI AV1) +17:47:17.948: - hevc_ffmpeg_vaapi_tex (FFmpeg VAAPI HEVC) +17:47:17.948: - obs_x264 (x264) +17:47:17.948: Audio Encoders: +17:47:17.948: - ffmpeg_aac (FFmpeg AAC) +17:47:17.948: - ffmpeg_opus (FFmpeg Opus) +17:47:17.948: - ffmpeg_pcm_s16le (FFmpeg PCM (16-bit)) +17:47:17.948: - ffmpeg_pcm_s24le (FFmpeg PCM (24-bit)) +17:47:17.948: - ffmpeg_pcm_f32le (FFmpeg PCM (32-bit float)) +17:47:17.948: - ffmpeg_alac (FFmpeg ALAC (24-bit)) +17:47:17.948: - ffmpeg_flac (FFmpeg FLAC (16-bit)) +17:47:17.948: - libfdk_aac (libfdk AAC) +17:47:17.948: ==== Startup complete =============================================== +17:47:17.952: No scene file found, creating default scene +17:47:17.966: All scene data cleared +17:47:17.966: ------------------------------------------------ +17:47:17.975: pulse-input: Server name: 'PulseAudio (on PipeWire 1.4.6) 15.0.0' +17:47:17.975: pulse-input: Audio format: s16le, 48000 Hz, 2 channels +17:47:17.975: pulse-input: Started recording from 'alsa_output.usb-Logitech_G533_Gaming_Headset-00.analog-stereo.monitor' (default) +17:47:17.976: pulse-input: Server name: 'PulseAudio (on PipeWire 1.4.6) 15.0.0' +17:47:17.976: pulse-input: Audio format: s16le, 32000 Hz, 2 channels +17:47:17.976: pulse-input: Started recording from 'alsa_input.usb-046d_HD_Pro_Webcam_C920_DF3BF5AF-02.analog-stereo' (default) +17:47:17.976: Switched to scene 'Scene' +17:47:17.976: Created scene collection 'Untitled' (clean, Untitled.json) +17:47:17.976: ------------------------------------------------ +17:47:18.210: [rtmp-services plugin] Successfully updated file 'services.json' (version 273) +17:47:18.210: [rtmp-services plugin] Successfully updated package (version 273) +17:47:18.520: adding 21 milliseconds of audio buffering, total audio buffering is now 21 milliseconds (source: Desktop Audio) +17:47:18.520: +17:47:46.852: Settings changed (outputs) +17:47:46.852: ------------------------------------------------ +17:47:51.014: Creating a popup with a parent, QWidgetWindow(0x268adb30, name="OBSBasicWindow") which does not match the current topmost grabbing popup, QWidgetWindow(0x29646190, name="QMenuClassWindow") With some shell surface protocols, this is not allowed. The wayland QPA plugin is currently handling it by setting the parent to the topmost grabbing popup. Note, however, that this may cause positioning errors and popups closing unxpectedly. Please fix the transient parent of the popup. +17:47:57.425: virtual void QtWaylandClient::QWaylandTextInputv3::disableSurface(wl_surface*) Try to disable surface 0x294c40d0 with focusing surface 0x2a3c3580 +17:48:01.146: PipeWire initialized +17:48:01.148: User added source 'Monitor' (pipewire-screen-capture-source) to scene 'Scene' +17:48:01.150: virtual void QtWaylandClient::QWaylandTextInputv3::disableSurface(wl_surface*) Try to disable surface 0x294c40d0 with focusing surface 0x2a3c3580 +17:48:01.161: [pipewire] Screencast session created +17:48:01.165: virtual void QtWaylandClient::QWaylandTextInputv3::disableSurface(wl_surface*) Try to disable surface 0x29034b80 with focusing surface 0x294c40d0 +17:48:02.821: [pipewire] Asking for monitor and window +17:48:02.831: [pipewire] source selected, setting up screencast +17:48:02.838: [pipewire] Server version: 1.4.6 +17:48:02.838: [pipewire] Library version: 1.4.6 +17:48:02.838: [pipewire] Header version: 1.4.6 +17:48:02.838: [pipewire] Created stream 0x297415a0 +17:48:02.838: [pipewire] Stream 0x297415a0 state: "connecting" (error: none) +17:48:02.838: [pipewire] Playing stream 0x297415a0 +17:48:02.839: [pipewire] Stream 0x297415a0 state: "paused" (error: none) +17:48:02.913: [pipewire] Negotiated format: +17:48:02.913: [pipewire] Format: 8 (Spa:Enum:VideoFormat:BGRx) +17:48:02.913: [pipewire] Modifier: 0x0 +17:48:02.913: [pipewire] Size: 2560x1440 +17:48:02.913: [pipewire] Framerate: 0/1 +17:48:02.916: [pipewire] Negotiated format: +17:48:02.916: [pipewire] Format: 8 (Spa:Enum:VideoFormat:BGRx) +17:48:02.916: [pipewire] Modifier: 0x300000000e08014 +17:48:02.916: [pipewire] Size: 2560x1440 +17:48:02.916: [pipewire] Framerate: 0/1 +17:48:02.917: [pipewire] Stream 0x297415a0 state: "streaming" (error: none) +17:48:03.132: virtual void QtWaylandClient::QWaylandTextInputv3::disableSurface(wl_surface*) Try to disable surface 0x29034b80 with focusing surface 0x294c40d0 +17:50:00.763: Creating a popup with a parent, QWidgetWindow(0x268adb30, name="OBSBasicWindow") which does not match the current topmost grabbing popup, QWidgetWindow(0x29c01180, name="QMenuClassWindow") With some shell surface protocols, this is not allowed. The wayland QPA plugin is currently handling it by setting the parent to the topmost grabbing popup. Note, however, that this may cause positioning errors and popups closing unxpectedly. Please fix the transient parent of the popup. +17:50:05.313: Creating a popup with a parent, QWidgetWindow(0x268adb30, name="OBSBasicWindow") which does not match the current topmost grabbing popup, QWidgetWindow(0x29c01180, name="QMenuClassWindow") With some shell surface protocols, this is not allowed. The wayland QPA plugin is currently handling it by setting the parent to the topmost grabbing popup. Note, however, that this may cause positioning errors and popups closing unxpectedly. Please fix the transient parent of the popup. +17:50:07.779: --------------------------------- +17:50:07.779: video settings reset: +17:50:07.779: base resolution: 2560x1440 +17:50:07.779: output resolution: 2560x1440 +17:50:07.779: downscale filter: Bicubic +17:50:07.779: fps: 30/1 +17:50:07.779: format: NV12 +17:50:07.779: YUV mode: Rec. 709/Partial +17:50:07.779: NV12 texture support enabled +17:50:07.779: P010 texture support not available +17:50:22.153: virtual void QtWaylandClient::QWaylandTextInputv3::disableSurface(wl_surface*) Try to disable surface 0x294c40d0 with focusing surface 0x2956bcb0 +17:54:04.766: Settings changed (outputs) +17:54:04.766: ------------------------------------------------ +17:54:22.825: --------------------------------- +17:54:22.825: video settings reset: +17:54:22.825: base resolution: 2560x1440 +17:54:22.825: output resolution: 2560x1440 +17:54:22.825: downscale filter: Bicubic +17:54:22.825: fps: 120/1 +17:54:22.825: format: NV12 +17:54:22.825: YUV mode: Rec. 709/Partial +17:54:22.825: NV12 texture support enabled +17:54:22.825: P010 texture support not available +17:54:22.826: Settings changed (video) +17:54:22.826: ------------------------------------------------ +17:54:41.864: --------------------------------- +17:54:41.864: video settings reset: +17:54:41.864: base resolution: 2560x1440 +17:54:41.864: output resolution: 2560x1440 +17:54:41.864: downscale filter: Bicubic +17:54:41.864: fps: 120/1 +17:54:41.864: format: NV12 +17:54:41.864: YUV mode: Rec. 709/Partial +17:54:41.864: NV12 texture support enabled +17:54:41.864: P010 texture support not available +17:54:41.865: Settings changed (advanced) +17:54:41.865: ------------------------------------------------ +17:55:55.693: Settings changed (audio, hotkeys) +17:55:55.693: ------------------------------------------------ +17:55:55.698: pulse-input: Stopped recording from 'alsa_input.usb-046d_HD_Pro_Webcam_C920_DF3BF5AF-02.analog-stereo' +17:55:55.698: pulse-input: Got 20703 packets with 16562400 frames +17:59:05.529: ==== Shutting down ================================================== +17:59:05.533: pulse-input: Stopped recording from 'alsa_output.usb-Logitech_G533_Gaming_Headset-00.analog-stereo.monitor' +17:59:05.533: pulse-input: Got 28301 packets with 33961200 frames +17:59:05.533: [pipewire] Stream 0x297415a0 state: "paused" (error: none) +17:59:05.533: [pipewire] Stream 0x297415a0 state: "unconnected" (error: none) +17:59:05.572: All scene data cleared +17:59:05.572: ------------------------------------------------ +17:59:05.642: [obs-websocket] [obs_module_unload] Shutting down... +17:59:05.642: Tried to call obs_frontend_remove_event_callback with no callbacks! +17:59:05.642: [obs-websocket] [obs_module_unload] Finished shutting down. +17:59:05.653: [Scripting] Total detached callbacks: 0 +17:59:05.653: Freeing OBS context data +17:59:05.680: == Profiler Results ============================= +17:59:05.680: run_program_init: 2655.13 ms +17:59:05.680: ┣OBSApp::AppInit: 13.538 ms +17:59:05.680: ┃ ┗OBSApp::InitLocale: 0.638 ms +17:59:05.680: ┗OBSApp::OBSInit: 2470.83 ms +17:59:05.680: ┣obs_startup: 1.955 ms +17:59:05.680: ┗OBSBasic::OBSInit: 2411.83 ms +17:59:05.680: ┣OBSBasic::InitBasicConfig: 1.119 ms +17:59:05.680: ┣OBSBasic::ResetAudio: 0.222 ms +17:59:05.680: ┣OBSBasic::ResetVideo: 129.754 ms +17:59:05.680: ┃ ┗obs_init_graphics: 129.307 ms +17:59:05.680: ┃ ┗shader compilation: 20.009 ms +17:59:05.680: ┣OBSBasic::InitOBSCallbacks: 0.003 ms +17:59:05.680: ┣OBSBasic::InitHotkeys: 0.013 ms +17:59:05.680: ┣obs_load_all_modules2: 2013.73 ms +17:59:05.680: ┃ ┣obs_init_module(decklink-captions.so): 0 ms +17:59:05.680: ┃ ┣obs_init_module(decklink-output-ui.so): 0 ms +17:59:05.680: ┃ ┣obs_init_module(decklink.so): 0.108 ms +17:59:05.680: ┃ ┣obs_init_module(frontend-tools.so): 83.643 ms +17:59:05.680: ┃ ┣obs_init_module(image-source.so): 0.022 ms +17:59:05.680: ┃ ┣obs_init_module(linux-alsa.so): 0.004 ms +17:59:05.680: ┃ ┣obs_init_module(linux-capture.so): 0 ms +17:59:05.680: ┃ ┣obs_init_module(linux-jack.so): 0.008 ms +17:59:05.680: ┃ ┣obs_init_module(linux-pipewire.so): 3.737 ms +17:59:05.680: ┃ ┣obs_init_module(linux-pulseaudio.so): 0.01 ms +17:59:05.680: ┃ ┣obs_init_module(linux-v4l2.so): 3.844 ms +17:59:05.680: ┃ ┣obs_init_module(obs-browser.so): 0.217 ms +17:59:05.680: ┃ ┣obs_init_module(obs-ffmpeg.so): 882.956 ms +17:59:05.680: ┃ ┣obs_init_module(obs-filters.so): 0.033 ms +17:59:05.680: ┃ ┣obs_init_module(obs-libfdk.so): 0.002 ms +17:59:05.680: ┃ ┣obs_init_module(obs-nvenc.so): 2.09 ms +17:59:05.680: ┃ ┃ ┗nvenc_check: 2.073 ms +17:59:05.680: ┃ ┣obs_init_module(obs-outputs.so): 0.008 ms +17:59:05.680: ┃ ┣obs_init_module(obs-qsv11.so): 716.546 ms +17:59:05.680: ┃ ┣obs_init_module(obs-transitions.so): 0.008 ms +17:59:05.680: ┃ ┣obs_init_module(obs-vst.so): 0.003 ms +17:59:05.680: ┃ ┣obs_init_module(obs-webrtc.so): 0.006 ms +17:59:05.680: ┃ ┣obs_init_module(obs-websocket.so): 5.22 ms +17:59:05.680: ┃ ┣obs_init_module(obs-x264.so): 0.005 ms +17:59:05.680: ┃ ┣obs_init_module(rtmp-services.so): 0.118 ms +17:59:05.680: ┃ ┣obs_init_module(text-freetype2.so): 0.038 ms +17:59:05.680: ┃ ┗obs_init_module(vlc-video.so): 1.242 ms +17:59:05.680: ┣OBSBasic::InitService: 1.551 ms +17:59:05.680: ┣OBSBasic::ResetOutputs: 0.19 ms +17:59:05.680: ┣OBSBasic::CreateHotkeys: 0.02 ms +17:59:05.680: ┣OBSBasic::InitPrimitives: 0.172 ms +17:59:05.680: ┗OBSBasic::Load: 24.827 ms +17:59:05.680: obs_hotkey_thread(25 ms): min=0 ms, median=0 ms, max=0.069 ms, 99th percentile=0.001 ms, 100% below 25 ms +17:59:05.680: audio_thread(Audio): min=0.009 ms, median=0.02 ms, max=3.479 ms, 99th percentile=0.075 ms +17:59:05.680: obs_graphics_thread(33.3333 ms): min=0.099 ms, median=0.83 ms, max=697.9 ms, 99th percentile=2.29 ms, 99.9027% below 33.333 ms +17:59:05.680: ┣tick_sources: min=0 ms, median=0.006 ms, max=38.325 ms, 99th percentile=0.019 ms +17:59:05.680: ┣output_frame: min=0.053 ms, median=0.182 ms, max=4.12 ms, 99th percentile=0.496 ms +17:59:05.680: ┃ ┗gs_context(video->graphics): min=0.053 ms, median=0.181 ms, max=4.114 ms, 99th percentile=0.496 ms +17:59:05.680: ┃ ┣render_video: min=0.023 ms, median=0.131 ms, max=1.882 ms, 99th percentile=0.235 ms +17:59:05.680: ┃ ┃ ┗render_main_texture: min=0.018 ms, median=0.123 ms, max=1.872 ms, 99th percentile=0.222 ms +17:59:05.680: ┃ ┗gs_flush: min=0.004 ms, median=0.009 ms, max=1.469 ms, 99th percentile=0.019 ms +17:59:05.680: ┗render_displays: min=0.022 ms, median=0.565 ms, max=35.208 ms, 99th percentile=1.946 ms +17:59:05.680: OBSBasicSettings::LoadThemeList: min=0.029 ms, median=0.029 ms, max=0.058 ms, 99th percentile=0.058 ms +17:59:05.680: OBSBasic::ResetOutputs: min=0.198 ms, median=0.254 ms, max=278.013 ms, 99th percentile=278.013 ms +17:59:05.680: obs_graphics_thread(33.3333 ms): min=0.546 ms, median=0.816 ms, max=54.169 ms, 99th percentile=2.334 ms, 99.9869% below 33.333 ms +17:59:05.680: ┣tick_sources: min=0.003 ms, median=0.006 ms, max=0.04 ms, 99th percentile=0.021 ms +17:59:05.680: ┣output_frame: min=0.083 ms, median=0.189 ms, max=10.503 ms, 99th percentile=0.571 ms +17:59:05.680: ┃ ┗gs_context(video->graphics): min=0.083 ms, median=0.189 ms, max=10.503 ms, 99th percentile=0.57 ms +17:59:05.680: ┃ ┣render_video: min=0.047 ms, median=0.137 ms, max=10.444 ms, 99th percentile=0.276 ms +17:59:05.680: ┃ ┃ ┗render_main_texture: min=0.04 ms, median=0.128 ms, max=10.433 ms, 99th percentile=0.26 ms +17:59:05.680: ┃ ┗gs_flush: min=0.005 ms, median=0.009 ms, max=1.304 ms, 99th percentile=0.019 ms +17:59:05.680: ┗render_displays: min=0.368 ms, median=0.534 ms, max=21.406 ms, 99th percentile=1.985 ms +17:59:05.680: OBSBasic::ResetVideo: min=20.215 ms, median=25.586 ms, max=90.222 ms, 99th percentile=90.222 ms +17:59:05.680: obs_graphics_thread(8.33333 ms): min=0.512 ms, median=0.733 ms, max=34.884 ms, 99th percentile=2.022 ms, 99.9561% below 8.333 ms +17:59:05.680: ┣tick_sources: min=0.002 ms, median=0.003 ms, max=0.032 ms, 99th percentile=0.004 ms +17:59:05.680: ┣output_frame: min=0.071 ms, median=0.165 ms, max=1.273 ms, 99th percentile=0.247 ms +17:59:05.680: ┃ ┗gs_context(video->graphics): min=0.071 ms, median=0.165 ms, max=1.273 ms, 99th percentile=0.247 ms +17:59:05.680: ┃ ┣render_video: min=0.038 ms, median=0.114 ms, max=0.299 ms, 99th percentile=0.17 ms +17:59:05.680: ┃ ┃ ┗render_main_texture: min=0.033 ms, median=0.106 ms, max=0.29 ms, 99th percentile=0.159 ms +17:59:05.680: ┃ ┗gs_flush: min=0.004 ms, median=0.008 ms, max=1.125 ms, 99th percentile=0.017 ms +17:59:05.680: ┗render_displays: min=0.355 ms, median=0.492 ms, max=2.827 ms, 99th percentile=1.732 ms +17:59:05.680: obs_graphics_thread(8.33333 ms): min=0.15 ms, median=0.73 ms, max=54.091 ms, 99th percentile=1.95 ms, 99.9905% below 8.333 ms +17:59:05.680: ┣tick_sources: min=0.001 ms, median=0.003 ms, max=0.079 ms, 99th percentile=0.006 ms +17:59:05.680: ┣output_frame: min=0.063 ms, median=0.164 ms, max=1.908 ms, 99th percentile=0.26 ms +17:59:05.680: ┃ ┗gs_context(video->graphics): min=0.062 ms, median=0.164 ms, max=1.907 ms, 99th percentile=0.259 ms +17:59:05.680: ┃ ┣render_video: min=0.025 ms, median=0.112 ms, max=0.497 ms, 99th percentile=0.173 ms +17:59:05.680: ┃ ┃ ┗render_main_texture: min=0.019 ms, median=0.104 ms, max=0.488 ms, 99th percentile=0.161 ms +17:59:05.680: ┃ ┗gs_flush: min=0.004 ms, median=0.008 ms, max=1.708 ms, 99th percentile=0.022 ms +17:59:05.680: ┗render_displays: min=0.022 ms, median=0.493 ms, max=4.673 ms, 99th percentile=1.656 ms +17:59:05.680: ================================================= +17:59:05.680: == Profiler Time Between Calls ================== +17:59:05.680: obs_hotkey_thread(25 ms): min=25.01 ms, median=25.061 ms, max=28.665 ms, 99.9612% within ±2% of 25 ms (0% lower, 0.0388336% higher) +17:59:05.680: obs_graphics_thread(33.3333 ms): min=2.087 ms, median=33.333 ms, max=697.908 ms, 99.7469% within ±2% of 33.333 ms (0.116822% lower, 0.136293% higher) +17:59:05.680: obs_graphics_thread(33.3333 ms): min=12.541 ms, median=33.333 ms, max=54.173 ms, 99.9739% within ±2% of 33.333 ms (0.0130719% lower, 0.0130719% higher) +17:59:05.680: obs_graphics_thread(8.33333 ms): min=6.829 ms, median=8.333 ms, max=34.887 ms, 99.9122% within ±2% of 8.333 ms (0.0438789% lower, 0.0438789% higher) +17:59:05.680: obs_graphics_thread(8.33333 ms): min=4.29 ms, median=8.333 ms, max=54.093 ms, 99.9147% within ±2% of 8.333 ms (0.0410872% lower, 0.0442478% higher) +17:59:05.680: ================================================= +17:59:05.693: Number of memory leaks: 0 diff --git a/modules/home/common/obs-config/logs/2025-08-29 17-59-05.txt b/modules/home/common/obs-config/logs/2025-08-29 17-59-05.txt new file mode 100644 index 0000000..ef0a091 --- /dev/null +++ b/modules/home/common/obs-config/logs/2025-08-29 17-59-05.txt @@ -0,0 +1,222 @@ +17:59:05.916: Platform: Wayland +17:59:05.916: CPU Name: AMD Ryzen 7 5800X3D 8-Core Processor +17:59:05.916: CPU Speed: 4448.122MHz +17:59:05.916: Physical Cores: 8, Logical Cores: 16 +17:59:05.916: Physical Memory: 32001MB Total, 21573MB Free +17:59:05.916: Kernel Version: Linux 6.12.41 +17:59:05.916: Distribution: NixOS "25.11" +17:59:05.916: Desktop Environment: Hyprland (Hyprland) +17:59:05.917: Session Type: wayland +17:59:05.919: Current Date/Time: 2025-08-29, 05:59:05 PM +17:59:05.919: Browser Hardware Acceleration: false +17:59:05.919: Qt Version: 6.9.1 (runtime), 6.9.1 (compiled) +17:59:05.919: Portable mode: false +17:59:05.975: OBS 31.1.2 (linux) +17:59:05.975: --------------------------------- +17:59:05.976: --------------------------------- +17:59:05.976: audio settings reset: +17:59:05.976: samples per sec: 48000 +17:59:05.976: speakers: 2 +17:59:05.976: max buffering: 960 milliseconds +17:59:05.976: buffering type: dynamically increasing +17:59:05.977: --------------------------------- +17:59:05.977: Initializing OpenGL... +17:59:05.977: Using EGL/Wayland +17:59:06.022: Initialized EGL 1.5 +17:59:06.093: Loading up OpenGL on adapter NVIDIA Corporation NVIDIA GeForce RTX 4080/PCIe/SSE2 +17:59:06.093: OpenGL loaded successfully, version 3.3.0 NVIDIA 570.172.08, shading language 3.30 NVIDIA via Cg compiler +17:59:06.113: --------------------------------- +17:59:06.113: video settings reset: +17:59:06.113: base resolution: 2560x1440 +17:59:06.113: output resolution: 2560x1440 +17:59:06.113: downscale filter: Bicubic +17:59:06.113: fps: 120/1 +17:59:06.113: format: NV12 +17:59:06.113: YUV mode: Rec. 709/Partial +17:59:06.113: NV12 texture support enabled +17:59:06.113: P010 texture support not available +17:59:06.113: Audio monitoring device: +17:59:06.113: name: Default +17:59:06.113: id: default +17:59:06.147: --------------------------------- +17:59:06.155: Failed to load 'en-US' text for module: 'decklink-captions.so' +17:59:06.163: Failed to load 'en-US' text for module: 'decklink-output-ui.so' +17:59:06.169: A DeckLink iterator could not be created. The DeckLink drivers may not be installed +17:59:06.169: Failed to initialize module 'decklink.so' +17:59:06.384: [pipewire] Available capture sources: +17:59:06.384: [pipewire] - Monitor source +17:59:06.384: [pipewire] - Window source +17:59:06.402: v4l2loopback not installed, virtual camera not registered +17:59:06.411: [obs-browser]: Version 2.25.3 +17:59:06.411: [obs-browser]: CEF Version 138.0.7204.97 (runtime), 138.0.17+gac9b751+chromium-138.0.7204.97 (compiled) +17:59:06.710: VAAPI: API version 1.22 +17:59:06.773: FFmpeg VAAPI H264 encoding supported +17:59:07.023: FFmpeg VAAPI AV1 encoding supported +17:59:07.258: FFmpeg VAAPI HEVC encoding supported +17:59:07.291: [NVENC] Test process failed: nvenc_lib +17:59:07.291: NVENC not supported +17:59:07.291: Failed to initialize module 'obs-nvenc.so' +17:59:08.070: [obs-websocket] [obs_module_load] you can haz websockets (Version: 5.6.2 | RPC Version: 1) +17:59:08.070: [obs-websocket] [obs_module_load] Qt version (compile-time): 6.9.1 | Qt version (run-time): 6.9.1 +17:59:08.070: [obs-websocket] [obs_module_load] Linked ASIO Version: 102400 +17:59:08.070: DEPRECATION: obs_frontend_get_global_config is deprecated. Read from global or user configuration explicitly instead. +17:59:08.076: [obs-websocket] [obs_module_load] Module loaded. +17:59:08.108: [vlc-video]: VLC 3.0.21 Vetinari found, VLC video source enabled +17:59:08.108: --------------------------------- +17:59:08.108: Loaded Modules: +17:59:08.108: vlc-video.so +17:59:08.108: text-freetype2.so +17:59:08.108: rtmp-services.so +17:59:08.108: obs-x264.so +17:59:08.108: obs-websocket.so +17:59:08.108: obs-webrtc.so +17:59:08.108: obs-vst.so +17:59:08.108: obs-transitions.so +17:59:08.108: obs-qsv11.so +17:59:08.108: obs-outputs.so +17:59:08.108: obs-libfdk.so +17:59:08.108: obs-filters.so +17:59:08.108: obs-ffmpeg.so +17:59:08.108: obs-browser.so +17:59:08.108: linux-v4l2.so +17:59:08.108: linux-pulseaudio.so +17:59:08.108: linux-pipewire.so +17:59:08.108: linux-jack.so +17:59:08.108: linux-capture.so +17:59:08.108: linux-alsa.so +17:59:08.108: image-source.so +17:59:08.108: frontend-tools.so +17:59:08.108: decklink-output-ui.so +17:59:08.108: decklink-captions.so +17:59:08.108: --------------------------------- +17:59:08.108: --------------------------------- +17:59:08.108: Available Encoders: +17:59:08.108: Video Encoders: +17:59:08.108: - ffmpeg_svt_av1 (SVT-AV1) +17:59:08.108: - ffmpeg_aom_av1 (AOM AV1) +17:59:08.108: - ffmpeg_vaapi_tex (FFmpeg VAAPI H.264) +17:59:08.108: - av1_ffmpeg_vaapi_tex (FFmpeg VAAPI AV1) +17:59:08.108: - hevc_ffmpeg_vaapi_tex (FFmpeg VAAPI HEVC) +17:59:08.108: - obs_x264 (x264) +17:59:08.108: Audio Encoders: +17:59:08.108: - ffmpeg_aac (FFmpeg AAC) +17:59:08.108: - ffmpeg_opus (FFmpeg Opus) +17:59:08.108: - ffmpeg_pcm_s16le (FFmpeg PCM (16-bit)) +17:59:08.108: - ffmpeg_pcm_s24le (FFmpeg PCM (24-bit)) +17:59:08.108: - ffmpeg_pcm_f32le (FFmpeg PCM (32-bit float)) +17:59:08.108: - ffmpeg_alac (FFmpeg ALAC (24-bit)) +17:59:08.108: - ffmpeg_flac (FFmpeg FLAC (16-bit)) +17:59:08.108: - libfdk_aac (libfdk AAC) +17:59:08.108: ==== Startup complete =============================================== +17:59:08.367: All scene data cleared +17:59:08.367: ------------------------------------------------ +17:59:08.371: pulse-input: Server name: 'PulseAudio (on PipeWire 1.4.6) 15.0.0' +17:59:08.372: pulse-input: Audio format: s16le, 48000 Hz, 2 channels +17:59:08.372: pulse-input: Started recording from 'alsa_output.usb-Logitech_G533_Gaming_Headset-00.analog-stereo.monitor' +17:59:08.372: [Loaded global audio device]: 'Desktop Audio' +17:59:08.372: PipeWire initialized +17:59:08.373: Switched to scene 'Scene' +17:59:08.373: ------------------------------------------------ +17:59:08.373: Loaded scenes: +17:59:08.373: - scene 'Scene': +17:59:08.373: - source: 'Monitor' (pipewire-screen-capture-source) +17:59:08.373: ------------------------------------------------ +17:59:08.582: [pipewire] Screencast session created +17:59:08.920: adding 21 milliseconds of audio buffering, total audio buffering is now 21 milliseconds (source: Desktop Audio) +17:59:08.920: +17:59:10.090: [pipewire] Asking for monitor and window +17:59:10.091: [pipewire] source selected, setting up screencast +17:59:10.097: [pipewire] Server version: 1.4.6 +17:59:10.097: [pipewire] Library version: 1.4.6 +17:59:10.097: [pipewire] Header version: 1.4.6 +17:59:10.098: [pipewire] Created stream 0x11cacf30 +17:59:10.098: [pipewire] Stream 0x11cacf30 state: "connecting" (error: none) +17:59:10.099: [pipewire] Playing stream 0x11cacf30 +17:59:10.100: [pipewire] Stream 0x11cacf30 state: "paused" (error: none) +17:59:10.148: [pipewire] Negotiated format: +17:59:10.148: [pipewire] Format: 8 (Spa:Enum:VideoFormat:BGRx) +17:59:10.148: [pipewire] Modifier: 0x0 +17:59:10.148: [pipewire] Size: 2560x1440 +17:59:10.148: [pipewire] Framerate: 0/1 +17:59:10.149: [pipewire] Negotiated format: +17:59:10.149: [pipewire] Format: 8 (Spa:Enum:VideoFormat:BGRx) +17:59:10.149: [pipewire] Modifier: 0x300000000e08014 +17:59:10.149: [pipewire] Size: 2560x1440 +17:59:10.149: [pipewire] Framerate: 0/1 +17:59:10.150: [pipewire] Stream 0x11cacf30 state: "streaming" (error: none) +17:59:47.270: ==== Shutting down ================================================== +17:59:47.325: [pipewire] Stream 0x11cacf30 state: "paused" (error: none) +17:59:47.325: pulse-input: Stopped recording from 'alsa_output.usb-Logitech_G533_Gaming_Headset-00.analog-stereo.monitor' +17:59:47.325: pulse-input: Got 1557 packets with 1868400 frames +17:59:47.326: [pipewire] Stream 0x11cacf30 state: "unconnected" (error: none) +17:59:47.346: All scene data cleared +17:59:47.346: ------------------------------------------------ +17:59:47.409: [obs-websocket] [obs_module_unload] Shutting down... +17:59:47.409: Tried to call obs_frontend_remove_event_callback with no callbacks! +17:59:47.409: [obs-websocket] [obs_module_unload] Finished shutting down. +17:59:47.416: [Scripting] Total detached callbacks: 0 +17:59:47.417: Freeing OBS context data +17:59:47.440: == Profiler Results ============================= +17:59:47.440: run_program_init: 2850.38 ms +17:59:47.440: ┣OBSApp::AppInit: 13.205 ms +17:59:47.440: ┃ ┗OBSApp::InitLocale: 0.802 ms +17:59:47.440: ┗OBSApp::OBSInit: 2661.93 ms +17:59:47.440: ┣obs_startup: 2.532 ms +17:59:47.440: ┗OBSBasic::OBSInit: 2602.82 ms +17:59:47.440: ┣OBSBasic::InitBasicConfig: 0.987 ms +17:59:47.440: ┣OBSBasic::ResetAudio: 0.243 ms +17:59:47.440: ┣OBSBasic::ResetVideo: 136.911 ms +17:59:47.440: ┃ ┗obs_init_graphics: 136.436 ms +17:59:47.440: ┃ ┗shader compilation: 19.259 ms +17:59:47.440: ┣OBSBasic::InitOBSCallbacks: 0.003 ms +17:59:47.440: ┣OBSBasic::InitHotkeys: 0.012 ms +17:59:47.440: ┣obs_load_all_modules2: 1960.56 ms +17:59:47.440: ┃ ┣obs_init_module(decklink-captions.so): 0 ms +17:59:47.440: ┃ ┣obs_init_module(decklink-output-ui.so): 0 ms +17:59:47.440: ┃ ┣obs_init_module(decklink.so): 0.088 ms +17:59:47.440: ┃ ┣obs_init_module(frontend-tools.so): 85.437 ms +17:59:47.440: ┃ ┣obs_init_module(image-source.so): 0.012 ms +17:59:47.440: ┃ ┣obs_init_module(linux-alsa.so): 0.005 ms +17:59:47.440: ┃ ┣obs_init_module(linux-capture.so): 0 ms +17:59:47.440: ┃ ┣obs_init_module(linux-jack.so): 0.007 ms +17:59:47.440: ┃ ┣obs_init_module(linux-pipewire.so): 3.412 ms +17:59:47.440: ┃ ┣obs_init_module(linux-pulseaudio.so): 0.011 ms +17:59:47.440: ┃ ┣obs_init_module(linux-v4l2.so): 3.638 ms +17:59:47.440: ┃ ┣obs_init_module(obs-browser.so): 0.064 ms +17:59:47.440: ┃ ┣obs_init_module(obs-ffmpeg.so): 833.156 ms +17:59:47.440: ┃ ┣obs_init_module(obs-filters.so): 0.029 ms +17:59:47.440: ┃ ┣obs_init_module(obs-libfdk.so): 0.002 ms +17:59:47.440: ┃ ┣obs_init_module(obs-nvenc.so): 2.169 ms +17:59:47.440: ┃ ┃ ┗nvenc_check: 2.145 ms +17:59:47.440: ┃ ┣obs_init_module(obs-outputs.so): 0.007 ms +17:59:47.440: ┃ ┣obs_init_module(obs-qsv11.so): 705.891 ms +17:59:47.440: ┃ ┣obs_init_module(obs-transitions.so): 0.009 ms +17:59:47.440: ┃ ┣obs_init_module(obs-vst.so): 0.006 ms +17:59:47.440: ┃ ┣obs_init_module(obs-webrtc.so): 0.006 ms +17:59:47.440: ┃ ┣obs_init_module(obs-websocket.so): 6.142 ms +17:59:47.440: ┃ ┣obs_init_module(obs-x264.so): 0.005 ms +17:59:47.440: ┃ ┣obs_init_module(rtmp-services.so): 0.613 ms +17:59:47.440: ┃ ┣obs_init_module(text-freetype2.so): 0.013 ms +17:59:47.440: ┃ ┗obs_init_module(vlc-video.so): 1.117 ms +17:59:47.440: ┣OBSBasic::InitService: 1.325 ms +17:59:47.440: ┣OBSBasic::ResetOutputs: 239.583 ms +17:59:47.440: ┣OBSBasic::CreateHotkeys: 0.059 ms +17:59:47.440: ┣OBSBasic::InitPrimitives: 0.196 ms +17:59:47.440: ┗OBSBasic::Load: 22.142 ms +17:59:47.440: obs_hotkey_thread(25 ms): min=0 ms, median=0 ms, max=0.013 ms, 99th percentile=0.002 ms, 100% below 25 ms +17:59:47.440: audio_thread(Audio): min=0.008 ms, median=0.015 ms, max=1.351 ms, 99th percentile=0.082 ms +17:59:47.440: obs_graphics_thread(8.33333 ms): min=0.126 ms, median=0.683 ms, max=704.528 ms, 99th percentile=3.325 ms, 99.6501% below 8.333 ms +17:59:47.440: ┣tick_sources: min=0 ms, median=0.003 ms, max=0.047 ms, 99th percentile=0.004 ms +17:59:47.440: ┣output_frame: min=0.05 ms, median=0.158 ms, max=11.591 ms, 99th percentile=0.811 ms +17:59:47.440: ┃ ┗gs_context(video->graphics): min=0.05 ms, median=0.158 ms, max=11.591 ms, 99th percentile=0.81 ms +17:59:47.440: ┃ ┣render_video: min=0.021 ms, median=0.108 ms, max=11.541 ms, 99th percentile=0.489 ms +17:59:47.440: ┃ ┃ ┗render_main_texture: min=0.017 ms, median=0.1 ms, max=11.533 ms, 99th percentile=0.481 ms +17:59:47.440: ┃ ┗gs_flush: min=0.004 ms, median=0.008 ms, max=1.229 ms, 99th percentile=0.017 ms +17:59:47.440: ┗render_displays: min=0.021 ms, median=0.452 ms, max=35.008 ms, 99th percentile=2.597 ms +17:59:47.440: OBSBasicSettings::LoadThemeList: 0.037 ms +17:59:47.441: ================================================= +17:59:47.441: == Profiler Time Between Calls ================== +17:59:47.441: obs_hotkey_thread(25 ms): min=25.014 ms, median=25.06 ms, max=27.922 ms, 99.8186% within ±2% of 25 ms (0% lower, 0.181378% higher) +17:59:47.441: obs_graphics_thread(8.33333 ms): min=0.619 ms, median=8.333 ms, max=704.545 ms, 99.0943% within ±2% of 8.333 ms (0.49403% lower, 0.411692% higher) +17:59:47.441: ================================================= +17:59:47.443: Number of memory leaks: 0 diff --git a/modules/home/common/obs-config/plugin_config/obs-websocket/config.json b/modules/home/common/obs-config/plugin_config/obs-websocket/config.json new file mode 100644 index 0000000..077beb6 --- /dev/null +++ b/modules/home/common/obs-config/plugin_config/obs-websocket/config.json @@ -0,0 +1,8 @@ +{ + "alerts_enabled": false, + "auth_required": true, + "first_load": false, + "server_enabled": false, + "server_password": "25OmQykBn6VRWASB", + "server_port": 4455 +} \ No newline at end of file diff --git a/modules/home/common/obs-config/plugin_config/rtmp-services/amazon_ivs_ingests.json b/modules/home/common/obs-config/plugin_config/rtmp-services/amazon_ivs_ingests.json new file mode 100644 index 0000000..71df89e --- /dev/null +++ b/modules/home/common/obs-config/plugin_config/rtmp-services/amazon_ivs_ingests.json @@ -0,0 +1,454 @@ +{ + "ingests": [ + { + "_id": 0, + "availability": 1.0, + "default": false, + "name": "Default", + "url_template": "rtmp://ingest.global-contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://ingest.global-contribute.live-video.net/app/{stream_key}", + "priority": 0 + }, + { + "_id": 1, + "availability": 1.0, + "default": false, + "name": "US East: Miami, FL (5)", + "url_template": "rtmp://mia05.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://mia05.contribute.live-video.net/app/{stream_key}", + "priority": 1 + }, + { + "_id": 2, + "availability": 1.0, + "default": false, + "name": "US East: Atlanta, GA", + "url_template": "rtmp://atl.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://atl.contribute.live-video.net/app/{stream_key}", + "priority": 2 + }, + { + "_id": 3, + "availability": 1.0, + "default": false, + "name": "US Central: Houston, TX (50)", + "url_template": "rtmp://iah50.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://iah50.contribute.live-video.net/app/{stream_key}", + "priority": 3 + }, + { + "_id": 4, + "availability": 1.0, + "default": false, + "name": "US East: Ashburn, VA (5)", + "url_template": "rtmp://iad05.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://iad05.contribute.live-video.net/app/{stream_key}", + "priority": 4 + }, + { + "_id": 5, + "availability": 1.0, + "default": false, + "name": "US Central: Garland, TX (56)", + "url_template": "rtmp://dfw56.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://dfw56.contribute.live-video.net/app/{stream_key}", + "priority": 5 + }, + { + "_id": 6, + "availability": 1.0, + "default": false, + "name": "US Central: Dallas, TX (2)", + "url_template": "rtmp://dfw02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://dfw02.contribute.live-video.net/app/{stream_key}", + "priority": 6 + }, + { + "_id": 7, + "availability": 1.0, + "default": false, + "name": "US East: McAllen, TX (1)", + "url_template": "rtmp://mfe01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://mfe01.contribute.live-video.net/app/{stream_key}", + "priority": 7 + }, + { + "_id": 8, + "availability": 1.0, + "default": false, + "name": "US East: New York, NY", + "url_template": "rtmp://jfk.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://jfk.contribute.live-video.net/app/{stream_key}", + "priority": 8 + }, + { + "_id": 9, + "availability": 1.0, + "default": false, + "name": "US East: Chicago, IL (56)", + "url_template": "rtmp://ord56.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://ord56.contribute.live-video.net/app/{stream_key}", + "priority": 9 + }, + { + "_id": 10, + "availability": 1.0, + "default": false, + "name": "US East: Chicago, IL (3)", + "url_template": "rtmp://ord03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://ord03.contribute.live-video.net/app/{stream_key}", + "priority": 10 + }, + { + "_id": 11, + "availability": 1.0, + "default": false, + "name": "NA: Canada, Toronto", + "url_template": "rtmp://yto.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://yto.contribute.live-video.net/app/{stream_key}", + "priority": 11 + }, + { + "_id": 12, + "availability": 1.0, + "default": false, + "name": "NA: Mexico, Queretaro (3)", + "url_template": "rtmp://qro03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://qro03.contribute.live-video.net/app/{stream_key}", + "priority": 12 + }, + { + "_id": 13, + "availability": 1.0, + "default": false, + "name": "NA: Canada, Quebec", + "url_template": "rtmp://ymq03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://ymq03.contribute.live-video.net/app/{stream_key}", + "priority": 13 + }, + { + "_id": 14, + "availability": 1.0, + "default": false, + "name": "US Central: Denver, CO (52)", + "url_template": "rtmp://den52.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://den52.contribute.live-video.net/app/{stream_key}", + "priority": 14 + }, + { + "_id": 15, + "availability": 1.0, + "default": false, + "name": "South America: Colombia, Bogota (1)", + "url_template": "rtmp://bog01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://bog01.contribute.live-video.net/app/{stream_key}", + "priority": 15 + }, + { + "_id": 16, + "availability": 1.0, + "default": false, + "name": "US West: Los Angeles, CA", + "url_template": "rtmp://lax.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://lax.contribute.live-video.net/app/{stream_key}", + "priority": 16 + }, + { + "_id": 17, + "availability": 1.0, + "default": false, + "name": "US West: San Jose, California (6)", + "url_template": "rtmp://sjc06.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://sjc06.contribute.live-video.net/app/{stream_key}", + "priority": 17 + }, + { + "_id": 18, + "availability": 1.0, + "default": false, + "name": "US West: Seattle, WA (2)", + "url_template": "rtmp://sea02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://sea02.contribute.live-video.net/app/{stream_key}", + "priority": 18 + }, + { + "_id": 19, + "availability": 1.0, + "default": false, + "name": "South America: Brazil, Sao Paulo (10)", + "url_template": "rtmp://sae10.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://sae10.contribute.live-video.net/app/{stream_key}", + "priority": 19 + }, + { + "_id": 20, + "availability": 1.0, + "default": false, + "name": "Europe: UK, London (8)", + "url_template": "rtmp://lhr08.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://lhr08.contribute.live-video.net/app/{stream_key}", + "priority": 20 + }, + { + "_id": 21, + "availability": 1.0, + "default": false, + "name": "Europe: UK, London (3)", + "url_template": "rtmp://lhr03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://lhr03.contribute.live-video.net/app/{stream_key}", + "priority": 21 + }, + { + "_id": 22, + "availability": 1.0, + "default": false, + "name": "Europe: Spain, Madrid (2)", + "url_template": "rtmp://mad02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://mad02.contribute.live-video.net/app/{stream_key}", + "priority": 22 + }, + { + "_id": 23, + "availability": 1.0, + "default": false, + "name": "Europe: Spain, Madrid (1)", + "url_template": "rtmp://mad01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://mad01.contribute.live-video.net/app/{stream_key}", + "priority": 23 + }, + { + "_id": 24, + "availability": 1.0, + "default": false, + "name": "Europe: France, Paris (2)", + "url_template": "rtmp://cdg02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://cdg02.contribute.live-video.net/app/{stream_key}", + "priority": 24 + }, + { + "_id": 25, + "availability": 1.0, + "default": false, + "name": "Europe: France, Paris (10)", + "url_template": "rtmp://cdg10.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://cdg10.contribute.live-video.net/app/{stream_key}", + "priority": 25 + }, + { + "_id": 26, + "availability": 1.0, + "default": false, + "name": "Europe: Netherlands, Amsterdam (3)", + "url_template": "rtmp://ams03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://ams03.contribute.live-video.net/app/{stream_key}", + "priority": 26 + }, + { + "_id": 27, + "availability": 1.0, + "default": false, + "name": "Europe: Netherlands, Amsterdam (2)", + "url_template": "rtmp://ams02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://ams02.contribute.live-video.net/app/{stream_key}", + "priority": 27 + }, + { + "_id": 28, + "availability": 1.0, + "default": false, + "name": "Europe: Norway, Oslo", + "url_template": "rtmp://osl.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://osl.contribute.live-video.net/app/{stream_key}", + "priority": 28 + }, + { + "_id": 29, + "availability": 1.0, + "default": false, + "name": "Europe: Germany, Dusseldorf (1)", + "url_template": "rtmp://dus01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://dus01.contribute.live-video.net/app/{stream_key}", + "priority": 29 + }, + { + "_id": 30, + "availability": 1.0, + "default": false, + "name": "Europe: Germany, Frankfurt (5)", + "url_template": "rtmp://fra05.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://fra05.contribute.live-video.net/app/{stream_key}", + "priority": 30 + }, + { + "_id": 31, + "availability": 1.0, + "default": false, + "name": "Europe: Germany, Frankfurt (2)", + "url_template": "rtmp://fra02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://fra02.contribute.live-video.net/app/{stream_key}", + "priority": 31 + }, + { + "_id": 32, + "availability": 1.0, + "default": false, + "name": "Europe: France, Marseille (2)", + "url_template": "rtmp://mrs02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://mrs02.contribute.live-video.net/app/{stream_key}", + "priority": 32 + }, + { + "_id": 33, + "availability": 1.0, + "default": false, + "name": "Europe: Denmark, Copenhagen", + "url_template": "rtmp://cph.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://cph.contribute.live-video.net/app/{stream_key}", + "priority": 33 + }, + { + "_id": 34, + "availability": 1.0, + "default": false, + "name": "Europe: Sweden, Stockholm (3)", + "url_template": "rtmp://arn03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://arn03.contribute.live-video.net/app/{stream_key}", + "priority": 34 + }, + { + "_id": 35, + "availability": 1.0, + "default": false, + "name": "Europe: Sweden, Stockholm (4)", + "url_template": "rtmp://arn04.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://arn04.contribute.live-video.net/app/{stream_key}", + "priority": 35 + }, + { + "_id": 36, + "availability": 1.0, + "default": false, + "name": "Europe: Italy, Milan (2)", + "url_template": "rtmp://mil02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://mil02.contribute.live-video.net/app/{stream_key}", + "priority": 36 + }, + { + "_id": 37, + "availability": 1.0, + "default": false, + "name": "Europe: Germany, Munich (1)", + "url_template": "rtmp://muc01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://muc01.contribute.live-video.net/app/{stream_key}", + "priority": 37 + }, + { + "_id": 38, + "availability": 1.0, + "default": false, + "name": "Europe: Finland, Helsinki (3)", + "url_template": "rtmp://hel03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://hel03.contribute.live-video.net/app/{stream_key}", + "priority": 38 + }, + { + "_id": 39, + "availability": 1.0, + "default": false, + "name": "Europe: Austria, Vienna (2)", + "url_template": "rtmp://vie02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://vie02.contribute.live-video.net/app/{stream_key}", + "priority": 39 + }, + { + "_id": 40, + "availability": 1.0, + "default": false, + "name": "Europe: Poland, Warsaw (2)", + "url_template": "rtmp://waw02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://waw02.contribute.live-video.net/app/{stream_key}", + "priority": 40 + }, + { + "_id": 41, + "availability": 1.0, + "default": false, + "name": "Asia: Japan, Narita (10)", + "url_template": "rtmp://apn10.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://apn10.contribute.live-video.net/app/{stream_key}", + "priority": 41 + }, + { + "_id": 42, + "availability": 1.0, + "default": false, + "name": "Asia: Japan, Osaka (1)", + "url_template": "rtmp://osa01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://osa01.contribute.live-video.net/app/{stream_key}", + "priority": 42 + }, + { + "_id": 43, + "availability": 1.0, + "default": false, + "name": "Asia: South Korea, Seoul (20)", + "url_template": "rtmp://apn20.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://apn20.contribute.live-video.net/app/{stream_key}", + "priority": 43 + }, + { + "_id": 44, + "availability": 1.0, + "default": false, + "name": "Asia: Taiwan, Taipei (1)", + "url_template": "rtmp://tpe01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://tpe01.contribute.live-video.net/app/{stream_key}", + "priority": 44 + }, + { + "_id": 45, + "availability": 1.0, + "default": false, + "name": "Asia: India, Mumbai (30)", + "url_template": "rtmp://aps30.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://aps30.contribute.live-video.net/app/{stream_key}", + "priority": 45 + }, + { + "_id": 46, + "availability": 1.0, + "default": false, + "name": "Asia: China, Hong Kong (6)", + "url_template": "rtmp://hkg06.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://hkg06.contribute.live-video.net/app/{stream_key}", + "priority": 46 + }, + { + "_id": 47, + "availability": 1.0, + "default": false, + "name": "Asia: Manila, Philippines (1)", + "url_template": "rtmp://mnl01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://mnl01.contribute.live-video.net/app/{stream_key}", + "priority": 47 + }, + { + "_id": 48, + "availability": 1.0, + "default": false, + "name": "Asia Southeast: Sydney (20)", + "url_template": "rtmp://aps20.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://aps20.contribute.live-video.net/app/{stream_key}", + "priority": 48 + }, + { + "_id": 49, + "availability": 1.0, + "default": false, + "name": "Asia Southeast: Singapore (10)", + "url_template": "rtmp://aps10.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://aps10.contribute.live-video.net/app/{stream_key}", + "priority": 49 + } + ] +} diff --git a/modules/home/common/obs-config/plugin_config/rtmp-services/package.json b/modules/home/common/obs-config/plugin_config/rtmp-services/package.json new file mode 100644 index 0000000..1594f9c --- /dev/null +++ b/modules/home/common/obs-config/plugin_config/rtmp-services/package.json @@ -0,0 +1 @@ +{"$schema":"schema/package-schema.json","url":"https://obsproject.com/obs2_update/rtmp-services/v5","version":273,"files":[{"name":"services.json","version":273}]} diff --git a/modules/home/common/obs-config/plugin_config/rtmp-services/services.json b/modules/home/common/obs-config/plugin_config/rtmp-services/services.json new file mode 100644 index 0000000..4f8b976 --- /dev/null +++ b/modules/home/common/obs-config/plugin_config/rtmp-services/services.json @@ -0,0 +1 @@ +{"$schema":"schema/service-schema-v5.json","format_version":5,"services":[{"name":"Twitch","common":true,"stream_key_link":"https://dashboard.twitch.tv/settings/stream","multitrack_video_configuration_url":"https://ingest.twitch.tv/api/v3/GetClientConfiguration","multitrack_video_name":"Enhanced Broadcasting","multitrack_video_learn_more_link":"https://help.twitch.tv/s/article/multiple-encodes","servers":[{"name":"Asia: Hong Kong","url":"rtmp://live-hkg.twitch.tv/app"},{"name":"Asia: Seoul, South Korea","url":"rtmp://live-sel.twitch.tv/app"},{"name":"Asia: Singapore","url":"rtmp://live-sin.twitch.tv/app"},{"name":"Asia: Taipei, Taiwan","url":"rtmp://live-tpe.twitch.tv/app"},{"name":"Asia: Tokyo, Japan","url":"rtmp://live-tyo.twitch.tv/app"},{"name":"Australia: Sydney","url":"rtmp://live-syd.twitch.tv/app"},{"name":"EU: Amsterdam, NL","url":"rtmp://live-ams.twitch.tv/app"},{"name":"EU: Berlin, DE","url":"rtmp://live-ber.twitch.tv/app"},{"name":"Europe: Copenhagen, DK","url":"rtmp://live-cph.twitch.tv/app"},{"name":"EU: Frankfurt, DE","url":"rtmp://live-fra.twitch.tv/app"},{"name":"EU: Helsinki, FI","url":"rtmp://live-hel.twitch.tv/app"},{"name":"EU: Lisbon, Portugal","url":"rtmp://live-lis.twitch.tv/app"},{"name":"EU: London, UK","url":"rtmp://live-lhr.twitch.tv/app"},{"name":"EU: Madrid, Spain","url":"rtmp://live-mad.twitch.tv/app"},{"name":"EU: Marseille, FR","url":"rtmp://live-mrs.twitch.tv/app"},{"name":"EU: Milan, Italy","url":"rtmp://live-mil.twitch.tv/app"},{"name":"EU: Norway, Oslo","url":"rtmp://live-osl.twitch.tv/app"},{"name":"EU: Paris, FR","url":"rtmp://live-cdg.twitch.tv/app"},{"name":"EU: Prague, CZ","url":"rtmp://live-prg.twitch.tv/app"},{"name":"EU: Stockholm, SE","url":"rtmp://live-arn.twitch.tv/app"},{"name":"EU: Vienna, Austria","url":"rtmp://live-vie.twitch.tv/app"},{"name":"EU: Warsaw, Poland","url":"rtmp://live-waw.twitch.tv/app"},{"name":"NA: Mexico City","url":"rtmp://live-qro.twitch.tv/app"},{"name":"NA: Quebec, Canada","url":"rtmp://live-ymq.twitch.tv/app"},{"name":"NA: Toronto, Canada","url":"rtmp://live-yto.twitch.tv/app"},{"name":"South America: Argentina","url":"rtmp://live-eze.twitch.tv/app"},{"name":"South America: Chile","url":"rtmp://live-scl.twitch.tv/app"},{"name":"South America: Lima, Peru","url":"rtmp://live-lim.twitch.tv/app"},{"name":"South America: Medellin, Colombia","url":"rtmp://live-mde.twitch.tv/app"},{"name":"South America: Rio de Janeiro, Brazil","url":"rtmp://live-rio.twitch.tv/app"},{"name":"South America: Sao Paulo, Brazil","url":"rtmp://live-sao.twitch.tv/app"},{"name":"US Central: Dallas, TX","url":"rtmp://live-dfw.twitch.tv/app"},{"name":"US Central: Denver, CO","url":"rtmp://live-den.twitch.tv/app"},{"name":"US Central: Houston, TX","url":"rtmp://live-hou.twitch.tv/app"},{"name":"US Central: Salt Lake City, UT","url":"rtmp://live-slc.twitch.tv/app"},{"name":"US East: Ashburn, VA","url":"rtmp://live-iad.twitch.tv/app"},{"name":"US East: Atlanta, GA","url":"rtmp://live-atl.twitch.tv/app"},{"name":"US East: Chicago","url":"rtmp://live-ord.twitch.tv/app"},{"name":"US East: Miami, FL","url":"rtmp://live-mia.twitch.tv/app"},{"name":"US East: New York, NY","url":"rtmp://live-jfk.twitch.tv/app"},{"name":"US West: Los Angeles, CA","url":"rtmp://live-lax.twitch.tv/app"},{"name":"US West: Phoenix, AZ","url":"rtmp://live-phx.twitch.tv/app"},{"name":"US West: Portland, Oregon","url":"rtmp://live-pdx.twitch.tv/app"},{"name":"US West: San Francisco, CA","url":"rtmp://live-sfo.twitch.tv/app"},{"name":"US West: San Jose, CA","url":"rtmp://live-sjc.twitch.tv/app"},{"name":"US West: Seattle, WA","url":"rtmp://live-sea.twitch.tv/app"}],"recommended":{"keyint":2,"max video bitrate":6000,"max audio bitrate":320,"x264opts":"scenecut=0"},"supported video codecs":["h264"]},{"name":"YouTube - HLS","common":false,"more_info_link":"https://developers.google.com/youtube/v3/live/guides/ingestion-protocol-comparison","stream_key_link":"https://www.youtube.com/live_dashboard","protocol":"HLS","supported video codecs":["h264","hevc"],"servers":[{"name":"Primary YouTube ingest server","url":"https://a.upload.youtube.com/http_upload_hls?cid={stream_key}©=0&file=out.m3u8"},{"name":"Backup YouTube ingest server","url":"https://b.upload.youtube.com/http_upload_hls?cid={stream_key}©=1&file=out.m3u8"}],"recommended":{"keyint":2,"output":"ffmpeg_hls_muxer","max video bitrate":51000,"max audio bitrate":160}},{"name":"YouTube - RTMPS","common":true,"stream_key_link":"https://www.youtube.com/live_dashboard","alt_names":["YouTube / YouTube Gaming","YouTube - RTMP","YouTube - RTMPS (Beta)"],"supported video codecs":["h264","hevc","av1"],"servers":[{"name":"Primary YouTube ingest server","url":"rtmps://a.rtmps.youtube.com:443/live2"},{"name":"Backup YouTube ingest server","url":"rtmps://b.rtmps.youtube.com:443/live2?backup=1"},{"name":"Primary YouTube ingest server (legacy RTMP)","url":"rtmp://a.rtmp.youtube.com/live2"},{"name":"Backup YouTube ingest server (legacy RTMP)","url":"rtmp://b.rtmp.youtube.com/live2?backup=1"}],"recommended":{"keyint":2,"max video bitrate":51000,"max audio bitrate":160}},{"name":"Loola.tv","common":false,"servers":[{"name":"US East: Virginia","url":"rtmp://rtmp.loola.tv/push"},{"name":"EU Central: Germany","url":"rtmp://rtmp-eu.loola.tv/push"},{"name":"South America: Brazil","url":"rtmp://rtmp-sa.loola.tv/push"},{"name":"Asia/Pacific: Singapore","url":"rtmp://rtmp-sg.loola.tv/push"},{"name":"Middle East: Bahrain","url":"rtmp://rtmp-me.loola.tv/push"}],"recommended":{"keyint":2,"profile":"high","max video bitrate":2500,"max audio bitrate":160,"bframes":2,"x264opts":"scenecut=0"},"supported video codecs":["h264"]},{"name":"Lovecast","servers":[{"name":"Default","url":"rtmp://live-a.lovecastapp.com:5222/app"}],"recommended":{"keyint":2,"profile":"main","max video bitrate":8000,"max audio bitrate":192,"supported resolutions":["1920x1080","1280x720"],"max fps":30},"supported video codecs":["h264"]},{"name":"Luzento.com - RTMP","stream_key_link":"https://cms.luzento.com/dashboard/stream-key?from=OBS","servers":[{"name":"Primary","url":"rtmp://ingest.luzento.com/live"},{"name":"Primary (Test)","url":"rtmp://ingest.luzento.com/test"}],"recommended":{"keyint":2,"max video bitrate":6000,"max audio bitrate":256,"bframes":2,"x264opts":"scenecut=0"},"supported video codecs":["h264"]},{"name":"Web.TV","servers":[{"name":"Primary","url":"rtmp://live3.origins.web.tv/liveext"}],"recommended":{"keyint":2,"profile":"main","max video bitrate":3500,"max audio bitrate":160},"supported video codecs":["h264"]},{"name":"GoodGame.ru","servers":[{"name":"Моscow","url":"rtmp://msk.goodgame.ru:1940/live"}],"supported video codecs":["h264"]},{"name":"Vaughn Live / iNSTAGIB","servers":[{"name":"US: Vint Hill, VA","url":"rtmp://live-iad.vaughnsoft.net/live"},{"name":"US: Vint Hill, VA #2","url":"rtmp://live-iad2.vaughnsoft.net/live"},{"name":"US: Dallas, TX","url":"rtmp://live-dfw.vaughnsoft.net/live"},{"name":"US: Denver, CO","url":"rtmp://live-den.vaughnsoft.net/live"},{"name":"US: New York, NY","url":"rtmp://live-nyc.vaughnsoft.net/live"},{"name":"US: Miami, FL","url":"rtmp://live-mia.vaughnsoft.net/live"},{"name":"US: Seattle, WA","url":"rtmp://live-sea.vaughnsoft.net/live"},{"name":"CA: Toronto","url":"rtmp://live-tor.vaughnsoft.net/live"},{"name":"EU: Amsterdam, NL","url":"rtmp://live-ams.vaughnsoft.net/live"},{"name":"EU: London, UK","url":"rtmp://live-lhr.vaughnsoft.net/live"},{"name":"EU: Paris, FR","url":"rtmp://live-lhr.vaughnsoft.net/live"},{"name":"Tokyo, JP","url":"rtmp://live-lhr.vaughnsoft.net/live"}],"recommended":{"keyint":2,"max video bitrate":15000,"max audio bitrate":320},"supported video codecs":["h264"]},{"name":"Breakers.TV","servers":[{"name":"US: Vint Hill, VA","url":"rtmp://live-iad.vaughnsoft.net/live"},{"name":"US: Vint Hill, VA #2","url":"rtmp://live-iad2.vaughnsoft.net/live"},{"name":"US: Dallas, TX","url":"rtmp://live-dfw.vaughnsoft.net/live"},{"name":"US: Denver, CO","url":"rtmp://live-den.vaughnsoft.net/live"},{"name":"US: New York, NY","url":"rtmp://live-nyc.vaughnsoft.net/live"},{"name":"US: Miami, FL","url":"rtmp://live-mia.vaughnsoft.net/live"},{"name":"US: Seattle, WA","url":"rtmp://live-sea.vaughnsoft.net/live"},{"name":"CA: Toronto","url":"rtmp://live-tor.vaughnsoft.net/live"},{"name":"EU: Amsterdam, NL","url":"rtmp://live-ams.vaughnsoft.net/live"},{"name":"EU: London, UK","url":"rtmp://live-lhr.vaughnsoft.net/live"},{"name":"EU: Paris, FR","url":"rtmp://live-lhr.vaughnsoft.net/live"},{"name":"Tokyo, JP","url":"rtmp://live-lhr.vaughnsoft.net/live"}],"recommended":{"keyint":2,"max video bitrate":15000,"max audio bitrate":320},"supported video codecs":["h264"]},{"name":"Facebook Live","common":true,"stream_key_link":"https://www.facebook.com/live/producer?ref=OBS","servers":[{"name":"Default","url":"rtmps://rtmp-api.facebook.com:443/rtmp/"}],"recommended":{"keyint":2,"profile":"main","supported resolutions":["1920x1080","1280x720","852x480","640x360"],"bitrate matrix":[{"res":"640x360","fps":30,"max bitrate":1000},{"res":"640x360","fps":60,"max bitrate":1500},{"res":"852x480","fps":30,"max bitrate":2000},{"res":"852x480","fps":60,"max bitrate":3000},{"res":"1280x720","fps":30,"max bitrate":4000},{"res":"1280x720","fps":60,"max bitrate":6000},{"res":"1920x1080","fps":30,"max bitrate":6000},{"res":"1920x1080","fps":60,"max bitrate":9000}],"max fps":60,"max video bitrate":9000,"max audio bitrate":128},"supported video codecs":["h264"]},{"name":"Restream.io","alt_names":["Restream.io - RTMP","Restream.io - FTL"],"common":true,"stream_key_link":"https://restream.io/settings/streaming-setup?from=OBS","servers":[{"name":"Autodetect","url":"rtmp://live.restream.io/live"},{"name":"EU-West (London, GB)","url":"rtmp://london.restream.io/live"},{"name":"EU-West (Amsterdam, NL)","url":"rtmp://amsterdam.restream.io/live"},{"name":"EU-West (Paris, FR)","url":"rtmp://paris.restream.io/live"},{"name":"EU-Central (Frankfurt, DE)","url":"rtmp://frankfurt.restream.io/live"},{"name":"EU-South (Madrid, Spain)","url":"rtmp://madrid.restream.io/live"},{"name":"Turkey (Istanbul)","url":"rtmp://istanbul.restream.io/live"},{"name":"US-West (Seattle, WA)","url":"rtmp://seattle.restream.io/live"},{"name":"US-West (San Jose, CA)","url":"rtmp://sanjose.restream.io/live"},{"name":"US-Central (Dallas, TX)","url":"rtmp://dallas.restream.io/live"},{"name":"US-East (Chicago, IL)","url":"rtmp://chicago.restream.io/live"},{"name":"US-East (New York, NY)","url":"rtmp://newyork.restream.io/live"},{"name":"US-East (Washington, DC)","url":"rtmp://washington.restream.io/live"},{"name":"NA-East (Toronto, Canada)","url":"rtmp://toronto.restream.io/live"},{"name":"SA (Saint Paul, Brazil)","url":"rtmp://saopaulo.restream.io/live"},{"name":"India (Bangalore)","url":"rtmp://bangalore.restream.io/live"},{"name":"Asia (Hong Kong)","url":"rtmp://hongkong.restream.io/live"},{"name":"Asia (Singapore)","url":"rtmp://singapore.restream.io/live"},{"name":"Asia (Seoul, South Korea)","url":"rtmp://seoul.restream.io/live"},{"name":"Asia (Tokyo, Japan)","url":"rtmp://tokyo.restream.io/live"},{"name":"Australia (Sydney)","url":"rtmp://sydney.restream.io/live"}],"recommended":{"keyint":2},"supported video codecs":["h264"]},{"name":"Castr.io","servers":[{"name":"US-East (Chicago, IL)","url":"rtmp://cg.castr.io/static"},{"name":"US-East (New York, NY)","url":"rtmp://ny.castr.io/static"},{"name":"US-East (Miami, FL)","url":"rtmp://mi.castr.io/static"},{"name":"US-West (Seattle, WA)","url":"rtmp://se.castr.io/static"},{"name":"US-West (Los Angeles, CA)","url":"rtmp://la.castr.io/static"},{"name":"US-Central (Dallas, TX)","url":"rtmp://da.castr.io/static"},{"name":"NA-East (Toronto, CA)","url":"rtmp://qc.castr.io/static"},{"name":"Mexico","url":"rtmp://mexico.castr.io/static"},{"name":"Sao Paulo, BR","url":"rtmp://br.castr.io/static"},{"name":"Colombia","url":"rtmp://bogota.castr.io/static"},{"name":"Santiago, Chile","url":"rtmp://santiago.castr.io/static"},{"name":"Istanbul, TR","url":"rtmp://istanbul.castr.io/static"},{"name":"Tel Aviv, IL","url":"rtmp://telaviv.castr.io/static"},{"name":"EU-West (London, UK)","url":"rtmp://uk.castr.io/static"},{"name":"EU-West (Paris, FR)","url":"rtmp://paris.castr.io/static"},{"name":"EU-West (Madrid, ES)","url":"rtmp://madrid.castr.io/static"},{"name":"EU-Central (Frankfurt, DE)","url":"rtmp://fr.castr.io/static"},{"name":"EU-Central (Milan, IT)","url":"rtmp://milan.castr.io/static"},{"name":"EU-North (Stockholm, SE)","url":"rtmp://stockholm.castr.io/static"},{"name":"EU-North (Copenhagen, DK)","url":"rtmp://copenhagen.castr.io/static"},{"name":"Russia (Moscow)","url":"rtmp://ru.castr.io/static"},{"name":"Asia (Singapore)","url":"rtmp://sg.castr.io/static"},{"name":"Asia (Hong Kong, HK)","url":"rtmp://hongkong.castr.io/static"},{"name":"Asia (India)","url":"rtmp://in.castr.io/static"},{"name":"Australia (Sydney)","url":"rtmp://au.castr.io/static"},{"name":"UAE (Dubai)","url":"rtmp://dubai.castr.io/static"},{"name":"Africa (Johannesburg, ZA)","url":"rtmp://southafrica.castr.io/static"},{"name":"Africa (Lagos, NG)","url":"rtmp://lagos.castr.io/static"},{"name":"US Central","url":"rtmp://us-central.castr.io/static"},{"name":"US West","url":"rtmp://us-west.castr.io/static"},{"name":"US East","url":"rtmp://us-east.castr.io/static"},{"name":"US South","url":"rtmp://us-south.castr.io/static"},{"name":"South America","url":"rtmp://south-am.castr.io/static"},{"name":"EU Central","url":"rtmp://eu-central.castr.io/static"},{"name":"Singapore","url":"rtmp://sg-central.castr.io/static"}],"recommended":{"keyint":2},"supported video codecs":["h264"]},{"name":"Boomstream","servers":[{"name":"Default","url":"rtmp://live.boomstream.com/live"}],"supported video codecs":["h264"]},{"name":"Meridix Live Sports Platform","servers":[{"name":"Primary","url":"rtmp://publish.meridix.com/live"}],"recommended":{"max video bitrate":3500},"supported video codecs":["h264"]},{"name":"AfreecaTV","alt_names":["아프리카TV","Afreeca.TV"],"servers":[{"name":"Asia : Korea","url":"rtmp://rtmpmanager-freecat.afreeca.tv/app"},{"name":"North America : US East","url":"rtmp://rtmp-esu.afreecatv.com/app"},{"name":"North America : US West","url":"rtmp://rtmp-wsu.afreecatv.com/app"},{"name":"South America : Brazil","url":"rtmp://rtmp-brz.afreecatv.com/app"},{"name":"Europe : UK","url":"rtmp://rtmp-uk.afreecatv.com/app"},{"name":"Asia : Singapore","url":"rtmp://rtmp-sgp.afreecatv.com/app"}],"recommended":{"keyint":2,"profile":"main","max video bitrate":8000,"max audio bitrate":192},"supported video codecs":["h264"]},{"name":"CAM4","servers":[{"name":"CAM4","url":"rtmp://origin.cam4.com/cam4-origin-live"}],"recommended":{"keyint":1,"profile":"baseline","max video bitrate":3000,"max audio bitrate":128},"supported video codecs":["h264"]},{"name":"ePlay","servers":[{"name":"ePlay Primary","url":"rtmp://live.eplay.link/origin"}],"recommended":{"keyint":2,"profile":"main","max video bitrate":7500,"max audio bitrate":192},"supported video codecs":["h264"]},{"name":"Picarto","servers":[{"name":"Autoselect closest server","url":"rtmp://live.us.picarto.tv/golive"},{"name":"Los Angeles, USA","url":"rtmp://live.us-losangeles.picarto.tv/golive"},{"name":"Dallas, USA","url":"rtmp://live.us-dallas.picarto.tv/golive"},{"name":"Miami, USA","url":"rtmp://live.us-miami.picarto.tv/golive"},{"name":"New York, USA","url":"rtmp://live.us-newyork.picarto.tv/golive"},{"name":"Europe","url":"rtmp://live.eu-west1.picarto.tv/golive"}],"recommended":{"keyint":2,"profile":"main","max video bitrate":3500},"supported video codecs":["h264"]},{"name":"Livestream","servers":[{"name":"Primary","url":"rtmp://rtmpin.livestreamingest.com/rtmpin"}],"supported video codecs":["h264"]},{"name":"Uscreen","servers":[{"name":"Default","url":"rtmp://global-live.uscreen.app:5222/app"}],"recommended":{"keyint":2,"max video bitrate":8000,"max audio bitrate":192},"supported video codecs":["h264"]},{"name":"Stripchat","servers":[{"name":"Auto","url":"rtmp://live.doppiocdn.com/ext"}],"recommended":{"keyint":2,"profile":"main","bframes":0,"max video bitrate":6000,"max audio bitrate":128,"x264opts":"tune=zerolatency"},"supported video codecs":["h264"]},{"name":"CamSoda","servers":[{"name":"North America","url":"rtmp://obs-ingest-na.livemediahost.com/cam_obs"},{"name":"South America","url":"rtmp://obs-ingest-sa.livemediahost.com/cam_obs"},{"name":"Asia","url":"rtmp://obs-ingest-as.livemediahost.com/cam_obs"},{"name":"Europe","url":"rtmp://obs-ingest-eu.livemediahost.com/cam_obs"},{"name":"Oceania","url":"rtmp://obs-ingest-oc.livemediahost.com/cam_obs"}],"recommended":{"supported resolutions":["1920x1080","1280x720","852x480","480x360"],"max fps":30,"max video bitrate":6000,"max audio bitrate":160,"x264opts":"tune=zerolatency"},"supported video codecs":["h264"]},{"name":"Chaturbate","stream_key_link":"https://chaturbate.com/b/?useExternalSoftware=true","more_info_link":"https://support.chaturbate.com/hc/en-us/articles/360037971952-How-do-I-set-up-OBS","servers":[{"name":"Global Main Fastest - Recommended","url":"rtmp://global.live.mmcdn.com/live-origin"},{"name":"Global Backup","url":"rtmp://global-backup.live.mmcdn.com/live-origin"},{"name":"Asia: Mumbai, India","url":"rtmp://bom.live.mmcdn.com/live-origin"},{"name":"Asia: Singapore","url":"rtmp://sin.live.mmcdn.com/live-origin"},{"name":"Asia: Taiwan","url":"rtmp://tsa.live.mmcdn.com/live-origin"},{"name":"Asia: Tokyo, Japan","url":"rtmp://nrt.live.mmcdn.com/live-origin"},{"name":"Australasia: Sydney, Australia","url":"rtmp://syd.live.mmcdn.com/live-origin"},{"name":"EU East: Sofia, Bulgaria","url":"rtmp://sof.live.mmcdn.com/live-origin"},{"name":"EU East: Warsaw, Poland","url":"rtmp://waw.live.mmcdn.com/live-origin"},{"name":"EU North: Helsinki, Finland","url":"rtmp://hel.live.mmcdn.com/live-origin"},{"name":"EU West: Amsterdam, Netherlands","url":"rtmp://ams.live.mmcdn.com/live-origin"},{"name":"EU West: Frankfurt, Germany","url":"rtmp://fra.live.mmcdn.com/live-origin"},{"name":"EU West: Madrid, Spain","url":"rtmp://mad.live.mmcdn.com/live-origin"},{"name":"EU West: Milan, Italy","url":"rtmp://mxp.live.mmcdn.com/live-origin"},{"name":"EU West: Rotterdam, Netherlands","url":"rtmp://rtm.live.mmcdn.com/live-origin"},{"name":"South America: Bogota, Colombia","url":"rtmp://bog.live.mmcdn.com/live-origin"},{"name":"South America: Sao Paulo, Brazil","url":"rtmp://gru.live.mmcdn.com/live-origin"},{"name":"US Central: Austin, TX","url":"rtmp://aus.live.mmcdn.com/live-origin"},{"name":"US Central: Chicago, IL","url":"rtmp://chi.live.mmcdn.com/live-origin"},{"name":"US East: Ashburn, VA","url":"rtmp://ash.live.mmcdn.com/live-origin"},{"name":"US East: Atlanta, GA","url":"rtmp://atl.live.mmcdn.com/live-origin"},{"name":"US East: Miami, FL","url":"rtmp://mia.live.mmcdn.com/live-origin"},{"name":"US West: Los Angeles, CA","url":"rtmp://lax.live.mmcdn.com/live-origin"},{"name":"US West: Phoenix, AZ","url":"rtmp://phx.live.mmcdn.com/live-origin"},{"name":"US West: Salt Lake City, UT","url":"rtmp://slc.live.mmcdn.com/live-origin"},{"name":"US West: Seattle, WA","url":"rtmp://sea.live.mmcdn.com/live-origin"}],"recommended":{"keyint":2,"max video bitrate":50000,"max audio bitrate":192,"supported resolutions":["3840x2160","2560x1440","1920x1080","1280x720","960x540","852x480","640x360"],"max fps":60},"supported video codecs":["h264"]},{"name":"WpStream","more_info_link":"https://wpstream.net/obs-more-info","stream_key_link":"https://wpstream.net/obs-get-stream-key","servers":[{"name":"Closest server - Automatic","url":"rtmp://ingest.wpstream.net/golive"},{"name":"North America","url":"rtmp://ingest-na.wpstream.net/golive"},{"name":"Europe","url":"rtmp://ingest-eu.wpstream.net/golive"},{"name":"Asia","url":"rtmp://ingest-as.wpstream.net/golive"},{"name":"South America","url":"rtmp://ingest-sa.wpstream.net/golive"},{"name":"Australia & Oceania","url":"rtmp://ingest-au.wpstream.net/golive"}],"recommended":{"keyint":2,"max audio bitrate":160},"supported video codecs":["h264"]},{"name":"Twitter","common":true,"stream_key_link":"https://studio.twitter.com/producer/sources","alt_names":["Twitter / Periscope"],"servers":[{"name":"US West: California","url":"rtmp://ca.pscp.tv:80/x"},{"name":"US West: Oregon","url":"rtmp://or.pscp.tv:80/x"},{"name":"US East: Virginia","url":"rtmp://va.pscp.tv:80/x"},{"name":"South America: Brazil","url":"rtmp://br.pscp.tv:80/x"},{"name":"EU West: France","url":"rtmp://fr.pscp.tv:80/x"},{"name":"EU West: Ireland","url":"rtmp://ie.pscp.tv:80/x"},{"name":"EU Central: Germany","url":"rtmp://de.pscp.tv:80/x"},{"name":"Asia/Pacific: Australia","url":"rtmp://au.pscp.tv:80/x"},{"name":"Asia/Pacific: India","url":"rtmp://in.pscp.tv:80/x"},{"name":"Asia/Pacific: Japan","url":"rtmp://jp.pscp.tv:80/x"},{"name":"Asia/Pacific: Korea","url":"rtmp://kr.pscp.tv:80/x"},{"name":"Asia/Pacific: Singapore","url":"rtmp://sg.pscp.tv:80/x"}],"recommended":{"keyint":3,"max video bitrate":12000,"max audio bitrate":128,"max fps":60},"supported video codecs":["h264"]},{"name":"Switchboard Live","alt_names":["Switchboard Live (Joicaster)"],"servers":[{"name":"Default","url":"rtmps://live.sb.zone:443/live"}],"recommended":{"keyint":2,"profile":"high"},"supported video codecs":["h264"]},{"name":"Eventials","servers":[{"name":"Default","url":"rtmp://transmission.eventials.com/eventialsLiveOrigin"}],"recommended":{"keyint":1,"profile":"baseline","max video bitrate":900,"max audio bitrate":96},"supported video codecs":["h264"]},{"name":"EventLive.pro","servers":[{"name":"Default","url":"rtmp://go.eventlive.pro/live"}],"recommended":{"keyint":2,"max video bitrate":3000,"max audio bitrate":192,"supported resolutions":["1920x1080","1280x720"],"max fps":30},"supported video codecs":["h264"]},{"name":"Lahzenegar - StreamG | لحظه‌نگار - استریمجی","servers":[{"name":"Primary","url":"rtmp://rtmp.lahzecdn.com/pro"},{"name":"Iran","url":"rtmp://rtmp-iran.lahzecdn.com/pro"}],"recommended":{"keyint":2,"profile":"main","max video bitrate":4000,"max audio bitrate":192},"supported video codecs":["h264"]},{"name":"MyLive","servers":[{"name":"Default","url":"rtmp://stream.mylive.in.th/live"}],"recommended":{"keyint":2,"profile":"main","max video bitrate":7000,"max audio bitrate":192},"supported video codecs":["h264"]},{"name":"Trovo","alt_names":["Madcat"],"stream_key_link":"https://studio.trovo.live/mychannel/stream","servers":[{"name":"Default","url":"rtmp://livepush.trovo.live/live/"}],"recommended":{"keyint":2,"max video bitrate":9000,"max audio bitrate":160,"x264opts":"scenecut=0"},"supported video codecs":["h264"]},{"name":"Mixcloud","servers":[{"name":"Default","url":"rtmp://rtmp.mixcloud.com/broadcast"}],"recommended":{"keyint":2,"max video bitrate":6000,"max audio bitrate":320,"supported resolutions":["1280x720","852x480","480x360"],"max fps":30,"x264opts":"scenecut=0"},"supported video codecs":["h264"]},{"name":"SermonAudio Cloud","alt_names":["SermonAudio.com"],"servers":[{"name":"Primary","url":"rtmp://webcast.sermonaudio.com/sa"}],"recommended":{"max video bitrate":2000,"max audio bitrate":128},"supported video codecs":["h264"]},{"name":"Vimeo","servers":[{"name":"Default","url":"rtmp://rtmp.cloud.vimeo.com/live"}],"supported video codecs":["h264"]},{"name":"Aparat","servers":[{"name":"Default","url":"rtmp://rtmp.cdn.asset.aparat.com:443/event"}],"recommended":{"keyint":2,"max video bitrate":6000,"max audio bitrate":320,"x264opts":"scenecut=0"},"supported video codecs":["h264"]},{"name":"KakaoTV","servers":[{"name":"Default","url":"rtmp://rtmp.play.kakao.com/kakaotv"}],"recommended":{"max video bitrate":8000,"max audio bitrate":192},"supported video codecs":["h264"]},{"name":"Piczel.tv","servers":[{"name":"Default","url":"rtmp://piczel.tv:1935/live"}],"recommended":{"keyint":4,"max video bitrate":2500,"max audio bitrate":256,"x264opts":"tune=zerolatency"},"supported video codecs":["h264"]},{"name":"STAGE TEN","servers":[{"name":"STAGE TEN","url":"rtmps://app-rtmp.stageten.tv:443/stageten"}],"recommended":{"keyint":2,"profile":"baseline","max video bitrate":4000,"max audio bitrate":128},"supported video codecs":["h264"]},{"name":"DLive","servers":[{"name":"Default","url":"rtmp://stream.dlive.tv/live"}],"recommended":{"keyint":2,"max video bitrate":6000,"max audio bitrate":160},"supported video codecs":["h264"]},{"name":"Lightcast.com","servers":[{"name":"North America 1","url":"rtmp://ingest-na1.live.lightcast.com/in"},{"name":"North America 2","url":"rtmp://ingest-na2.live.lightcast.com/in"},{"name":"Europe","url":"rtmp://ingest-eu1.live.lightcast.com/in"}],"recommended":{"keyint":2,"max video bitrate":6000,"max audio bitrate":320,"x264opts":"scenecut=0"},"supported video codecs":["h264"]},{"name":"Bongacams","servers":[{"name":"Automatic / Default","url":"rtmp://auto.origin.gnsbc.com:1934/live"},{"name":"Automatic / Backup","url":"rtmp://origin.bcvidorigin.com:1934/live"},{"name":"Europe","url":"rtmp://z-eu.origin.gnsbc.com:1934/live"},{"name":"North America","url":"rtmp://z-us.origin.gnsbc.com:1934/live"}],"recommended":{"keyint":2,"max video bitrate":6000,"max audio bitrate":192,"bframes":0,"x264opts":"tune=zerolatency"},"supported video codecs":["h264"]},{"name":"OnlyFans.com","stream_key_link":"https://onlyfans.com/my/settings/other","servers":[{"name":"CloudBeta","url":"rtmp://cloudbetastreaming.onlyfans.com/live"}],"recommended":{"keyint":2,"profile":"main","max video bitrate":2500,"max audio bitrate":192,"bframes":0,"x264opts":"tune=zerolatency"},"supported video codecs":["h264"]},{"name":"Steam","common":false,"servers":[{"name":"Default","url":"rtmp://ingest-rtmp.broadcast.steamcontent.com/app"}],"recommended":{"keyint":2,"profile":"high","max video bitrate":7000,"max audio bitrate":128},"supported video codecs":["h264"]},{"name":"Konduit.live","servers":[{"name":"Default","url":"rtmp://rtmp.konduit.live/live"}],"recommended":{"keyint":2,"x264opts":"scenecut=0"},"supported video codecs":["h264"]},{"name":"niconico (ニコニコ生放送)","more_info_link":"https://qa.nicovideo.jp/faq/show/701","alt_names":["niconico, premium member (ニコニコ生放送 プレミアム会員)","niconico, free member (ニコニコ生放送 一般会員)"],"servers":[{"name":"Default","url":"rtmp://liveorigin.dlive.nicovideo.jp/live/input"}],"recommended":{"keyint":2,"profile":"high","max audio bitrate":192,"max video bitrate":5808,"x264opts":"tune=zerolatency"},"supported video codecs":["h264"]},{"name":"Nimo TV","servers":[{"name":"Global:2","url":"rtmp://txpush.rtmp.nimo.tv/live/"},{"name":"Global:3","url":"rtmp://alpush.rtmp.nimo.tv/live/"}],"recommended":{"keyint":2,"max video bitrate":6000,"max audio bitrate":160},"supported video codecs":["h264"]},{"name":"XLoveCam.com","servers":[{"name":"Europe(main)","url":"rtmp://nl.eu.stream.xlove.com/performer-origin"},{"name":"Europe(Romania)","url":"rtmp://ro.eu.stream.xlove.com/performer-origin"},{"name":"Europe(Russia)","url":"rtmp://ru.eu.stream.xlove.com/performer-origin"},{"name":"North America(US East)","url":"rtmp://usec.na.stream.xlove.com/performer-origin"},{"name":"North America(US West)","url":"rtmp://uswc.na.stream.xlove.com/performer-origin"},{"name":"North America(Canada)","url":"rtmp://ca.na.stream.xlove.com/performer-origin"},{"name":"South America","url":"rtmp://co.sa.stream.xlove.com/performer-origin"},{"name":"Asia","url":"rtmp://sg.as.stream.xlove.com/performer-origin"}],"recommended":{"x264opts":"scenecut=0"},"supported video codecs":["h264"]},{"name":"AngelThump","servers":[{"name":"Auto","url":"rtmp://ingest.angelthump.com/live"},{"name":"New York 3","url":"rtmp://nyc-ingest.angelthump.com:1935/live"},{"name":"San Francisco 2","url":"rtmp://sfo-ingest.angelthump.com:1935/live"},{"name":"Singapore 1","url":"rtmp://sgp-ingest.angelthump.com:1935/live"},{"name":"London 1","url":"rtmp://lon-ingest.angelthump.com:1935/live"},{"name":"Frankfurt 1","url":"rtmp://fra-ingest.angelthump.com:1935/live"},{"name":"Toronto 1","url":"rtmp://tor-ingest.angelthump.com:1935/live"},{"name":"Amsterdam 3","url":"rtmp://ams-ingest.angelthump.com:1935/live"}],"recommended":{"keyint":2,"profile":"high","max video bitrate":3500,"max audio bitrate":160},"supported video codecs":["h264"]},{"name":"api.video","servers":[{"name":"Default","url":"rtmp://broadcast.api.video/s"}],"recommended":{"keyint":2,"max video bitrate":20000,"max audio bitrate":192},"supported video codecs":["h264"]},{"name":"SHOWROOM","protocol":"RTMP","servers":[{"name":"Default","url":"https://www.showroom-live.com/api/obs/streaming_info?obs_key="}],"recommended":{"keyint":2,"profile":"main","max video bitrate":1500,"max audio bitrate":160,"x264opts":"tune=zerolatency"},"supported video codecs":["h264"]},{"name":"Mux","servers":[{"name":"Global (RTMPS)","url":"rtmps://global-live.mux.com:443/app"},{"name":"Global (RTMP)","url":"rtmp://global-live.mux.com:5222/app"}],"recommended":{"keyint":2,"max video bitrate":5000,"max audio bitrate":160},"supported video codecs":["h264"]},{"name":"Viloud","servers":[{"name":"Default","url":"rtmp://live.viloud.tv:5222/app"}],"recommended":{"keyint":2,"max video bitrate":5000,"max audio bitrate":160},"supported video codecs":["h264"]},{"name":"MyFreeCams","servers":[{"name":"Automatic","url":"rtmp://publish.myfreecams.com/NxServer"},{"name":"Australia","url":"rtmp://publish-syd.myfreecams.com/NxServer"},{"name":"East Asia","url":"rtmp://publish-tyo.myfreecams.com/NxServer"},{"name":"Europe (East)","url":"rtmp://publish-buh.myfreecams.com/NxServer"},{"name":"Europe (West)","url":"rtmp://publish-ams.myfreecams.com/NxServer"},{"name":"North America (East Coast)","url":"rtmp://publish-ord.myfreecams.com/NxServer"},{"name":"North America (West Coast)","url":"rtmp://publish-tuk.myfreecams.com/NxServer"},{"name":"South America","url":"rtmp://publish-sao.myfreecams.com/NxServer"}],"recommended":{"keyint":1,"profile":"high","max fps":60,"max video bitrate":10000,"max audio bitrate":192,"x264opts":"tune=zerolatency scenecut=0"},"supported video codecs":["h264"]},{"name":"PolyStreamer.com","servers":[{"name":"Auto-select closest server","url":"rtmp://live.polystreamer.com/live"},{"name":"United States - West","url":"rtmp://us-west.live.polystreamer.com/live"},{"name":"United States - East","url":"rtmp://us-east.live.polystreamer.com/live"},{"name":"Australia","url":"rtmp://aus.live.polystreamer.com/live"},{"name":"India","url":"rtmp://ind.live.polystreamer.com/live"},{"name":"Germany","url":"rtmp://deu.live.polystreamer.com/live"},{"name":"Japan","url":"rtmp://jpn.live.polystreamer.com/live"},{"name":"Singapore","url":"rtmp://sgp.live.polystreamer.com/live"}],"recommended":{"keyint":2},"supported video codecs":["h264"]},{"name":"OPENREC.tv - Premium member (プレミアム会員)","stream_key_link":"https://www.openrec.tv/login?keep_login=true&url=https://www.openrec.tv/dashboard/live?from=obs","servers":[{"name":"Default","url":"rtmp://a.station.openrec.tv:1935/live1"}],"recommended":{"keyint":2,"max video bitrate":5000,"max audio bitrate":160},"supported video codecs":["h264"]},{"name":"nanoStream Cloud / bintu","more_info_link":"https://www.nanocosmos.de/obs","stream_key_link":"https://bintu-cloud-frontend.nanocosmos.de/organisation","servers":[{"name":"bintu-stream global ingest (rtmp)","url":"rtmp://bintu-stream.nanocosmos.de/live"},{"name":"bintu-stream global ingest (rtmps)","url":"rtmps://bintu-stream.nanocosmos.de:1937/live"},{"name":"bintu-vtrans global ingest with transcoding/ABR (rtmp)","url":"rtmp://bintu-vtrans.nanocosmos.de/live"},{"name":"bintu-vtrans global ingest with transcoding/ABR (rtmps)","url":"rtmps://bintu-vtrans.nanocosmos.de:1937/live"},{"name":"bintu-stream Europe (EU)","url":"rtmp://bintu-stream-eu.nanocosmos.de/live"},{"name":"bintu-stream USA West (USW)","url":"rtmp://bintu-stream-usw.nanocosmos.de/live"},{"name":"bintu-stream US East (USE)","url":"rtmp://bintu-stream-use.nanocosmos.de/live"},{"name":"bintu-stream Asia South (ASS)","url":"rtmp://bintu-stream-ass.nanocosmos.de/live"},{"name":"bintu-stream Australia (AU)","url":"rtmp://bintu-stream-au.nanocosmos.de/live"},{"name":"bintu-vtrans Europe (EU)","url":"rtmp://bintu-vtrans-eu.nanocosmos.de/live"},{"name":"bintu-vtrans USA West (USW)","url":"rtmp://bintu-vtrans-usw.nanocosmos.de/live"},{"name":"bintu-vtrans US East (USE)","url":"rtmp://bintu-vtrans-use.nanocosmos.de/live"},{"name":"bintu-vtrans Asia South (ASS)","url":"rtmp://bintu-vtrans-ass.nanocosmos.de/live"},{"name":"bintu-vtrans Australia (AU)","url":"rtmp://bintu-vtrans-au.nanocosmos.de/live"}],"recommended":{"keyint":2,"profile":"baseline","bframes":0,"max video bitrate":5000,"max audio bitrate":192,"x264opts":"tune=zerolatency b-pyramid=0 scenecut=0"},"supported video codecs":["h264"]},{"name":"Dacast","protocol":"RTMP","servers":[{"name":"Default","url":"https://developer.dacast.com/v3/encoder-setup/"}],"recommended":{"keyint":1,"profile":"high","max video bitrate":7000,"max audio bitrate":128},"supported video codecs":["h264"]},{"name":"Bilibili Live - RTMP | 哔哩哔哩直播 - RTMP","more_info_link":"https://link.bilibili.com/p/help/index?id=4#/tools-tutorial","stream_key_link":"https://link.bilibili.com/p/center/index#/my-room/start-live","alt_names":["Bilibili Live"],"servers":[{"name":"Global - Primary | 全球 - 主要","url":"rtmp://live-push.bilivideo.com/live-bvc/"},{"name":"Non Chinese Mainland - Primary | 非中国大陆地区 - 主要","url":"rtmp://bdy.live-push.bilivideo.com/live-bvc/"},{"name":"Chinese Mainland - Backup | 中国大陆地区 - 备用","url":"rtmp://txy2.live-push.bilivideo.com/live-bvc/"},{"name":"Non Chinese Mainland - Backup | 非中国大陆地区 - 备用","url":"rtmp://txy.live-push.bilivideo.com/live-bvc/"}],"supported video codecs":["h264","hevc"]},{"name":"BoxCast","stream_key_link":"https://dashboard.boxcast.com/#/sources","servers":[{"name":"BoxCast","url":"rtmp://rtmp.boxcast.com/live"}],"supported video codecs":["h264"]},{"name":"Disciple Media","servers":[{"name":"Default","url":"rtmp://rtmp.disciplemedia.com/b-fme"}],"supported video codecs":["h264"]},{"name":"Jio Games","servers":[{"name":"Primary","url":"rtmp://livepub1.api.engageapps.jio/live"},{"name":"Secondary","url":"rtmp://livepub2.api.engageapps.jio/live"}],"recommended":{"keyint":2,"max video bitrate":32000,"max audio bitrate":256},"supported video codecs":["h264"]},{"name":"Kuaishou Live","stream_key_link":"https://studio.kuaishou.com/live/list","servers":[{"name":"Default","url":"rtmp://open-push.voip.yximgs.com/gifshow/"},{"name":"North America","url":"rtmp://tx.push.yximgs.com/live/"}],"supported video codecs":["h264"]},{"name":"Playeur","alt_names":["Utreon"],"servers":[{"name":"Default","url":"rtmp://live.playeur.com:5222/app"}],"recommended":{"keyint":2,"max video bitrate":5000,"max audio bitrate":160},"supported video codecs":["h264"]},{"name":"PhoneLiveStreaming","stream_key_link":"https://app.phonelivestreaming.com/media/rtmp","servers":[{"name":"PhoneLiveStreaming","url":"rtmp://live.phonelivestreaming.com/live/"}],"recommended":{"keyint":2,"max video bitrate":128,"max audio bitrate":160},"supported video codecs":["h264"]},{"name":"Sympla","servers":[{"name":"Sympla RTMP","url":"rtmp://rtmp.sympla.com.br:5222/app"}],"recommended":{"keyint":2,"max video bitrate":5000,"max audio bitrate":160},"supported video codecs":["h264"]},{"name":"Livepush","more_info_link":"https://docs.livepush.io/en/articles/5065323-how-to-stream-live-from-obs-to-livepush","servers":[{"name":"Livepush Global (Default)","url":"rtmp://dc-global.livepush.io/live"},{"name":"Chicago, US","url":"rtmp://us-central-ch.livepush.io/live"},{"name":"New York, US","url":"rtmp://us-east-ny.livepush.io/live"},{"name":"Los Angeles, US","url":"rtmp://us-west-la.livepush.io/live"},{"name":"Miami, US","url":"rtmp://us-south-mia.livepush.io/live"},{"name":"Dallas, US","url":"rtmp://us-central-dal.livepush.io/live"},{"name":"Montreal, CA","url":"rtmp://ca-central-mon.livepush.io/live"},{"name":"Toronto, CA","url":"rtmp://ca-south-tor.livepush.io/live"},{"name":"Sydney, AU","url":"rtmp://au-east-syd.livepush.io/live"},{"name":"London, UK","url":"rtmp://uk-central-ldn.livepush.io/live"},{"name":"Milan, Italy","url":"rtmp://it-north-mln.livepush.io/live"},{"name":"Paris, FR","url":"rtmp://fr-central-par.livepush.io/live"},{"name":"Singapore","url":"rtmp://as-southeast-sg.livepush.io/live"},{"name":"Bangalore, IN","url":"rtmp://in-south-blr.livepush.io/live"}],"recommended":{"keyint":2,"max video bitrate":16000},"supported video codecs":["h264"]},{"name":"Vindral","more_info_link":"https://docs.vindral.com/docs/vindral-cdn/","stream_key_link":"https://portal.cdn.vindral.com/channels","servers":[{"name":"Global","url":"rtmps://rtmp.global.cdn.vindral.com/publish"}],"recommended":{"keyint":1,"profile":"high","bframes":0,"max video bitrate":20000,"max audio bitrate":192},"supported video codecs":["h264"]},{"name":"Whowatch (ふわっち)","more_info_link":"https://whowatch.tv/help/encoder","stream_key_link":"https://whowatch.tv/publish","servers":[{"name":"default","url":"rtmp://live.whowatch.tv/live/"}],"recommended":{"keyint":2,"max video bitrate":1800,"max audio bitrate":192},"supported video codecs":["h264"]},{"name":"IRLToolkit","stream_key_link":"https://irl.run/settings/ingest/","servers":[{"name":"Global (Recommended)","url":"rtmps://stream.global.irl.run/ingest"},{"name":"Los Angeles, US","url":"rtmps://stream.lax.irl.run/ingest"},{"name":"Dallas, US","url":"rtmps://stream.dal.irl.run/ingest"},{"name":"New York, US","url":"rtmps://stream.ewr.irl.run/ingest"},{"name":"Miami, US","url":"rtmps://stream.mia.irl.run/ingest"},{"name":"Amsterdam, NL","url":"rtmps://stream.ams.irl.run/ingest"},{"name":"Frankfurt, DE","url":"rtmps://stream.fra.irl.run/ingest"},{"name":"Singapore","url":"rtmps://stream.sin.irl.run/ingest"},{"name":"Tokyo, JP","url":"rtmps://stream.tyo.irl.run/ingest"},{"name":"Sydney, AU","url":"rtmps://stream.syd.irl.run/ingest"}],"recommended":{"keyint":2,"bframes":2,"max video bitrate":20000,"max audio bitrate":256},"supported video codecs":["h264"]},{"name":"Bitmovin","more_info_link":"https://developer.bitmovin.com/docs/overview","stream_key_link":"https://bitmovin.com/dashboard/streams?streamsTab=LIVE","servers":[{"name":"Streams Live","url":"rtmp://live-input.bitmovin.com/streams"}],"recommended":{"keyint":2},"supported video codecs":["h264"]},{"name":"Live Streamer Cafe","more_info_link":"https://livestreamercafe.com/help.php","stream_key_link":"https://livestreamercafe.com/profile.php","servers":[{"name":"Live Streamer Cafe Server","url":"rtmp://tophicles.com/live"}],"recommended":{"keyint":2,"max video bitrate":6000},"supported video codecs":["h264"]},{"name":"Enchant.events","more_info_link":"https://docs.enchant.events/knowledge-base-y4pOb","servers":[{"name":"Primary RTMPS","url":"rtmps://stream.enchant.cloud:443/live"}],"recommended":{"keyint":2,"profile":"high","max video bitrate":9000,"max audio bitrate":192},"supported video codecs":["h264"]},{"name":"Joystick.TV","more_info_link":"https://support.joystick.tv/live_streaming/","stream_key_link":"https://joystick.tv/stream-settings","servers":[{"name":"North America","url":"rtmp://live.joystick.tv/live/"},{"name":"Europe","url":"rtmp://eu.live.joystick.tv/live/"}],"recommended":{"keyint":2,"max video bitrate":7500,"max audio bitrate":192,"max fps":60,"profile":"main","bframes":0,"x264opts":"tune=zerolatency scenecut=0"},"supported video codecs":["h264"]},{"name":"Livepeer Studio","more_info_link":"https://docs.livepeer.org/guides/developing/stream-via-obs","stream_key_link":"https://livepeer.studio/dashboard/streams","servers":[{"name":"Global (RTMP)","url":"rtmp://rtmp.livepeer.com/live"},{"name":"Global (RTMP Primary)","url":"rtmp://rtmp-a.livepeer.com/live"},{"name":"Global (RTMP Backup)","url":"rtmp://rtmp-b.livepeer.com/live"}],"recommended":{"keyint":1,"profile":"high","bframes":0,"max video bitrate":20000,"max audio bitrate":512},"supported video codecs":["h264"]},{"name":"MasterStream.iR | مستراستریم | ری استریم و استریم همزمان","common":false,"more_info_link":"https://masterstream.ir/webpage/page/docs","stream_key_link":"https://masterstream.ir/managestreams.php","servers":[{"name":"Iran Server 1 - Bandwidth Required","url":"rtmp://live-vip1.masterstream.ir/live"},{"name":"Iran Server 2 - Bandwidth Required","url":"rtmp://live-vip2.masterstream.ir/live"},{"name":"Turkey Server 1","url":"rtmp://tr-live1.masterstream.ir/live"},{"name":"Russia Server 1","url":"rtmp://ru-live1.masterstream.ir/live"}],"protocol":"RTMP","supported video codecs":["h264"],"recommended":{"keyint":2,"supported resolutions":["1920x1080","1280x720","852x480","640x360"],"max video bitrate":6000,"max audio bitrate":320,"x264opts":"scenecut=0"}},{"name":"PandaTV | 팬더티비","common":false,"servers":[{"name":"Default","url":"rtmp://rtmp.pandalive.co.kr/app"}],"recommended":{"keyint":2,"supported resolutions":["1920x1080","1280x720","852x480","640x360"],"max video bitrate":7500,"max audio bitrate":320,"x264opts":"scenecut=0"},"supported video codecs":["h264"]},{"name":"Vault - by CommanderRoot","common":false,"more_info_link":"https://vault.root-space.eu/","stream_key_link":"https://vault.root-space.eu/recordings","servers":[{"name":"EU - Central","url":"rtmp://ingest-eu-central.vault.root-space.eu/app"},{"name":"US - West","url":"rtmp://ingest-us-west.vault.root-space.eu/app"}],"protocol":"RTMP","supported video codecs":["h264"],"supported audio codecs":["aac"],"recommended":{"keyint":2,"max video bitrate":7800,"max audio bitrate":320,"x264opts":"scenecut=0"}},{"name":"CHZZK","common":false,"stream_key_link":"https://studio.chzzk.naver.com/setting","servers":[{"name":"Default","url":"rtmp://global-rtmp.lip2.navercorp.com:8080/relay"}],"supported video codecs":["h264"],"recommended":{"keyint":1,"bframes":0,"max fps":60,"max video bitrate":8000,"max audio bitrate":192,"x264opts":"tune=zerolatency scenecut=0","supported resolutions":["1920x1080"]}},{"name":"Streamway","common":false,"more_info_link":"https://support.streamway.in/how-to-connect-obs-studio-to-streamway/","stream_key_link":"https://app.streamway.in/broadcasts","servers":[{"name":"Primary","url":"rtmp://injest.streamway.in/LiveApp"},{"name":"Backup","url":"rtmps://bkp.streamway.in:443/live"}],"protocol":"RTMP","supported video codecs":["h264"],"recommended":{"keyint":2}},{"name":"SharePlay.tv","common":false,"stream_key_link":"https://playstudio.shareplay.tv/stream/settings","servers":[{"name":"Atlanta, Georgia, USA","url":"rtmp://live-us-atl-stream.shareplay.tv"}],"supported video codecs":["h264"],"recommended":{"keyint":2,"max video bitrate":12000,"max audio bitrate":320}},{"name":"sheeta","common":false,"more_info_link":"https://partner-support.sheeta.com/hc/ja/articles/4404573942425-%E7%94%9F%E6%94%BE%E9%80%81%E3%81%AE%E9%85%8D%E4%BF%A1%E6%96%B9%E6%B3%95","servers":[{"name":"Default","url":"rtmp://lsm.sheeta.com:1935/lsm"}],"protocol":"RTMP","supported video codecs":["h264"],"supported audio codecs":["aac"],"recommended":{"keyint":1,"profile":"main","supported resolutions":["1920x1080","1280x720","854x480","640x480"],"bitrate matrix":[{"res":"1920x1080","fps":30,"max bitrate":6000},{"res":"1280x720","fps":30,"max bitrate":4700},{"res":"854x480","fps":30,"max bitrate":3400},{"res":"640x480","fps":30,"max bitrate":3400},{"res":"1920x1080","fps":60,"max bitrate":9000},{"res":"1280x720","fps":60,"max bitrate":7000},{"res":"854x480","fps":60,"max bitrate":5000},{"res":"640x480","fps":60,"max bitrate":5000}],"max fps":60,"max video bitrate":9000,"max audio bitrate":512,"x264opts":"scenecut=0","output":"rtmp_output"}},{"name":"Amazon IVS","supported video codecs":["h264"],"servers":[{"name":"Asia: China, Hong Kong (6) (RTMPS)","url":"rtmps://hkg06.contribute.live-video.net/app"},{"name":"Asia: India, Bangalore (1) (RTMPS)","url":"rtmps://blr01.contribute.live-video.net/app"},{"name":"Asia: India, Chennai (RTMPS)","url":"rtmps://maa01.contribute.live-video.net/app"},{"name":"Asia: India, Hyderabad (1) (RTMPS)","url":"rtmps://hyd01.contribute.live-video.net/app"},{"name":"Asia: India, Mumbai (RTMPS)","url":"rtmps://bom01.contribute.live-video.net/app"},{"name":"Asia: India, New Delhi (RTMPS)","url":"rtmps://del01.contribute.live-video.net/app"},{"name":"Asia: Indonesia, Cikarang Barat (1) (RTMPS)","url":"rtmps://jkt01.contribute.live-video.net/app"},{"name":"Asia: Indonesia, Jakarta (2) (RTMPS)","url":"rtmps://jkt02.contribute.live-video.net/app"},{"name":"Asia: Japan, Osaka (1) (RTMPS)","url":"rtmps://osa01.contribute.live-video.net/app"},{"name":"Asia: Japan, Tokyo (3) (RTMPS)","url":"rtmps://tyo03.contribute.live-video.net/app"},{"name":"Asia: Japan, Tokyo (5) (RTMPS)","url":"rtmps://tyo05.contribute.live-video.net/app"},{"name":"Asia: Manila, Philippines (1) (RTMPS)","url":"rtmps://mnl01.contribute.live-video.net/app"},{"name":"Asia: Singapore (1) (RTMPS)","url":"rtmps://sin01.contribute.live-video.net/app"},{"name":"Asia: Singapore (4) (RTMPS)","url":"rtmps://sin04.contribute.live-video.net/app"},{"name":"Asia: South Korea, Seoul (3) (RTMPS)","url":"rtmps://sel03.contribute.live-video.net/app"},{"name":"Asia: South Korea, Seoul (4) (RTMPS)","url":"rtmps://sel04.contribute.live-video.net/app"},{"name":"Asia: Taiwan, Taipei (1) (RTMPS)","url":"rtmps://tpe01.contribute.live-video.net/app"},{"name":"Asia: Taiwan, Taipei (3) (RTMPS)","url":"rtmps://tpe03.contribute.live-video.net/app"},{"name":"Asia: Thailand, Bangkok (2) (RTMPS)","url":"rtmps://bkk02.contribute.live-video.net/app"},{"name":"Europe: Austria, Vienna (2) (RTMPS)","url":"rtmps://vie02.contribute.live-video.net/app"},{"name":"Europe: Czech Republic, Prague (RTMPS)","url":"rtmps://prg03.contribute.live-video.net/app"},{"name":"Europe: Denmark, Copenhagen (RTMPS)","url":"rtmps://cph.contribute.live-video.net/app"},{"name":"Europe: Finland, Helsinki (3) (RTMPS)","url":"rtmps://hel03.contribute.live-video.net/app"},{"name":"Europe: France, Marseille (RTMPS)","url":"rtmps://mrs.contribute.live-video.net/app"},{"name":"Europe: France, Marseille (2) (RTMPS)","url":"rtmps://mrs02.contribute.live-video.net/app"},{"name":"Europe: France, Paris (10) (RTMPS)","url":"rtmps://cdg10.contribute.live-video.net/app"},{"name":"Europe: France, Paris (2) (RTMPS)","url":"rtmps://cdg02.contribute.live-video.net/app"},{"name":"Europe: Germany, Berlin (RTMPS)","url":"rtmps://ber.contribute.live-video.net/app"},{"name":"Europe: Germany, Dusseldorf (1) (RTMPS)","url":"rtmps://dus01.contribute.live-video.net/app"},{"name":"Europe: Germany, Frankfurt (2) (RTMPS)","url":"rtmps://fra02.contribute.live-video.net/app"},{"name":"Europe: Germany, Frankfurt (5) (RTMPS)","url":"rtmps://fra05.contribute.live-video.net/app"},{"name":"Europe: Germany, Frankfurt (6) (RTMPS)","url":"rtmps://fra06.contribute.live-video.net/app"},{"name":"Europe: Germany, Munich (1) (RTMPS)","url":"rtmps://muc01.contribute.live-video.net/app"},{"name":"Europe: Italy, Milan (2) (RTMPS)","url":"rtmps://mil02.contribute.live-video.net/app"},{"name":"Europe: Netherlands, Amsterdam (2) (RTMPS)","url":"rtmps://ams02.contribute.live-video.net/app"},{"name":"Europe: Netherlands, Amsterdam (3) (RTMPS)","url":"rtmps://ams03.contribute.live-video.net/app"},{"name":"Europe: Norway, Oslo (RTMPS)","url":"rtmps://osl.contribute.live-video.net/app"},{"name":"Europe: Poland, Warsaw (2) (RTMPS)","url":"rtmps://waw02.contribute.live-video.net/app"},{"name":"Europe: Spain, Madrid (1) (RTMPS)","url":"rtmps://mad01.contribute.live-video.net/app"},{"name":"Europe: Spain, Madrid (2) (RTMPS)","url":"rtmps://mad02.contribute.live-video.net/app"},{"name":"Europe: Sweden, Stockholm (3) (RTMPS)","url":"rtmps://arn03.contribute.live-video.net/app"},{"name":"Europe: Sweden, Stockholm (4) (RTMPS)","url":"rtmps://arn04.contribute.live-video.net/app"},{"name":"Europe: UK, London (3) (RTMPS)","url":"rtmps://lhr03.contribute.live-video.net/app"},{"name":"Europe: UK, London (4) (RTMPS)","url":"rtmps://lhr04.contribute.live-video.net/app"},{"name":"Europe: UK, London (8) (RTMPS)","url":"rtmps://lhr08.contribute.live-video.net/app"},{"name":"NA: Canada, Quebec (RTMPS)","url":"rtmps://ymq03.contribute.live-video.net/app"},{"name":"NA: Canada, Toronto (RTMPS)","url":"rtmps://yto.contribute.live-video.net/app"},{"name":"NA: Mexico, Queretaro (3) (RTMPS)","url":"rtmps://qro03.contribute.live-video.net/app"},{"name":"NA: Mexico, Queretaro (4) (RTMPS)","url":"rtmps://qro04.contribute.live-video.net/app"},{"name":"Oceania: Australia, Sydney (2) (RTMPS)","url":"rtmps://syd02.contribute.live-video.net/app"},{"name":"Oceania: Australia, Sydney (3) (RTMPS)","url":"rtmps://syd03.contribute.live-video.net/app"},{"name":"South America: Brazil, Fortaleza (1) (RTMPS)","url":"rtmps://for01.contribute.live-video.net/app"},{"name":"South America: Brazil, Rio de Janeiro (3) (RTMPS)","url":"rtmps://rio03.contribute.live-video.net/app"},{"name":"South America: Brazil, Rio de Janeiro (4) (RTMPS)","url":"rtmps://rio04.contribute.live-video.net/app"},{"name":"South America: Brazil, Sao Paulo (RTMPS)","url":"rtmps://sao03.contribute.live-video.net/app"},{"name":"South America: Brazil, Sao Paulo (5) (RTMPS)","url":"rtmps://sao05.contribute.live-video.net/app"},{"name":"South America: Buenos Aires, Argentina (1) (RTMPS)","url":"rtmps://bue01.contribute.live-video.net/app"},{"name":"South America: Colombia, Bogota (1) (RTMPS)","url":"rtmps://bog01.contribute.live-video.net/app"},{"name":"US Central: Dallas, TX (RTMPS)","url":"rtmps://dfw.contribute.live-video.net/app"},{"name":"US Central: Dallas, TX (2) (RTMPS)","url":"rtmps://dfw02.contribute.live-video.net/app"},{"name":"US Central: Denver, CO (52) (RTMPS)","url":"rtmps://den52.contribute.live-video.net/app"},{"name":"US Central: Garland, TX (56) (RTMPS)","url":"rtmps://dfw56.contribute.live-video.net/app"},{"name":"US Central: Houston, TX (50) (RTMPS)","url":"rtmps://iah50.contribute.live-video.net/app"},{"name":"US East: Ashburn, VA (5) (RTMPS)","url":"rtmps://iad05.contribute.live-video.net/app"},{"name":"US East: Atlanta, GA (RTMPS)","url":"rtmps://atl.contribute.live-video.net/app"},{"name":"US East: Chicago, IL (3) (RTMPS)","url":"rtmps://ord03.contribute.live-video.net/app"},{"name":"US East: Chicago, IL (56) (RTMPS)","url":"rtmps://ord56.contribute.live-video.net/app"},{"name":"US East: McAllen, TX (1) (RTMPS)","url":"rtmps://mfe01.contribute.live-video.net/app"},{"name":"US East: Miami, FL (5) (RTMPS)","url":"rtmps://mia05.contribute.live-video.net/app"},{"name":"US East: New York, NY (RTMPS)","url":"rtmps://jfk.contribute.live-video.net/app"},{"name":"US East: New York, NY (50) (RTMPS)","url":"rtmps://jfk50.contribute.live-video.net/app"},{"name":"US West: Los Angeles, CA (RTMPS)","url":"rtmps://lax.contribute.live-video.net/app"},{"name":"US West: Salt Lake City, UT (RTMPS)","url":"rtmps://slc.contribute.live-video.net/app"},{"name":"US West: San Francisco, CA (RTMPS)","url":"rtmps://sfo.contribute.live-video.net/app"},{"name":"US West: San Jose, California (6) (RTMPS)","url":"rtmps://sjc06.contribute.live-video.net/app"},{"name":"US West: Seattle, WA (RTMPS)","url":"rtmps://sea.contribute.live-video.net/app"},{"name":"US West: Seattle, WA (2) (RTMPS)","url":"rtmps://sea02.contribute.live-video.net/app"},{"name":"Asia: China, Hong Kong (6) (RTMP)","url":"rtmp://hkg06.contribute.live-video.net/app"},{"name":"Asia: India, Bangalore (1) (RTMP)","url":"rtmp://blr01.contribute.live-video.net/app"},{"name":"Asia: India, Chennai (RTMP)","url":"rtmp://maa01.contribute.live-video.net/app"},{"name":"Asia: India, Hyderabad (1) (RTMP)","url":"rtmp://hyd01.contribute.live-video.net/app"},{"name":"Asia: India, Mumbai (RTMP)","url":"rtmp://bom01.contribute.live-video.net/app"},{"name":"Asia: India, New Delhi (RTMP)","url":"rtmp://del01.contribute.live-video.net/app"},{"name":"Asia: Indonesia, Cikarang Barat (1) (RTMP)","url":"rtmp://jkt01.contribute.live-video.net/app"},{"name":"Asia: Indonesia, Jakarta (2) (RTMP)","url":"rtmp://jkt02.contribute.live-video.net/app"},{"name":"Asia: Japan, Osaka (1) (RTMP)","url":"rtmp://osa01.contribute.live-video.net/app"},{"name":"Asia: Japan, Tokyo (3) (RTMP)","url":"rtmp://tyo03.contribute.live-video.net/app"},{"name":"Asia: Japan, Tokyo (5) (RTMP)","url":"rtmp://tyo05.contribute.live-video.net/app"},{"name":"Asia: Manila, Philippines (1) (RTMP)","url":"rtmp://mnl01.contribute.live-video.net/app"},{"name":"Asia: Singapore (1) (RTMP)","url":"rtmp://sin01.contribute.live-video.net/app"},{"name":"Asia: Singapore (4) (RTMP)","url":"rtmp://sin04.contribute.live-video.net/app"},{"name":"Asia: South Korea, Seoul (3) (RTMP)","url":"rtmp://sel03.contribute.live-video.net/app"},{"name":"Asia: South Korea, Seoul (4) (RTMP)","url":"rtmp://sel04.contribute.live-video.net/app"},{"name":"Asia: Taiwan, Taipei (1) (RTMP)","url":"rtmp://tpe01.contribute.live-video.net/app"},{"name":"Asia: Taiwan, Taipei (3) (RTMP)","url":"rtmp://tpe03.contribute.live-video.net/app"},{"name":"Asia: Thailand, Bangkok (2) (RTMP)","url":"rtmp://bkk02.contribute.live-video.net/app"},{"name":"Europe: Austria, Vienna (2) (RTMP)","url":"rtmp://vie02.contribute.live-video.net/app"},{"name":"Europe: Czech Republic, Prague (RTMP)","url":"rtmp://prg03.contribute.live-video.net/app"},{"name":"Europe: Denmark, Copenhagen (RTMP)","url":"rtmp://cph.contribute.live-video.net/app"},{"name":"Europe: Finland, Helsinki (3) (RTMP)","url":"rtmp://hel03.contribute.live-video.net/app"},{"name":"Europe: France, Marseille (RTMP)","url":"rtmp://mrs.contribute.live-video.net/app"},{"name":"Europe: France, Marseille (2) (RTMP)","url":"rtmp://mrs02.contribute.live-video.net/app"},{"name":"Europe: France, Paris (10) (RTMP)","url":"rtmp://cdg10.contribute.live-video.net/app"},{"name":"Europe: France, Paris (2) (RTMP)","url":"rtmp://cdg02.contribute.live-video.net/app"},{"name":"Europe: Germany, Berlin (RTMP)","url":"rtmp://ber.contribute.live-video.net/app"},{"name":"Europe: Germany, Dusseldorf (1) (RTMP)","url":"rtmp://dus01.contribute.live-video.net/app"},{"name":"Europe: Germany, Frankfurt (2) (RTMP)","url":"rtmp://fra02.contribute.live-video.net/app"},{"name":"Europe: Germany, Frankfurt (5) (RTMP)","url":"rtmp://fra05.contribute.live-video.net/app"},{"name":"Europe: Germany, Frankfurt (6) (RTMP)","url":"rtmp://fra06.contribute.live-video.net/app"},{"name":"Europe: Germany, Munich (1) (RTMP)","url":"rtmp://muc01.contribute.live-video.net/app"},{"name":"Europe: Italy, Milan (2) (RTMP)","url":"rtmp://mil02.contribute.live-video.net/app"},{"name":"Europe: Netherlands, Amsterdam (2) (RTMP)","url":"rtmp://ams02.contribute.live-video.net/app"},{"name":"Europe: Netherlands, Amsterdam (3) (RTMP)","url":"rtmp://ams03.contribute.live-video.net/app"},{"name":"Europe: Norway, Oslo (RTMP)","url":"rtmp://osl.contribute.live-video.net/app"},{"name":"Europe: Poland, Warsaw (2) (RTMP)","url":"rtmp://waw02.contribute.live-video.net/app"},{"name":"Europe: Spain, Madrid (1) (RTMP)","url":"rtmp://mad01.contribute.live-video.net/app"},{"name":"Europe: Spain, Madrid (2) (RTMP)","url":"rtmp://mad02.contribute.live-video.net/app"},{"name":"Europe: Sweden, Stockholm (3) (RTMP)","url":"rtmp://arn03.contribute.live-video.net/app"},{"name":"Europe: Sweden, Stockholm (4) (RTMP)","url":"rtmp://arn04.contribute.live-video.net/app"},{"name":"Europe: UK, London (3) (RTMP)","url":"rtmp://lhr03.contribute.live-video.net/app"},{"name":"Europe: UK, London (4) (RTMP)","url":"rtmp://lhr04.contribute.live-video.net/app"},{"name":"Europe: UK, London (8) (RTMP)","url":"rtmp://lhr08.contribute.live-video.net/app"},{"name":"NA: Canada, Quebec (RTMP)","url":"rtmp://ymq03.contribute.live-video.net/app"},{"name":"NA: Canada, Toronto (RTMP)","url":"rtmp://yto.contribute.live-video.net/app"},{"name":"NA: Mexico, Queretaro (3) (RTMP)","url":"rtmp://qro03.contribute.live-video.net/app"},{"name":"NA: Mexico, Queretaro (4) (RTMP)","url":"rtmp://qro04.contribute.live-video.net/app"},{"name":"Oceania: Australia, Sydney (2) (RTMP)","url":"rtmp://syd02.contribute.live-video.net/app"},{"name":"Oceania: Australia, Sydney (3) (RTMP)","url":"rtmp://syd03.contribute.live-video.net/app"},{"name":"South America: Brazil, Fortaleza (1) (RTMP)","url":"rtmp://for01.contribute.live-video.net/app"},{"name":"South America: Brazil, Rio de Janeiro (3) (RTMP)","url":"rtmp://rio03.contribute.live-video.net/app"},{"name":"South America: Brazil, Rio de Janeiro (4) (RTMP)","url":"rtmp://rio04.contribute.live-video.net/app"},{"name":"South America: Brazil, Sao Paulo (RTMP)","url":"rtmp://sao03.contribute.live-video.net/app"},{"name":"South America: Brazil, Sao Paulo (5) (RTMP)","url":"rtmp://sao05.contribute.live-video.net/app"},{"name":"South America: Buenos Aires, Argentina (1) (RTMP)","url":"rtmp://bue01.contribute.live-video.net/app"},{"name":"South America: Colombia, Bogota (1) (RTMP)","url":"rtmp://bog01.contribute.live-video.net/app"},{"name":"US Central: Dallas, TX (RTMP)","url":"rtmp://dfw.contribute.live-video.net/app"},{"name":"US Central: Dallas, TX (2) (RTMP)","url":"rtmp://dfw02.contribute.live-video.net/app"},{"name":"US Central: Denver, CO (52) (RTMP)","url":"rtmp://den52.contribute.live-video.net/app"},{"name":"US Central: Garland, TX (56) (RTMP)","url":"rtmp://dfw56.contribute.live-video.net/app"},{"name":"US Central: Houston, TX (50) (RTMP)","url":"rtmp://iah50.contribute.live-video.net/app"},{"name":"US East: Ashburn, VA (5) (RTMP)","url":"rtmp://iad05.contribute.live-video.net/app"},{"name":"US East: Atlanta, GA (RTMP)","url":"rtmp://atl.contribute.live-video.net/app"},{"name":"US East: Chicago, IL (3) (RTMP)","url":"rtmp://ord03.contribute.live-video.net/app"},{"name":"US East: Chicago, IL (56) (RTMP)","url":"rtmp://ord56.contribute.live-video.net/app"},{"name":"US East: McAllen, TX (1) (RTMP)","url":"rtmp://mfe01.contribute.live-video.net/app"},{"name":"US East: Miami, FL (5) (RTMP)","url":"rtmp://mia05.contribute.live-video.net/app"},{"name":"US East: New York, NY (RTMP)","url":"rtmp://jfk.contribute.live-video.net/app"},{"name":"US East: New York, NY (50) (RTMP)","url":"rtmp://jfk50.contribute.live-video.net/app"},{"name":"US West: Los Angeles, CA (RTMP)","url":"rtmp://lax.contribute.live-video.net/app"},{"name":"US West: Salt Lake City, UT (RTMP)","url":"rtmp://slc.contribute.live-video.net/app"},{"name":"US West: San Francisco, CA (RTMP)","url":"rtmp://sfo.contribute.live-video.net/app"},{"name":"US West: San Jose, California (6) (RTMP)","url":"rtmp://sjc06.contribute.live-video.net/app"},{"name":"US West: Seattle, WA (RTMP)","url":"rtmp://sea.contribute.live-video.net/app"},{"name":"US West: Seattle, WA (2) (RTMP)","url":"rtmp://sea02.contribute.live-video.net/app"}],"multitrack_video_configuration_url":"https://ingest.contribute.live-video.net/api/v3/GetClientConfiguration","recommended":{"keyint":2,"x264opts":"scenecut=0"}},{"name":"Dolby Millicast","common":false,"more_info_link":"https://docs.optiview.dolby.com/millicast/using-obs/","stream_key_link":"https://streaming.dolby.io","multitrack_video_configuration_url":"https://director.millicast.com/api/multitrackvideo/configuration","multitrack_video_name":"Enhanced Broadcasting","multitrack_video_learn_more_link":"https://docs.optiview.dolby.com/millicast/obs-enhanced-broadcasting-multitrack-video/","servers":[{"name":"Global (RTMPS)","url":"rtmps://rtmp-auto.millicast.com:443/v2/pub"},{"name":"Global (RTMP)","url":"rtmp://rtmp-auto.millicast.com:1935/v2/pub"},{"name":"Bangalore, India (RTMPS)","url":"rtmps://rtmp-blr-1.millicast.com:443/v2/pub"},{"name":"Bangalore, India (RTMP)","url":"rtmp://rtmp-blr-1.millicast.com:1935/v2/pub"},{"name":"Frankfurt, Germany (RTMPS)","url":"rtmps://rtmp-fra-1.millicast.com:443/v2/pub"},{"name":"Frankfurt, Germany (RTMP)","url":"rtmp://rtmp-fra-1.millicast.com:1935/v2/pub"},{"name":"Ashburn, Virginia, USA (RTMPS)","url":"rtmps://rtmp-iad-1.millicast.com:443/v2/pub"},{"name":"Ashburn, Virginia, USA (RTMP)","url":"rtmp://rtmp-iad-1.millicast.com:1935/v2/pub"},{"name":"London, England (RTMPS)","url":"rtmps://rtmp-lon-1.millicast.com:443/v2/pub"},{"name":"London, England (RTMP)","url":"rtmp://rtmp-lon-1.millicast.com:1935/v2/pub"},{"name":"Phoenix, AZ, USA (RTMPS)","url":"rtmps://rtmp-phx-1.millicast.com:443/v2/pub"},{"name":"Phoenix, AZ, USA (RTMP)","url":"rtmp://rtmp-phx-1.millicast.com:1935/v2/pub"},{"name":"Sao Paulo, Brazil (RTMPS)","url":"rtmps://rtmp-sao-1.millicast.com:443/v2/pub"},{"name":"Sao Paulo, Brazil (RTMP)","url":"rtmp://rtmp-sao-1.millicast.com:1935/v2/pub"},{"name":"Singapore (RTMPS)","url":"rtmps://rtmp-sgp-1.millicast.com:443/v2/pub"},{"name":"Singapore (RTMP)","url":"rtmp://rtmp-sgp-1.millicast.com:1935/v2/pub"},{"name":"Sydney, Australia (RTMPS)","url":"rtmps://rtmp-syd-1.millicast.com:443/v2/pub"},{"name":"Sydney, Australia (RTMP)","url":"rtmp://rtmp-syd-1.millicast.com:1935/v2/pub"}],"supported video codecs":["h264","hevc","av1"],"recommended":{"keyint":1,"bframes":0}},{"name":"NFHS Network","more_info_link":"https://support.nfhsnetwork.com/hc/en-us","stream_key_link":"https://console.nfhsnetwork.com/nfhs-events/","servers":[{"name":"Manual Broadcasts","url":"rtmp://video.nfhsnetwork.com/manual"}],"recommended":{"supported resolutions":["1920x1080","1280x720","640x360"],"max fps":60},"supported video codecs":["h264"]},{"name":"VRCDN - Live","more_info_link":"https://vrcdn.live","servers":[{"name":"Automatic","url":"rtmp://ingest.vrcdn.live/live"}],"supported video codecs":["h264"],"recommended":{"keyint":1,"max video bitrate":6000}}]} diff --git a/modules/home/common/obs-config/plugin_config/rtmp-services/twitch_ingests.json b/modules/home/common/obs-config/plugin_config/rtmp-services/twitch_ingests.json new file mode 100644 index 0000000..71df89e --- /dev/null +++ b/modules/home/common/obs-config/plugin_config/rtmp-services/twitch_ingests.json @@ -0,0 +1,454 @@ +{ + "ingests": [ + { + "_id": 0, + "availability": 1.0, + "default": false, + "name": "Default", + "url_template": "rtmp://ingest.global-contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://ingest.global-contribute.live-video.net/app/{stream_key}", + "priority": 0 + }, + { + "_id": 1, + "availability": 1.0, + "default": false, + "name": "US East: Miami, FL (5)", + "url_template": "rtmp://mia05.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://mia05.contribute.live-video.net/app/{stream_key}", + "priority": 1 + }, + { + "_id": 2, + "availability": 1.0, + "default": false, + "name": "US East: Atlanta, GA", + "url_template": "rtmp://atl.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://atl.contribute.live-video.net/app/{stream_key}", + "priority": 2 + }, + { + "_id": 3, + "availability": 1.0, + "default": false, + "name": "US Central: Houston, TX (50)", + "url_template": "rtmp://iah50.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://iah50.contribute.live-video.net/app/{stream_key}", + "priority": 3 + }, + { + "_id": 4, + "availability": 1.0, + "default": false, + "name": "US East: Ashburn, VA (5)", + "url_template": "rtmp://iad05.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://iad05.contribute.live-video.net/app/{stream_key}", + "priority": 4 + }, + { + "_id": 5, + "availability": 1.0, + "default": false, + "name": "US Central: Garland, TX (56)", + "url_template": "rtmp://dfw56.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://dfw56.contribute.live-video.net/app/{stream_key}", + "priority": 5 + }, + { + "_id": 6, + "availability": 1.0, + "default": false, + "name": "US Central: Dallas, TX (2)", + "url_template": "rtmp://dfw02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://dfw02.contribute.live-video.net/app/{stream_key}", + "priority": 6 + }, + { + "_id": 7, + "availability": 1.0, + "default": false, + "name": "US East: McAllen, TX (1)", + "url_template": "rtmp://mfe01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://mfe01.contribute.live-video.net/app/{stream_key}", + "priority": 7 + }, + { + "_id": 8, + "availability": 1.0, + "default": false, + "name": "US East: New York, NY", + "url_template": "rtmp://jfk.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://jfk.contribute.live-video.net/app/{stream_key}", + "priority": 8 + }, + { + "_id": 9, + "availability": 1.0, + "default": false, + "name": "US East: Chicago, IL (56)", + "url_template": "rtmp://ord56.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://ord56.contribute.live-video.net/app/{stream_key}", + "priority": 9 + }, + { + "_id": 10, + "availability": 1.0, + "default": false, + "name": "US East: Chicago, IL (3)", + "url_template": "rtmp://ord03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://ord03.contribute.live-video.net/app/{stream_key}", + "priority": 10 + }, + { + "_id": 11, + "availability": 1.0, + "default": false, + "name": "NA: Canada, Toronto", + "url_template": "rtmp://yto.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://yto.contribute.live-video.net/app/{stream_key}", + "priority": 11 + }, + { + "_id": 12, + "availability": 1.0, + "default": false, + "name": "NA: Mexico, Queretaro (3)", + "url_template": "rtmp://qro03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://qro03.contribute.live-video.net/app/{stream_key}", + "priority": 12 + }, + { + "_id": 13, + "availability": 1.0, + "default": false, + "name": "NA: Canada, Quebec", + "url_template": "rtmp://ymq03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://ymq03.contribute.live-video.net/app/{stream_key}", + "priority": 13 + }, + { + "_id": 14, + "availability": 1.0, + "default": false, + "name": "US Central: Denver, CO (52)", + "url_template": "rtmp://den52.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://den52.contribute.live-video.net/app/{stream_key}", + "priority": 14 + }, + { + "_id": 15, + "availability": 1.0, + "default": false, + "name": "South America: Colombia, Bogota (1)", + "url_template": "rtmp://bog01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://bog01.contribute.live-video.net/app/{stream_key}", + "priority": 15 + }, + { + "_id": 16, + "availability": 1.0, + "default": false, + "name": "US West: Los Angeles, CA", + "url_template": "rtmp://lax.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://lax.contribute.live-video.net/app/{stream_key}", + "priority": 16 + }, + { + "_id": 17, + "availability": 1.0, + "default": false, + "name": "US West: San Jose, California (6)", + "url_template": "rtmp://sjc06.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://sjc06.contribute.live-video.net/app/{stream_key}", + "priority": 17 + }, + { + "_id": 18, + "availability": 1.0, + "default": false, + "name": "US West: Seattle, WA (2)", + "url_template": "rtmp://sea02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://sea02.contribute.live-video.net/app/{stream_key}", + "priority": 18 + }, + { + "_id": 19, + "availability": 1.0, + "default": false, + "name": "South America: Brazil, Sao Paulo (10)", + "url_template": "rtmp://sae10.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://sae10.contribute.live-video.net/app/{stream_key}", + "priority": 19 + }, + { + "_id": 20, + "availability": 1.0, + "default": false, + "name": "Europe: UK, London (8)", + "url_template": "rtmp://lhr08.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://lhr08.contribute.live-video.net/app/{stream_key}", + "priority": 20 + }, + { + "_id": 21, + "availability": 1.0, + "default": false, + "name": "Europe: UK, London (3)", + "url_template": "rtmp://lhr03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://lhr03.contribute.live-video.net/app/{stream_key}", + "priority": 21 + }, + { + "_id": 22, + "availability": 1.0, + "default": false, + "name": "Europe: Spain, Madrid (2)", + "url_template": "rtmp://mad02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://mad02.contribute.live-video.net/app/{stream_key}", + "priority": 22 + }, + { + "_id": 23, + "availability": 1.0, + "default": false, + "name": "Europe: Spain, Madrid (1)", + "url_template": "rtmp://mad01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://mad01.contribute.live-video.net/app/{stream_key}", + "priority": 23 + }, + { + "_id": 24, + "availability": 1.0, + "default": false, + "name": "Europe: France, Paris (2)", + "url_template": "rtmp://cdg02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://cdg02.contribute.live-video.net/app/{stream_key}", + "priority": 24 + }, + { + "_id": 25, + "availability": 1.0, + "default": false, + "name": "Europe: France, Paris (10)", + "url_template": "rtmp://cdg10.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://cdg10.contribute.live-video.net/app/{stream_key}", + "priority": 25 + }, + { + "_id": 26, + "availability": 1.0, + "default": false, + "name": "Europe: Netherlands, Amsterdam (3)", + "url_template": "rtmp://ams03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://ams03.contribute.live-video.net/app/{stream_key}", + "priority": 26 + }, + { + "_id": 27, + "availability": 1.0, + "default": false, + "name": "Europe: Netherlands, Amsterdam (2)", + "url_template": "rtmp://ams02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://ams02.contribute.live-video.net/app/{stream_key}", + "priority": 27 + }, + { + "_id": 28, + "availability": 1.0, + "default": false, + "name": "Europe: Norway, Oslo", + "url_template": "rtmp://osl.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://osl.contribute.live-video.net/app/{stream_key}", + "priority": 28 + }, + { + "_id": 29, + "availability": 1.0, + "default": false, + "name": "Europe: Germany, Dusseldorf (1)", + "url_template": "rtmp://dus01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://dus01.contribute.live-video.net/app/{stream_key}", + "priority": 29 + }, + { + "_id": 30, + "availability": 1.0, + "default": false, + "name": "Europe: Germany, Frankfurt (5)", + "url_template": "rtmp://fra05.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://fra05.contribute.live-video.net/app/{stream_key}", + "priority": 30 + }, + { + "_id": 31, + "availability": 1.0, + "default": false, + "name": "Europe: Germany, Frankfurt (2)", + "url_template": "rtmp://fra02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://fra02.contribute.live-video.net/app/{stream_key}", + "priority": 31 + }, + { + "_id": 32, + "availability": 1.0, + "default": false, + "name": "Europe: France, Marseille (2)", + "url_template": "rtmp://mrs02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://mrs02.contribute.live-video.net/app/{stream_key}", + "priority": 32 + }, + { + "_id": 33, + "availability": 1.0, + "default": false, + "name": "Europe: Denmark, Copenhagen", + "url_template": "rtmp://cph.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://cph.contribute.live-video.net/app/{stream_key}", + "priority": 33 + }, + { + "_id": 34, + "availability": 1.0, + "default": false, + "name": "Europe: Sweden, Stockholm (3)", + "url_template": "rtmp://arn03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://arn03.contribute.live-video.net/app/{stream_key}", + "priority": 34 + }, + { + "_id": 35, + "availability": 1.0, + "default": false, + "name": "Europe: Sweden, Stockholm (4)", + "url_template": "rtmp://arn04.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://arn04.contribute.live-video.net/app/{stream_key}", + "priority": 35 + }, + { + "_id": 36, + "availability": 1.0, + "default": false, + "name": "Europe: Italy, Milan (2)", + "url_template": "rtmp://mil02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://mil02.contribute.live-video.net/app/{stream_key}", + "priority": 36 + }, + { + "_id": 37, + "availability": 1.0, + "default": false, + "name": "Europe: Germany, Munich (1)", + "url_template": "rtmp://muc01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://muc01.contribute.live-video.net/app/{stream_key}", + "priority": 37 + }, + { + "_id": 38, + "availability": 1.0, + "default": false, + "name": "Europe: Finland, Helsinki (3)", + "url_template": "rtmp://hel03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://hel03.contribute.live-video.net/app/{stream_key}", + "priority": 38 + }, + { + "_id": 39, + "availability": 1.0, + "default": false, + "name": "Europe: Austria, Vienna (2)", + "url_template": "rtmp://vie02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://vie02.contribute.live-video.net/app/{stream_key}", + "priority": 39 + }, + { + "_id": 40, + "availability": 1.0, + "default": false, + "name": "Europe: Poland, Warsaw (2)", + "url_template": "rtmp://waw02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://waw02.contribute.live-video.net/app/{stream_key}", + "priority": 40 + }, + { + "_id": 41, + "availability": 1.0, + "default": false, + "name": "Asia: Japan, Narita (10)", + "url_template": "rtmp://apn10.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://apn10.contribute.live-video.net/app/{stream_key}", + "priority": 41 + }, + { + "_id": 42, + "availability": 1.0, + "default": false, + "name": "Asia: Japan, Osaka (1)", + "url_template": "rtmp://osa01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://osa01.contribute.live-video.net/app/{stream_key}", + "priority": 42 + }, + { + "_id": 43, + "availability": 1.0, + "default": false, + "name": "Asia: South Korea, Seoul (20)", + "url_template": "rtmp://apn20.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://apn20.contribute.live-video.net/app/{stream_key}", + "priority": 43 + }, + { + "_id": 44, + "availability": 1.0, + "default": false, + "name": "Asia: Taiwan, Taipei (1)", + "url_template": "rtmp://tpe01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://tpe01.contribute.live-video.net/app/{stream_key}", + "priority": 44 + }, + { + "_id": 45, + "availability": 1.0, + "default": false, + "name": "Asia: India, Mumbai (30)", + "url_template": "rtmp://aps30.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://aps30.contribute.live-video.net/app/{stream_key}", + "priority": 45 + }, + { + "_id": 46, + "availability": 1.0, + "default": false, + "name": "Asia: China, Hong Kong (6)", + "url_template": "rtmp://hkg06.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://hkg06.contribute.live-video.net/app/{stream_key}", + "priority": 46 + }, + { + "_id": 47, + "availability": 1.0, + "default": false, + "name": "Asia: Manila, Philippines (1)", + "url_template": "rtmp://mnl01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://mnl01.contribute.live-video.net/app/{stream_key}", + "priority": 47 + }, + { + "_id": 48, + "availability": 1.0, + "default": false, + "name": "Asia Southeast: Sydney (20)", + "url_template": "rtmp://aps20.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://aps20.contribute.live-video.net/app/{stream_key}", + "priority": 48 + }, + { + "_id": 49, + "availability": 1.0, + "default": false, + "name": "Asia Southeast: Singapore (10)", + "url_template": "rtmp://aps10.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://aps10.contribute.live-video.net/app/{stream_key}", + "priority": 49 + } + ] +} diff --git a/modules/home/common/obs-config/profiler_data/2025-08-29 17-47-15.csv.gz b/modules/home/common/obs-config/profiler_data/2025-08-29 17-47-15.csv.gz new file mode 100644 index 0000000000000000000000000000000000000000..a1fd29b4a0acd477964587df8e3eb5671162b6a5 GIT binary patch literal 56102 zcmXVX1z4NC_cl;y(E`KW-Q9h|Hgvd_p&Kw@xJ!|Z;V@hWgJHuN4u#?FFnmaHE3RMP z|L^N{UrkQV9eI+I=gO0u(0#>3`M)2azI`|@cktUUv1@%FcGO^zIgYvL2?(Io{~Z9Y zzGmq(MU^%AMI~qL2-GA{?4C6M5NP|vh>)u>Qv61tg}JYrI2u4<`A3p&tzF{r;q+|p z5pH<0n!PIba3TDB{UDWQIrc0Q807u%?{XUc?BnP6ynnXQPbb&@Fqc(ACnwi-SM_{7 zy?54=cAfW3cH6q0CHpry`|0#)B|cbsaP2_D`1Ur9uCp!p648$z{B(0VUG9Cd7AQM7 zSS#WwxA(9S#Xqbfv9ck}l+xLu@VF%Rd>{OL3zvJ`yXk*^3M*J`>!goSr@ZCg25$A19D!Booy|hC_%k#^7q0sG z!ks0l0sJbt_PdMQjZHY8+_)A+<%+_^6V7L`UtZTe{g%(;_<5@`L4gFbA1}j_@OfPj zxAbCNfL9i9yyHkghTP{%OWC&I`{QwheAy;=zx4UV(5h@-mBM3uiI!I0^L?7wiR_3_ zhPi^?eimY3NoEooP!10O8ukRyO-rK6MWygv;JD)=1J>Jo6zMfUCa zbS&QTaTsP$MMwKA84nkuKUy<0kltSkM!)C`ym^=}c@B8`BSnyGnY**?Zz0z%vo<3% z(^g6+C*9`jNxeO*MYkGod$yM>6P)FDo573VC>p%n8K1a?xa8$-rA^GY1}oh6WR>)H zKHVHYS_bhvv) ze-wkQJzku`OXy?+Z_dxo_HYAj|9rVW9af@idfNG&ch(fa7yP`j(XWMXKhqTI^}KC$ z;3F}&kt5PyQW8(5INjRnle6}scXMe?ftcv}Xelo!=nk=c))JfQJ)pHF zxVpJ?<6P^b9CW=2NAiCmq*DDWTzGFv@25|ok7p|fzg>7|y!u_@U4nh*CM`RiJ2eQ2 zE*{r%SLH1DZOuM!RJJD~wk@6`IRq^G55%6<-JX9-E4BGO3^VlSD(oLa*Dfq?*L@!E z$F3NikINcPeFR{6S9e$1}wCiVIo(yS3;Z0gLBGO>t<@ z-RaGI$*@&c#X&aX#VoizO{wlSj%|J?d0g`OfUH~L{A<2@>eZSg%?3I`|zW5C{+jc;OR zu*a1$KV;l%A0z2CZE}8SJwE2*u)c~;2^*Taf8s`iiq{~e-pI%X@oR^(c&?jr^j~N zG+6TstvD%z-HWY4DfXMLZEAv~DfWT+bHA^Xp`_pFNJ$(leR8Rptz8cL`vwQ5CH9M( zb5uU}#=A~@X?_ry{Ds2>EA z-vTTRKtncvbvAxY-vc+mondXQk;<6g8uE!b8rxtL6ln%5o41zR`D;Ul4qD?HUmwr2 z#@o%v^5K08a$_wsKWi|prhgklf7bYY{?HsvUyhkk6HU+%Ghsj&aEojCZ7~>Mkt&d+ zpemQ4Z{Jb**J@Eer=?HDY7yUb(GsV9GjHBT`CaCTlF>FdRk`r{K>aBbZe-HmL1fYs zwxxkd;{!?UFLA@$ZX12&jEas3-h+=cH3M0aPPe$VevuuV?;H4ndq?c}7;nsNN3R(w zKBdkHYV06!?zqG0J&t|XJ3q3Wl}%ClD!eg#-iNY$QEX`RWw!<&k&2sQQ5VP4Y zd6;(S5W~1VN}tQYE1@FS%6OC8RKcCMd!NF9$Nkdmhni(EyJa!x_jZ<9DnD;|+xv2h zq`$SR^|n-fse7FjITDA|K{bx83$ntc}z&%}5zg=Y%D>p)0`l^G#^qbE2VSA&7?LMP`5uL9t z5(aqpHT&>bqjsqNt*C+i@x&{Whcc2qf0R2TjNPw!6OJVGCtnFWaSB#Mo&(6_E6{Ej zdAwT>81H#Q^b5QmI_FV7a9g~))K~o3Qbqm98{Wppdebp;A*jgB6foO)WscdXju++M z+V_Ix`diJ~w~VJUlA~6FyTH&VZ-$vbjhHS;ycO!^TuyxytgHN%(2h}`0-6Fo?Y%%*C zP3;Y99rWYmS$al#qrsY0851>A(T!1Xmhups(JRTxjbYZ=jjn zSn364PMaOF#9aq8EDi^F?VZq#h5PcCx1$}IcUtSP>$GcgVf5Vm7niPi+P;w3Zyk$ZiTd~5v}-0CwPeuJY9!3NBjH!qbyog5B%Wt(bM2LsNqLs z7fxy}kJ0Tr?BJ^EyHSY$D0&dS)nyg<>dB*et-M|P_IvMCUia1UA(!3R`ZbRMExS{E za0AZQF6d=*_xVNnFL|_a2WcZ(_SpV?#9~$VzZ!V*{VFP2RoxnwYk(mnSULI|A6kDu zyxQv`(CU^OYg))jPA;B8V;xe)8>|N+(R@d1-iQ%+f=EgOKE#Jw4YQMcg}KlGI{Ga0Drbqa^ax^EK2LYUhq&1ZNLXh zr#~$`+=hZWUAnHxeg@3Jb_zYnAKHP_b+D7+omPD5n*gT(!+ZIo0stRGdQNs1x*fl2 z?7Oyjmj;Oc0Uzs=LQ-U2?BI(AmC?*~w%1&}w|{&D;HQF)K7POn>mP!Hmq0nOF4R8N z0al1|5bcNyxD!MbEO816f*v(|td@>A>ik$8B$WOHxv#IgL_;zLLb+*Umv=B_}jal-qc*?fO2cELHBeR z_c$2+MCFs$pkcWMOZElJpRQL=$M*3=KGlJiNI1!jh4%k-#8|qfnNICTp&$fRHr<&9d`|2qA8YZ z3^F4ct74@NR)cQKEL9bkB0F!BkOL5l|D)>(WcHkfHvP5hiF1kX*Xct!Ab!>b@7U78 zwXF!xfKH@|wyx$e4MaQa5}VVBZ0Ox@*xBd4G0-HipUI@=ycu?e=|j63+CS6@>=&b? zmU9@~FHCikt*?3P{JZ`T1KAO-?3A|rxA@EXKl7A$n!+t6^Rk%uuRqN!rxtFnL9`X) z-(p?55DECwcY#(}8J;*TDNk)O6V5vc#?d?CUq$U6-=3F>C2l$Q|@P z11(MrgW3h#>uD<#G@S>#u&-{5+O$HwcEOO&V_5eq)xHT_4CMaLV%Bd-FO;W3Hmw*= z?`shj|4of`zh6jMR`SEM1T{Va)=|~-_yK%f4!eherA32}4?9W#@!$Bs^F6*U+`$(i zXUG~ilUEmSRV^wy_c1#8T08%BLDv9rT9Rg#V%PZJ&#~j!B&oGL#B(uERFDmPoLqRq zh=PChvqq?Z=bt57U9OPUi1BOQ-6uD(=Q8;8X##*>+zCOLg2(MWn`9@UmG-VtmxRin=pF%cE!2MD*zu3aBwdjy@r_3oh z`ak6X5l!y(wxE$O_Bg(K=r+f))}d?L!p0pkTPyH-o|1Y^#D_Kmc4kiH)cN)Q0_lDr zRh3ZF+M*Wnh*V$Ei3A?z{ zW-}SsUx$|)Wq&Hm3EkWTUiX{Uo-sfVyz%1fO`(@8)Z?P!PfnxS&jaf|jUsb&!vD*< z?o$K1>;;aq)rTCNg*+G<<&7YKvr~X7)thm=Vteu6BD_X1 zv@1}dCZN}PGl#M|Ao89}7-?Sc7540SU7w)1ZiM^H*9N4~N?^kaXRK}y$Ihvi^S*K{D8tgH(gHue_!< zs0K5&o$h>@M@T6Sw+moJiQJ|mi^aR!1;4Hx9PFHh=RSXMDA;%SGPK!8sT1qTvyhE& za8T=WaOgd7sAz;x`SoXmUJr#pW?xl15ptWN50i#oJ;gv8Ua|X2D&Va3I|;LHw-&nn z-QczqKX9*8+u7Ki=tl}oHLeaS%Miq{_3<>*;>g7LSJ*E&RV1k;uJvN~ghi8;gPlt{ zlC%1*I&fUcIL}n-u4af6$5u%v+Tbv@IW(bOei6J617p$-ndor-6wjRw9sHfX1R7i- zn%g6tYbB^Bw!t(Rlw5duO(5#dP(i}-lVrA^9_t6bo;fx7*2-mK5yJ#%-~Bq2mG@4b zh%C^qSpoGg=)P~1klYH^}1FB=(cOWEgQ$0VP+YRbWBQF4Di;P z>D|S0R~Ef;G={gb4O6`5KdPxn43kx+;x@DAt0F09q{{5s#lw4j33OLh>e0<{t~lBR8w`Om`*+>dxHztNk_;|HCMNXqc;9)M#4s{qW;n6%`cFDg9&g# z3xD?sM$wEYSmb^G5gr)##A<2n6_i|6Fc`ffp-wGBm$j&E?`w#^Lyrg07X=qp?-PiJ zaXI~PPJ6ee1i2zG@>cCS**LwXbPZhgNbm%Cs$*`Hq@NaNuUvEiW0( z7Z&I<&rWbAVGGk3g^E7tcX{dOziK9_Ud3#TEqv>*hnH1m%H(G+xko2X5@<~LZ4#k&d{mQXY`H4U`r$^T`KIjsh~aBmfK}S zTB4K%ZwF6Y$6{!Vl;c&Fgu0czl5smsQRcqSl?s3kMbVN1|vwKQ%CLa&Y)Rmb2m!Fdj z7`@+?pC^RN!@t_7SifD=p<|M2;pE$h@$vF7m-q6Z)c4Xew^31QTr|dKlA^2|Rg`+J zU2sw+9VU;sBQtgoWcoTw7STdx{FCBaZyAo4pdYKFGK*-_#E}=;bp^RPmGN;{#Zl?-{*$HXo+Sq@K+P|f!hRN{ETT}38&~or%m04P2q!t%< zDR$EvaZ|Y#UM*7`ikIQewL|O+?W^tdx{hB}|Lr#Ja82dQzT{n~@UAVKoSwY=wzn%; z>tSFjUe1#}OB#8crlzD4&D`oOg`8NFRD~iQiOQ5MmaH3%r#4I7(+lL4wE`xut|v=s zWyP}gHEosZhyH30)kb{pg_c(IR90ZI?B;F~*P}5Qoc2 zzbo|g(6h3xn{xJgpX|y_;q5VPV?FQr`(1>8L7Y67K@%C*@>i1M2<2Fl0-ZvGzEv8o zWgMO($1jp-JUS}*Ec=-CFWqr@jDHQt@9`R&CvqDW)q3=QdS%`Gy}*&dR4HxjcVscT ziFJg(b%azaUaLszaoCSmh{h4bIR!E(K2iM!Cp8AjvZg%onvuEWyk5Q5!;S|<5nria`%wy_+j8Zs$7>~4h5r+q&eBIagm%T2KJlxt_L(JBh z*jB^Yc9VSw+uK$~`9Cx(8voKZXu{!Ij@ZVwifFCwHa8L^O^w0eVRQ^ja>GqIewXh- z2GCy;(AFTOVcCRC)9D^EV5JrX*Oa2!+L3c$SHWW+6 zp8l^j^cXUY9-BeMzDu|&?=7ttW*d)W-FJqDg*GA+6IbNDC*Ch9lvFlxMpEs9J*RxE z|DkM;<^pECq=}98d;l1rdvgT;eyV+|Tj!>EWA&KAJMl}rpYDrpO@BMOd;0+wlBkKN_)UtPN#T~GPiB^@@ zz9sbdGYDHea0A%V6PQMGCXZUOxh(G;o-tt3PqiD@B+@LjhxWl*Y5DH}^(~%<(rI5` zq)&b<4gRdyRz(aqSySk-&m)Zl7Zc9Es(c&$Zafd@qIIua3ajyh4{9u4scpl$rDZg? zg&!&pRnw&Xr$K}GekV}(9{7nu9CW?Ok~} ze(7hw-h&Co@r$DdrYW6lPxzaw2c@}?8 zp4S-=ba}PeqlMhEZuW99;i2FA{5?UBp@;~;iaXnCP@+v)n}(n`@X6fEk)Gp zokSe_S~rCQ@B2vZgve#c$5N1oTF$>_O#yY1i}xfmUvT}NbXCz)6g^T>CR6aHTHPI4 z(b0|Hyq_s~Z!euYS3uMNJ~JsqH!XZ9&R;GjpRfhlY6ESxB9+GJ&{h)PrW~cX{KLpd zvY06M)n)t6&4aJ{Rh%R^gXIY~;cebdFJ`d!0Hs^>ea%8R6?0uq?SkD80mO%tP8qIX z8r1JGla2z%k_0Rdmu+WuG@rjS4MDDl!@qkXPhd>hi`$*-%|Yt>)07x5Clj?jm{X)* zu*V8HYJWuy+ub#BYXGC0Uo{kaQ2fNl#yo#tNp|reZ8rTtK7lktzkCGYZ6DsL6ZBk> z6QRlMZ7a_uFT$P=4y4>xFll%zD6gL5L$? znQ+QhW?M4h?THI9!K=S&SW8|DPccr8#LmCNnku(Th2-(xB`JS7Qcm=$Yt^l0q5ol_ zkx$f{A0pYyq%(1^qPrIPycrVKkWou{y!5HPIbsw8G5Ag&KB9ukzM?Y z!UDThj62EJlU!p(-5BgGX-9jC_o*%d-QJ`n^7fqjxpqA-lrrk9za(PR*<#(bK>H}v z#F7Wp6)WlR!7BK4s3T zoPX-~iz%21UM;xcUl1wmMUs-}$}+>NmE?DpVk-UgsuJwZxu94fy@XejZ&_`pZ3~@R zqz~Qt_SJ^qGs5b2#jE4TMv5=gry3Mid=65S9WZ>O|0exQon!a=fcomeu2qDnXQKHj zePeww8at3CWqpSH%?qPKp&t5mxoN4MRwOrbsVZJM+8SxA{;QKgEfV<05+@YP;ZRX0QYn%1B?4-b!aY0DXJT9#{_ZA?|rv(afj2Y)ydW{a`h>FVnG9l9xgY8yw37eJ#D2e2$op6;r2_G>#h{6u*p zIg|~&s@aRHf{yt@76H;KrH7~;Z)pF7dM7S%>n)4OiOy_z&Lk<)G}UZOM~c zI@Zx&ywD^5w0SHc%FX>y;>5FCI`+W-hS8bqxY)m`=-g`gpxTexJHERquC~NY%y+A1 zkRe{9<6rpSuvV^{x&r?^~P>mIG>-sS;H z5Vbc^=PfJpklfD!e6sebGc96P{FpUJXwe-%>p^VI=6aOj!QXZBM;B55N)ew2QI0wA zX0s`4*YJ*3HdW(-D{HI8=^xHw5#JxN9Peb>B$*4TYof#awdP;>&ag@i_==MKJPQ`G zNWWeGi!;wcw7AwUw7mDEuFHsee`Mv4S2A8@&e86pvv~flw(-*CHBq!5h&pF!TmO8B zHy8Z<+Noe|xE70gew^o0{FF7aTn2b=rdP8~`zaZg{P<%QzrRu@dbf59t>2kXKVAHz zljI32hWBE8D6%_$FaL2l5*#K29sBb(&C(7AEw+VjHp;|IioS0e&ID7>Ut#7JXB`_} zO(;3lvR6^bxvu|3xYnrkyjt=ktogziK=kXV1yjZwu-R3sMsd5~-s_GxNcu6?RITyz zb%yw|BC-4XK~fysV&-cU^ zd-4$Jdug(Aq{)l`dPAL)#YI;z0*r?g0poujQ>AjbOdHt~j6b!#GH^IOU& z#ZO_rrr`;@ybuYklaSE7>%~KYtnmY9uj&g#V;0TSk?-v&80fniQTLt`<{Lo(J}haB z;yi2{0fFY;9yLcxNZNy3>9S}~Zf-T$e!X2Qc#~&%?vzO4t~3tzl_tBo;8AoqK3QZ8 zZ#iNVlewfxoj}y)@fhl)wX=)6%8e^`haR*AV}QnFSmzL{`8<+Hw~UR)Hhl;DQ&va! zW9q;E;4)S8f6=nD9@^j-uT1r(JuL~r*;%+JPFZFV&C3qsH21j^qh^8idz=?DR}(ea zQCw49&Q32B>+Ed53g(!mG%lZ+mDR)lWWCE8=SsVJql}O#xPV8z@!vJN-pbr*DduSs zXxyTM3zqQoxy`UHFY9iVEZN;3?G?8iM|8V+zOLC^rfk@z4bYlAU*>24c~3hCtWAFt zBGW#SILZCB+MN4gyw#b~aK}G7wd!?^gV~ZW%f!_T_c)%3zpL0D!xEA^@BAM(b6Y~r z9UnPk>SQ#~+&ST-{<>m|fmy|`M*^+<$68AcJTwW`l<@sIQ{lgAc%CAT_XyL!4m4&P zUZrr2^Vpi++|<_N_ODDcx|+U^1oX3poyw40_tPzUtZVR~{a$h4Kc#kPQUb=y1eUn3 z?vXAp6D3hPPuKP4=C3WxQ1Khq9wkV-D=m@wB_MXh$bZKpa;YePpQz1VX`ntdA36`O zA9-0Ys%-Y<2J|fB{*D-P(gJ@tj$QiHnN>U6P%2yt{`x5@H%|)gHL+->@EaOm?%Wc! z@OIZME6LV9aD~)t#rh;Ad;SR4G;i)L{Bf-?YKJ_T=3Gqda@Fj5YqBY=!B_a#Nlmc( z+j#He!LIFGbhD*o{3cv)I+uS|JK)Ycs*mEMLASpH0{otL_BPAy2jKhT!{QB|MZ=2G z`bDHr)M(TdU16&b=>jeHsN7M$1HHLWN(^Fx1bOs5H1kHh-P zRGl_aP`!fuj4j(ANB77K0c28x0;-PpOqgV%0&=~ilU?_GfK-ECC8Q}T=W***M|c4+EiCQg}f#tca7cGCMD2@m?lHM zsuM7v2fdV7p{#9&k_Rx@OaY z**jrgA(Oq-kwZy2TuHc~@C{#WT-I&mQ0)%b@ z*9kmORVPGwwd5X(OEP1}O?8x(`1L?lt!B^`e?(Fna(%=W!Mi+0q(7fXES0SNQaf!h z>OeJzv7}{0)J#QPT~uGnQ2G}W#+7G~W`7lvm2eP`jFHNV{R6w1oJr8)_?HXMBFVI% z3a0I5awnS7oZ*AHMBX0P`9$hgx1O;g_@{54%mp1EHGLuCP3F;dbBX(A7As7G4yglGKi(gv$kN{kj3Mae6D7ThCF40wRU`v6lx1J_B%rmj z$;AhosnjCc`aPLtSeS%1n;)@5Gl#{<8LxvV33PLSO2B>>&z-ZK6oA!MRe!0Fq!sTV zL1fXgCg3}J@2)&Mv((RQLeQKRo?_WsLFLHpQUN_k?29bYg^UMjypJ@4V}U3Ks?iLC zz9{E{Q`vwnRgI&CjOZ3N4cyWkN~R!tWg^Msw|$Sxmnb=ErCo{GB%h0>GV2y|C3OW# z8yB_kQ58sD)>-9R5f^;8EEU{>llq`J$X`+d%D&QQQ~VA2vl4fM4Tr> z?{v?x^t+h#7!y!8#I2WqD4bx-dj60%z5yCvRSMzHVRPa&SNyW;$G9e@{M z3zW#5Ph1(6N84_)mbayz9M8f@4aHXfJtnY(t1UHtX$g!*q=(zm%Z*zb18Wf`NIH|JJ49C}u`9eHN7rvZoi`OKXP=%e&<^*Wqqy-%R6izRqyA!gQ0e zjadj8f|u@KmCZl?`!>IM@LOwKTx>up`*&x!%;v+z>G5N^M8bbgm(%WU)v%BPb_hcL zjB$}F#*v8&3LnZH{{izky#Fh*so#@CN<=2#%w0*ieqPp*ttbBh|x3zHJcAZl9L67hv_Ov3tjek-Y7n$%SkLsGCwRhPR~xuXHhZ|mGxo3-A>3qYQ7nt zc-=DwAH(5-?Z8)s0w`V>!whM4!tX(;YS1Evm`CDihxiJnT$(_!TFnj4tU~6kH z%^)wg?2~fYW|{eeqw4@dip{U}rK47ilAqW4A922Av9NZC7e$Rc>b~bGb_9ExF&n`; zwP$GV#N7|lRJ3fcOc}aU9I35KO%709LWq#(=bP-_>~7hZ9N;~#ALY-1nneW_w0&`s zvg}Jqx=6H&w*?Os^X~a{~WGiX&%cQ_WLoT`IaJy70IgBhc1ZgY+0<2Ypqg_$IQncB2Y?W>SsYn9p(>#vtU z(^i26-H|Z^O|M3RUv-{wIXv!%PP6Vc8mPU36wBXroO*GVPj$FgV2|%HrfIlzk}4}T z8bz2E)dvqk@G-}X#T!SNj5Sg#2B(c$9GxCjxh^;;xnilfVoj_04xFrBTjzupJLtc* zcEq>Nk1#=<|2m>6ku=V@foLG2WR45zoL`K&JH&lyI=rEn*fjRX>NKF*O7+AkIze-H zG=P?(DSb~`x5I~;miLR;>rz#qTh=VO?{*H3x@Ot%D`b;aXLzPdD4smKN9_cwt{ji0M%CNA@rd*pt5G3!||R z5LbDo2w)~K%2T>>Y)WRlLoGrnW3dqTpn>KSf;xHw%{iOV$ZO-QLY(Ts5EK{35Ix}# zS?&<;=Dg#Fc5*MV-AjJ~;x3e3z5W%a`IFw=gSGFTV&zx<0_Q=P2iIZs_lebO&QvS- z><=HOcZ0Cjy-k(th-@gf6Uv&O6y9$0yd64>+#i;fW(!_D^18F&f|&RZe>ysq`9Kj~ z%`!$1zi3A|epYo`Oy_0#jNLu<`H7tI{7#2gwlB*&FX-uPLrzY{6yUy$5#iM|lti7m zKkI|K2Bw%@G_H zs@wB%S{0Swk$%#INsAOM%=}RgZA6t{dvTH4sXNp&A*Vi>jq7|Y?5$@pb53b8{yM!> zX(B!(zeqnN2VFWN;gC5;+Bl4wz6eZ^G!|YYBrqXMgh7)#DM46NC=Y)>W6Mc|nz}Ve z>1z*LtOpr|c>~K@05O{=H2G!IR@s=6+?+{b--?7t5`@tMMlI-bF40dapk>D>o5ayq z%DK3D-BDC1pX9w099lzl3!ydnfEXJ#1~sJtDS#5831B8mM7~r9z#L1t4j?99oMwz| zSBI0gQ>szMKD^O&GGtPN3M+A82WU)v;%1X0!d;_=Fy|x!KZW|T@$ggng(M!L-|d|sG=EVE1Xv!FQnE}=u~$B4HLfF5mPMiH#>WtPP>`%DC{p`Tq*0FSxl2lgmRW^4M|9)R zJ!{vO2R0bR$+9i@{Q6r(rbk6=hY1C8=>6PGK`Hfy~t+ z6f=)Ck+A!d{h!+C6KdhHrX&e(QKf=GN^6LYHxtzuZuXN$NNCl20B#cbo)pF2u@UG< zh-rm}$=%cIf#5pxl`P8MX9@|f?g8%aiN-IPT4ivli@id&egE>H0b6F34TvcB+9)NI z|ER)eyWV?&$VOOB( z=<5r9RRw>P=^Bt?dJP%ms0NV_q871LU|_2tDLnjd3yKhBHdqx&EY<3%T_3_=;u;g> zZ)?#FsM0xgrz#BuW6P0RWq5@%3o^U!QkhLy2K8!SNTT-+q<_tfxLZJS@3cJ8+YU0K z6HB}VZ0zRPJEh~Kd3aO%L4PoHSjj0NPi-HC!ThD5U%t(L7Ij7NgE+^yYLw;w036sA z?BXv-0C(bUFjpqXR4EpBz#Dl_g%nJo%WvI6LMH*JWK-0&gig6H1pVl3F60N?L=<-> zSq4G$G(ik?vx;DSQo&1}Ej?NWB|=5k?H`Frjfquinu0HC8w>|Np<+!HF@io|OE8)a zH1H{=Uc64IQcJzSF@DEj!>u~thsThG7fyZ2VFM3KpczqAF5S@;JQk{yk5KFz52rR} zwYeNM+XBj>yl*1kb4dzh-;I`F=n4N`gsH2G&QZEQ0LjLDADL9iga+IMlAlpRTWe4w zfA;ZnYl(G5rwDA#uvd&pzzf}rXHclNKnsC_l5E~U@(fA{Y!v0dS=sH|kHV%8yE^&Y z=#I`n@s^Jv$p=8A2Blw7G?42dl%7yP3@~o%(-a^E1MJGbhVnIOrw?*?OqJ$F0eRyl ztQ{2kO&5U6K4v?boM;4{oCJAn&y6e|N%C;?Lz|?1nJlzJ-@ME>6)sQXA%hzmqAM?zj*6RcgQK zRE)kSOH+h3k&EK4K{Fz93H(chS6>MGaI-4ER1|vN5$dJ6c}_#aJ$V9&2y!u-eFr)~ zNQw94gLVwHV^^QyM$BF~sU3_tNko40;eziw7b`RPSRyD?VE{81k zUAZuco?qbHufr5x7<(29Qk2w8OF!}?BQd6A(uEEoW7Rn9C$MZQkiTO~hzB3_%KZ92 zRuS=~BH(<9F|=;bQTUL?5xv;a(eN|;s_^xmE7#Ir3!5;Zanod^v@9>`U7h7ZW0S-GqpUHYx znR>!;oj4V}f^S}aPBLsSZtGqAH#6yyq^~jt*eXO2e2a#$6+^&wAmGR!nE|iJzk0ly z64_wco)2cfO2fW38-{q`Ur~^X*H?snwKfO|;#qh$LY)d^zlk-I@s)6Z`@lOUVLo8- z)k^9MN11BrH_cFZZ8A0xDA_p1@@q)GTTFZ1)M_vUji?br)Gjp?m8M#tuB&fEaH30$ zKLLx?>9sKZOgQ)RGenBB{Rfc>*C*c^zI{xC9b^*HZDF*H?=I(;JtE5KP zACmNH9@ISx@qSSdd|_uDo8%MmRU8(t_~0V{P^epY9`x%vod5Kk3)nqh`1H?6?U`#pK^n+bp!5{s4a&^Hq@y1z-x}CzO0`PQ;W1+{Q^gjelTE$xc*Bay_sr(*o2%L#+kho5} zS09^p7K(o@V@s9aySB4ysm|Xhai8|@T(oH*hzgQja)}ybd&0J<2^@N!OP+pHDK^6I z;4UcO{XCXoTS?_>n}6ftE-7GJSO4!Y&%jJTDa(;jpjXdq(T;24?!8duuz5zZhZVg! zyDvZLtssb9U?=6>8~!nY-er5%pRZqd1ety+coLQRBruj;7%edNM)zUds&`?~&X8BR zt}>Yo(34xq;ww0X>R=YA;HV($GHUZXIB zK0_4#rr%qZa^VOPQ3Gs3$Onx<0`e;2z@KRELQ1R2AuKO(`6&nhxEQZMD4T7C5sa--G$jSM2VBg)Z(+)zqS^_2>p$1O*9%O; zQm9B@3CbtpY8PRr-$KBLr%-|KqyNwd6CvEfFJdB;lQ`*N0Y=Qb7%w?}?UBnitPKYU zGdm?YRy43ru`p3GKapDAF1#?5q+n82EI)KHgkGqd5Xl?uBrIa0W(J`Tq6#q~doK~9 zK1K0gJmx){tCzdD*pQH&Z2J9xvW1-Z0o$@f|6ntNA*vT@6x2$a>HV7Ib)tchn`g*o zRu82QvR(8sRDLh|G=eZUS>?jraGDjHYa;vUdi_k4nt$vTn9&)9AhML2o3~NNT)^AK zW)YtdcS@4pyr_FP*~!#sQ{f@P4D=e9>^QJrMs(TS7qH1P{Ez1u_#Y(-@IMy+{$Dut z13&IK(3R*pz*RKl8kSS;PW0U7-d6=3c4&9^Cu?&@z-i3r4|1|5;p=F|ASuK4Ci)06 zvEWr$pFZD5&T=x<>t3Fzi+@+VK5jS|?M=NOa+f;@L1Y7dpSFp+wg0HdlQYUJxKeqp#U zPz4t?lOTT%9#%J2x$63npw%4^osH8iK?Zf#-gf=aEdd{EN-XO8BDedZzz!i9QY)wBoZ@S#^kR@uAReMb?*HG>KKh@xg6}o&zBlOhIiA0~rQ^BZ zbJ@ISqSY}y{?tdh+u9-s(Q}|x_1|6D|6R`BM_9_r%Cy}=@8xdK@}BSVlx45 zEFT@AivV+VA!ItosgQ=_~)_S$Jyf z4><146IzFyL8mblcc;jlTrF^V7=g<|j30z=d%1+TAS2*|`0}d|<@;1TTa7zsG1EFe zFE*&5^eAl-lJa+sn&`b4w+fVS3UcGCnAwo!AH$2LOe z^w5Mht_}qu~pI4C#cLJ9T4Nf0fsQ3ho zR;iq{OuE*nB8Sp?*8lIm!S`anK;Y70v_0Ftc zix}lvM3Znx+ipr=FDY>%Z|PhmREtFaKbFn{EQ;rE-~s}YrxHq|0@5HIM~QTIcS*<5 zN2f{(NT;B5cb7CAokvO>T}S7;{{HXteA)R<&(6;54s-LF!K8%xPpl!`5+Cxgfl?|M zKdP=?0i!~X)y}h7?R%yQAsVMPy;W}vtSjGjFy@nPvjen-hux0gO&q&&EIZKG&Pz;$ zI6BPeTh|>9;!jG^n&f_sDi$(#Sg|gzL7NADh?0gP@tU1X* zlbs8I-yLO%ulH)_X+Y_t;IXl{$t^z!%q8p!P-%TLXnW7O`~c6p-U})U&wc1w;0*$k zQf}0@;zHL7IUsPGuLGWW*sExtp1*NFuoIdM?Axt3Eb-fuSXuFs1c&u4u(fL6*1X^I zcdes51h5ZY6EF1JVu}kb!89d+n7Z%W0@~@75O6E*b%vWAW(PU2EfLoXg4{FI+sTYl z5g~vg+AMh-H+gJnj=SbPsPJC~)b0l_-emuO#1_#0=0uJF*ZDhmAm-jb3+j+a;B{0f zl?VW25nT929PkPq&t0;3X6tpH1P9&U@1jjRq9ep{VBy5@$6}3=mQ-pf7c2;=#wu&>o2CYZ_DTW{>zoGO~p=V>mU3?zCvH; zzts_Z@T$)6tiuecvI(Sc^3v0A0f1|8$o&}_gn!Omhv?cpj{kEIJkpSxzfxwHw3&jH9C5C8^MA)kT(9B$QfE_DCO4D$e}b=f>d7W*>#eHXBy23Xs$^W;y+`qzQO zf6vG}aIZWr8u>zLlQuKxo3Xwx_yNYP*bnd z%BA`IQn8WcKx^(ZBZ$tTBR`UF@MBrKvIb%j0<@B+-M3a|?cQT;Z)+zo@$xIkYUSDD z>P^Lr&i#ylUe*#&_TY6Byy$RlKELVJD~;g2Zc=iPty8PcKTV%%=3jul5mNGYo2c4Z zU2#Msh37G}MyY}>zf*cv z+@tn|lP<2ztv>W(jB?s^ZK070mKz3VX!);J9=!;jZbun)#O7-w&NzRCS~iR0ZnXOE z!Gl4Js}Ez_CEzct1#OY0$N`kgw65Fye^00==fSJvWPqM0lfub|W7TT}WfXzkkjcL4 z-6ahme8|FgQNP+l04~XhjAia9bZ_lv5{V(rzhE9H9PCFVy(z4tadFmSX3kFR+p;?FV( zf=4ITZUC0&0Do3QaFOch_(2Y&oz;B~lmbq17~|0(vWzx^z@Ow?bUZrtQwv|eJhT&@ z%82q1(9b$J1}pOdo#Dnge6N)vdPR`D-Gk5X=-3B^7r=mcDE9;uzy9q!!yOfIYA{?T z+5&}ca;AfvLU(jb9)UMH-ZI;U>Sy8k&;wpKzQ;AEhwe46HbsQU(=Cw6ffbpZZ)N8_ z4hAB|jw@lsuHtka!?u0S_`sR0MC7x$V#c36JD*trJ*CgbVDsQxrV>m5dTJYP%DE`) zyr;sr^nbnh2oPChOm)KJtG>IMc8^7!NC<9bmKpjG6yTaVZ~X*Pviz zFvh492cO92V?U9976c|aNP%WA-jRtJI0%>UDx2y%kW+4tA{zy%C37G?8{=(^@*(at2+bIc)PZtuM22)$h)ge5VgvrPhhBi&!k zlPZkPj;iC{5Bu_#A>C1(Z>0bWiJ9&=g#jORYExNz5DP^{VPAr5%n-$&gRgTdPhJ8J zq-asR)*Tnhgg(Lm8)XMVAErWqUz#wt1IoWxUO~GVwH|Btth)mf)zv35=f*pu6c2{l z{(R*A&L%scWsee!TO5qr_FkBpGLB|D3G)$N;w8WvSKeC`RkT03lw$;ooUqfc-3H$q zdHVeoV`rz7AH^O5>P{8C&gf|!Z(b)Nc>Un`;T=(Ori6~~(<8N)4ecrzWJd{|3v3*7 zp3%6P%R|PuL*^ByhO0gW9Y{foigQ%dBj_v7m1fr&qaUz^%ZYiPfR6j5iFvQ{3G^SA zsH03jO!w^3Vdb*43rEb;tCwFUMNj5@5<0GR8D=P7@fk4<+$6=7_%j?ou*lR=eT<8$ z$4M_IY7kM6E6slacssRelG?5C&iMr*T4l}d0mKb3_8?C)FBzTu3p(y|P!YDY7;TCKRMp$AvF|YGYYlSp7ymTN_q#DULZl;-~A_V zoh>LnS`p}*?u$P8puO6S=FmfWOZl(T@cd2P@6gcA1*>}IaFgiwKYX^rvUC^|XV6`X zeZTmU2^;c7;EsB~A5~?JMu1uw%!kfAF(3OD%%KHz#Xtj_Ks8jz!4I#QNrWt7HX={*F^JO_!w2F^4Z&zaERE>1zOSCovW~^rQfzckr?|RS2)t zfE4dMUW)U=Ooh#BSSUA7`D{ylDW9h#?)W!Pw2py)<69Aw^F#FLij2$@KiFZI$Ml;9#ap#fGE=*W8BWo*_gmA z=D!)%3O<_+2S|Iml3QbnXkjb4__GOlJ-o#hl_ z8*<2f-2^#eE`%3p8y1^q1uGa_nz9rN&%)w{H8Iv1Y)LD2_A-NgqeB|sMfgVZOQg{t z?Dmnc1io*WdYYW?qyIA8wN+S5k8w$5iPwy;6GbMKaM(ooE@M>p=`Te5&0**ehE~Z~ zPa7Y8apsud$QW>r(?`7!oZI&VB@1p18mjVzS5Fw1?MoaftsyD)#j47?9U8kAx=k*U zbzD?aVJ{Z8uTlMs!cSH!esu4eZ4C@uawm&yNjs=g=v1D%S`Ny1SGseY`E*WX@!wIh z`zKeOT9kq5uI+yh$#|`rzVAk4ZqkHS=qZ6;D{PMM|6yh8^8;eHMO)Z5s=}k+f%3t=Z{+)r?HU zW@}XD-nMs8L``#6C%Bh;U6YWY zU^R`P0M!RUy~WHP;(Dt}PLis*6k7gx#0HeGM96ZTU&b#KKMiJTOHi#1XN)Lqm2Efy zuk|9+qY&8#=>v+-N9H}F|90+wx3jXRgWrB1n5na>dRJam+2#dTq*T= zw4q$dLZti93V26#WkxL)$YNBq-hl?3AcW>V9BdIC;3id}M#3?dL(6{)8$Yt>>$Ipy z15fB2I?W-Its!R+lgV!suuRI0C#B}I0r}m2;kn}Olj9~%*89}sHHwPsvf{JcwBQt> z`KZ6v+r-seGjFUgtMeHe(K+S~{_=Bf(&$TBB>Zf?S2d|Kp8fK^SprP7q!nvJPf-ml z^R?_3;}heh$RW!>QXa!E=0@1Axp4 zXH?z&3>P-nru&6oMl=Ucp9CR?7UMt1kt&$A5Zkv`taP{iBFC; zAy1wu>1Xx@+w<9{;aGXj=`0bFIa!6;omSaux<2EzItnZ1tQ_iwr=7zSk<~%Sbns44YfafYzqTv2#!Cb0AtmCu< zK)Iq{Rs@{@1QZ?k71dZa56?FJy9f=3Y_bUx9v*2wGP3Qd-Z1jCC_GmibKha2gp#<% zKnLkXofYcq(xcUaw%}YF@xv~cKEzRfl{Wm1vZ*-hoN1qoZ=d)9eeigg9D@+$qr9pk z<=ay+MUSh|{+w1yjkA*^|8ayzjKA;sPIppFj8c}O3$}?9>u6=m5fvZ?~Z4_h2kT-Qg?m z(Z<+CT+a`QCW%c9iF(=e@7W6Cg&0{q8GJs#m#a9|H^Lu=Czc9%`8rPqyi|t-pd@kfdKIL#Y>*UxsBCAD?WE<+cZ0A8#T@jfC61Z%@|p z^Q}JGpo(c220a^+c5y5(rIyeMW-SUAllF3)W_`nb@LZMV+-+@Y)ANKhQHVL( z$Eu*u`sF!cZh3iszH#qoqQ)_LpJyd~cRfpctP7iBU>w_srB5l889;4ywMLPi6XO2H z!OcGSrzQb|R%42Rd$AY^pi^TDop6DsmhWe%92kv#RN2ReC(x+ zFoR0I&$~y1+oKdSo?%lDZ+Sd>_O^e110P_?L|yij^iX$We`l1g4(Gc`Pr?$9dY^D( z)6-Ma^O!Cb3~6FZXDbyu?=kD6?LIHp5F1qr^(~!+vwm1$&nLCT6o zD=|M`NHFcCz9jIHwx(L_C@W!1@mo#&+k=*2RDG$q=7%%dJjoZAxU(FLg+zboI1Pu! zCiKA|Uw!2g!K4v!t16@^(v7BdZ_7yhCAM|q8*yn0amH^PXt^gOPF7bA?x-9uA^6Nz z8;iKhoK+q({bIbVQ&G2TnjBRff??{fRhJbuw8d@Sn-v&a%D?6p7F^8coF91I25BWT zs0!mEuzEIe@;?20Ti>Vv(p@t@AojH7(3qmo#OT!=od3ez-6f0zap=A+U#L zEufl78ZxEWGZz1+@HLM3-BeC_wb}6G|O@Tr@$ z`=6H+02@|NMEXmCNfGU%fSqgD*bud?kyRJ4#8_0b1eWk#Txnh@c7HgiWR5?u^mS)k zLR1;a>j{%w&a;HDrH0H|hq8AAg~{bY^%DX9@=Tf!ua&lp?FQHaQGXw=?kk0+Bpi!!!JYT%DYIe+G)Mkk&u zYvX3)!oqVg!7%vS60Jauz?6bvnYPwQooY2Ayt=3-D!+h$>ESH{)%+n^JfZL{{ zM67nnW>8(U2r!G#1iqUh8*se+LYs`#8Qy)&LDkN{lEHYErV$lo9Cp*B{;yjIwJSem z!1MOQ>Nh3$MvY$7ubK0yRP?92=$Uja34XzWo2V}a+HN+hXy0Qq$nMXdvc zZ3=!0pHeopdAk3r`Z(wAU=P?57XLI1!WYsG3^4PxVyKq={cdg%B6kN%Y55?LyZWKt zQIWQ1k8+$mk@~YJ<6IT`=^C&3%9?*|%e9rI{tPTn%m2K(_m+|LswoK@^Fl$(Im1H= zfTuXtI_h>#%J9m-$G`ik4L01D!b8!FX3W+)+IASrhN_)b+rBQA71w&MDv)k8dE#KU z;kK>^dMr7^|4`4GV}n{Ekft$T-QdSPXh%P>SI#}*f3{eIH=EoeF&)yLwjK(cu)+_T zs&FyugqVE|K1;4U2so~ozqn8+YIjuim|gnJcSs4_u0kx?5ZoJH7L7O9$6&NN800#e zO?sJ4Hrt;%+X6IG89ST~Ppc}N&0PY$`pBz(PnDk(0Iv+RVB-yGS8pwp$Z0Jm?*U?I zj}#0rU2P4l1KrM-o|m&k-az`-V?6Wiv%XNi!`~i53YYMU?VLK9vU-INd36jSQ#`ag z3%^%;-43Xtn;CTYFBZGqq^P6dmy3>egD>=7VgHrc5;|RLa)?#>cGS6)kQ|{fA2^p# z0^nivJUcmihT^0iYNo4A=g<3=%#uPJe`1p9nO;^hM0*-!ORpOaS~@Q(xYjW^5T^YV z6u#)ESTR4+*Akv+NZY4a+3>ifYlk{`EkfGUwmsr~x6=NC+6E4h3eI>d=1Moe!O@OI z$Ww*uH^6qa>uCVU*z?P=b6UtHe}Hmv?vvFE=%I%i*ru##5x`OIo~&$OUj62qT}*1k z1W2+fg^LvXDmlCO#Y&-*f<0L!^7^Cif=QuSd=3s>Lgi>Z&b$MhOMe_~0Dy~k4X8SW z>%+Ze6><-ymW`$#gndh&+N)&B9E+0DBBbHOi){e@{8 zv`4qm5|)IK$zQxme@8qga9QC&&X{iZ7<8UB}HAgu- z^PlWzYg_o7R?zjs$^S7{{hnoKOOU^F8`Q(0?NCLZf)*Cszutxn5okkRW*_i;?!L~w zT`X~I!fr0n=?O#<>eW2zbG1m=!CJfZ^5FX7EeOW_4L$7zcjwHJ%wmcTNa#so-=yDi zY!uooosRR8MsJeeNq zM`Ey{31@OIhl*v$R^ym=#3%1%$JWqhMAIIN`vLM|k7fBB$+0g~<#5=${8HN2@JB1H z4vlqqZ=P zSX|R<--AzER-mI_;a=mM_~eMF4Zh>Gd;9PGUY`DXug%M_S0F@?ZwL6RjnY0i8pExB z^|l+PGe0jPXHJAV>Ga6J=wR2pJzf(EA!J?M5V04z$E28AS?-C-zdZaM|FTL<_Zz&2`(D#bA&^$#WFcZu>HGc+)Jy z&MGCooC^`)^02VZarM<_QT+H`9xg1@z5EbHrdVzCz(SR^-0pRAwM%j;5o|!LU;a_U z&{DbV?Pi0#qmINk=Iy;21G*P%@8&I}5FBx;ms|z5yLe5%NS}ZBA^LuBXt&HFJH(KM z&7{vFTkg(^;@QvK#OEM47(gxqiinqRmT_HrnTEgqq()V)8q#=?5s3k!0i z-v1OEa+Ym4QmDoG-!L|zXDeYi^IiEHYO_xVZqjE0&(H5Zs?;gFe$ug%)Uktvd^o*> zXtKG!{UTAK=J5&r`4+I|tLoMZWkle)L~KH*14UI#WR>KWtH##!x2D`6T=(1{X2>wG z@4?pv{^U3>ZpQvou;)t@8+2z8qKlMx5;8Qxv10Ds>on0MieS{B{eAu~v5oHrLz9Cs zf>C~+>56{;!q4{{_~Zxph-UF%UVIP*zVPqeq!I+02pP)JR3t-~&TSGxYEXpQ-F80# zN}h03)g4O#fy&DX`XBZQAzWSzFl~&9lL^vV{7))%#O9UOs#%haI!OYHZq(u0p9*8c z7|*Sh@m*jR(3Icp(Nji)?`8vc!EkqquRrar36(`(%G|X$nE?z}MlHZ_Wyl!HdL~7L zW6(5YS!KK_5wuGCuyGF_#{Fm$OXx|d8TM=mv1UFNMJA!}%^+S`i8ps+c=p^cGpH?E zo$$qQkVaS_!jApZneZrTu)|^{v_*dbC_|4?=4_Z$7415=@_b@V_w5BNy=QYc zN=s1b#!#wBo>E83Wq)sjUuQr#Lx!a7m5pWv!qgEvmV44(nG*HUQ?Pin+3$bBSoRbH zN(24*>q>;V{As2}my0W3MSJ)_az;|S`JJ&_K?uXf!O(JJdf)Ctn6u?(-N%f)KrC}40nO`S`cNBh z%H-B)ntW4OUU1WUA^F!~Fe}HG<~i1?mbr=qVK1`0wRdrU6lY02l)anx>OB&OQ>Ba= zWJoTLcV2#97d@qf|Ar{xW13o6wr!A0)-3av0n<5yT|u(tIE=0=1tqaI&I|?nP1INh%4-@VYO3nk8B)ne z8g=?KSWJW|%IH%}o#Lue zA#P|4B<_xj#PubX`}z>8Z|<#5zHb78k{51AlV7a+9TY4V9TiZc3~q~>*yy^e5j5`n z#>Rqk{h13hi4McvnHi4YrpeR$P+M>bN=9bK%@l>Lfm?r6PiLKC!nFDwogR+$=3c?F z+8?jkRu0D9AFnp^*$zjo_QJ);?;-thDEoVmyEK%N`)Ue81Jk`LjkX#0cO6&ceWp)l zt!&FW(~`^jYSfpKgpB%*#?xqbGCvqEc9$?=)`ahmx%A+{#_}>P;ZzG{cR( zlwS$2)SUjpziq4id&DyR7v0Zj*pUdSr=Yp4HQa8Y!1y>=b*9SxnE3Ssqqm#b(K^|% zLYR$cQm$tuBBLy>^npI`2sAWV4%s54+yb#E#c#%x=dKfGPCI((+}HJW$oM88CWB&* zEBsTOaV=v+sy#K^_6uz;gqR<<0Qqoin;>OL)6yZp>!m{fUR zk0=?xy-kn%ecbdzt9A`Je>FXeWrNMeY}k2I55ATPbB;#>FxSzB;bl!G$KS%Ha?c#aEK34kl*tmyaF z(k~?}r7L(@#MBI37_`Bh)xSXhG)XLuvq57j?@_*8y*Q8ma=lj|70Tyfm-IF|p_MV`lC=0XlbW+*;3`~1`h!jSVRuXUXxp6Fgfe9z&!6j$nbu`) z@1)kEF4Tlt*&DYwM2P8jdp0;ZdhCuPb(TNZ*_6``+PKXR71yzp;M+KBf%7m%3&!6C zA3x0~M|vki8AGzpvUhnkF=<#9C!~beh#P5DR=?fH{-Y6WaCHV9OJCus{YjvKZ zRobIp!dnMkqLYaoi1D-@eU_QnvZxLLcsx}n;L9k8mRdDkv*cSnL8FPrBNIJg)a4{+MWsQYe>irW6=fh1*g}@0&mT_4Q*2Kya)! z;%>jIzg(f61^!+IoQ&`Uu0*{sLUcSjM4mll9R7khnhiT9KEHE_J$VTIicLo#J%#E-V)BzdX%(yxN&<_&H2vJf4m9Z44Q^=$vSpj=ebl_cWM2YSnfzL zB=`7mP?N-`84Qm_sbBL%DC^|ASf#f+u&*Uxd=EDd{3EDcFA?LJD5 zB1xXpck~97^M89fbj&Tqw><1C!+!mQ;#)QuZe|G!mgcHe-M+ekgQ|^>L)UZTbF7CK z71;Jgq_JF#H9;;q$0)K%?~9fBhzC&6b))&Uq-*%a3oG*%`72_L&rn|a1Zc;87H3Q- zh~@QwgPsPzrT-}W`*?58(7fv8ST0o3eymi?N=>UQui$}rg?wH|VEJ=pwo^;zMn)(5ntdj}dsAmR z32By~71rys5Hqo%51Ki~usp!AC<2|Ll8iYU47KzkV;@LU#}q9;#E8%PzG?+S7lC}7 z6xs^ua#rl$h7k8DLPWiI!do~CdEd*I_au0${r+a!Wo|A1x&z1vO}dr;*K)c}m6~Gg zxcJM`sWjxgpGikH75gvAEY;jm8mcFBl@9C!iW4)hahB%;yzZKUI6HRBeIPhm}Y)fjlMbo||e#gsfdoLnOrcW`^_9NDi^B-$(kqm!A3 zn}GY1Nz+V>TrwU5z2?~9HYUBq2*x-KnC9h8P9UAYJz#(D6Wlqv&#^I`B$v2sto+o? zI?SCUa*yEDGAYrFiv48P;;sa=opXl2sdJ=i!zE+I@pU?_h0~hfJ;iWubjuA5VmfGH04EwB2mml|om0cpPwo2OL;*9k^^IRoAXzMPi>yElhSO@))N05hVcGtVn_ z1Fb*XG2Tx!cr(3HP>uwXD}}&;LlJJCUKh3XO=N+ycsgJJ^YtkT;NVt}k;+VB+uAvs zKq+e*H~uSp!aQ65LQ|@E42VO%WE1vQy09He z_)2_%xo8|W{tieZ@H8=xh(_U(PT`U<_fTUdYz7@oPD3+p3Y}nBqb^!~=TLn@Wu;1Z z2GXkT3I|)%erzfcMgM8&q#4)TR##7XQC!7dEUVP;KN;Lt3{_)xVAp0lUow#c`eLbT)`bH-a{Qpki^B-R}_dmg1o*yOsr!1w2q; zrU@ywD$DZz--&O1&s=V|nZIg;wN#H&TjRc_PZGa%V3(=kXxA|hm;XK<{FaFwhupv? zSY|n4Ja~deP^P}Ae_`zH((YSZ@l974nf$3`=x^xv!lSp<(-M-PZ;_OQ{07+_{QW>X zso@}0F;{Kte>wM-^G<>%oruJlfuq~VJT|YtLGnAv!`pRIiC%75X&EL=rG%$A)v|G! z6?Rn29Azrz`tOE{NSRwJ8^j~0-wgHVQwa_=^ z%)vB`A33?Su2X*r0s*LHSlL6eEMjSZ1ek9_{$)o(GoZ6T%JDbO;*Ul7D;s=y4(~)) zIw+7++W>HMOs?n)!c%VXRCVjl(F9+5D3b6_zHrz4TtQKFdSEvVx1N4Ur&>J3<6FlW)| zXCVIYjfn(@WIh5PFKK%W7f)xCh@e>s?77vOz0sdt^Sp25dOu2v=gNY9brJuH?XgoarjqSni&dc+A9Ql7| z+m7Xis^rbVCWM1=c8{{+ToZrQvgomj<4-N>^{-jU$}n}0*I({_ysB?UGg9LTUf#uO z`;D6r4hVS+=^O5*eP%ooH;@jDq^g=L4p*Yz1tzWPIOqba$!?A}pAs5yfzjk1%3ut} z<0ic4|G)&;xz-joXl%tN6Y}05sPh?Q#PKoYs&@DWey?*Gr}N;+)S%HN$CuX%g4o^C1WEL%d04sNLsUk;XEa@4qTJU_v zRGyRFn1nos+IREcZwKTh;s!!#_UhtG;EEd9eb{o$s^4Adc$H{VK++O7C>&I=*gztH zg*KZ=J(-d|K%1yW=gd(wKn#wmPwrv}q59mg-5)Y%7Y*u~3fthMo^!s*# zJAxuOXI#UkQoCE<$Nk zs&UqEbI_qYnuW)QI4x|_#T74aXNjUt`dblsNcQy6k(E#uH|=v*>eCz>idoQ8bkVuehSIqDMK2V@_<1w!MMMl?36wcGMTXDTIJN04ofeaaO=YOjs+2b zh?3x8f)(b-Io3S$`Kgych4v!#<}Nq{YZRJ> znn&?1T!T4Cw^Hf$GgC?hb)L<#Db5LSu0@t(K@*yQ0cI_BfiwZW0!k+^1-MvDwW+P#^JHp~{ zn&zAG6q7|7aW7E#j}h`?{n$gao1bgDbyktK9L)4bYYwqkg6VYWnLOR+;|j@$G!!#- zC!+y*<>hYhihS%L!I{KbQCv!PWEgVR(xpaVrU|1PFcNd8EA{VZwW9{gE7R>c5~~$3 z_8G{SsC~tnvS4&nlhZf2$wTA>6GFol(L3ILz0A>VzvC~_F7ojj$}BrnJkYi{FafW% zzoBRsO?W_1r=5`iUx=Bgmk5Arenxb(YzL^_Nrs=ci8mdc>*C@J-X8jlk1vt`L_z*U z+meto&Lzg(6xiIMa5v> z8L$)&aW9GBRO*9<=*M6Tv4{WY*`2lyPsKn#mh=Wb?3$ysmL3#H37VoFxzpU=e%4to zjyz}sfz8IQxnh`W7AN>s4TK}%66JurLB}R!Z-sKr21k-hieSygMp9Jp{VCDcz);At z85>B|7)w{cTEHfBl3r?85t@h5{zBGgE`|SP!WG~#AmJ*om^7Ufe??(wckAN1q7|&o z8aJO5v3>Sqt&x1`^2ckDiycX|ORODAAb{)lVPONBY9%d=$^0RGw>jShkITZUQ~-|J zjzq7dUIWn|hjX3?+KC*nTfhPB*6GciaCQgPKt?f8d8}^Jw@!m~;(;KwI^X�e0yt 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

rYo}q5c2YGM#Psh32&$C!#V=(eXgiw= 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 literal 0 HcmV?d00001 diff --git a/modules/home/common/obs-config/profiler_data/2025-08-29 17-59-05.csv.gz b/modules/home/common/obs-config/profiler_data/2025-08-29 17-59-05.csv.gz new file mode 100644 index 0000000000000000000000000000000000000000..dcb5b1f911b6cbbfa9ae3c4073814443397f6ac3 GIT binary patch literal 14318 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