From 05707a142cc0d2a730d17f0c14590fb34a533cc8 Mon Sep 17 00:00:00 2001 From: Dich Date: Wed, 28 May 2025 20:40:21 +0800 Subject: [PATCH] init:dotfiles --- alacritty/alacritty.toml | 167 + aria2/aria2.conf | 9 + atuin/config.toml | 10 + btop/btop.conf | 254 ++ fastfetch/config.jsonc | 162 + lazygit/config.yml | 23 + nushell/config.nu | 24 + nushell/env.nu | 18 + nvim/.gitignore | 8 + nvim/.neoconf.json | 15 + nvim/LICENSE | 201 + nvim/README.md | 4 + nvim/init.lua | 9 + nvim/lazy-lock.json | 48 + nvim/lazyvim.json | 15 + nvim/lua/config/autocmds.lua | 8 + nvim/lua/config/keymaps.lua | 31 + nvim/lua/config/lazy.lua | 53 + nvim/lua/config/options.lua | 3 + nvim/lua/plugins/example.lua | 197 + nvim/lua/plugins/lazygit.lua | 16 + nvim/lua/plugins/markdown.lua | 9 + nvim/lua/plugins/osc52.lua | 18 + nvim/stylua.toml | 3 + obs-studio/basic/profiles/Untitled/basic.ini | 113 + obs-studio/basic/scenes/Untitled.json | 247 ++ obs-studio/basic/scenes/Untitled.json.bak | 247 ++ obs-studio/global.ini | 19 + obs-studio/logs/2025-04-07 19-27-24.txt | 314 ++ obs-studio/logs/2025-04-07 19-31-21.txt | 357 ++ obs-studio/logs/2025-04-07 20-23-11.txt | 241 ++ obs-studio/logs/2025-04-08 16-04-53.txt | 581 +++ obs-studio/logs/2025-04-12 21-20-31.txt | 216 + .../rtmp-services/amazon_ivs_ingests.json | 625 +++ .../plugin_config/rtmp-services/package.json | 11 + .../plugin_config/rtmp-services/services.json | 3586 +++++++++++++++++ .../rtmp-services/twitch_ingests.json | 625 +++ .../profiler_data/2025-04-07 19-27-24.csv.gz | Bin 0 -> 41124 bytes .../profiler_data/2025-04-07 20-23-11.csv.gz | Bin 0 -> 38657 bytes .../profiler_data/2025-04-08 16-04-53.csv.gz | Bin 0 -> 100541 bytes .../profiler_data/2025-04-12 21-20-31.csv.gz | Bin 0 -> 6486 bytes obs-studio/user.ini | 68 + starship.toml | 80 + strawberry/strawberry.conf | 373 ++ 44 files changed, 9008 insertions(+) create mode 100644 alacritty/alacritty.toml create mode 100644 aria2/aria2.conf create mode 100644 atuin/config.toml create mode 100644 btop/btop.conf create mode 100644 fastfetch/config.jsonc create mode 100644 lazygit/config.yml create mode 100644 nushell/config.nu create mode 100644 nushell/env.nu create mode 100644 nvim/.gitignore create mode 100644 nvim/.neoconf.json create mode 100644 nvim/LICENSE create mode 100644 nvim/README.md create mode 100644 nvim/init.lua create mode 100644 nvim/lazy-lock.json create mode 100644 nvim/lazyvim.json create mode 100644 nvim/lua/config/autocmds.lua create mode 100644 nvim/lua/config/keymaps.lua create mode 100644 nvim/lua/config/lazy.lua create mode 100644 nvim/lua/config/options.lua create mode 100644 nvim/lua/plugins/example.lua create mode 100644 nvim/lua/plugins/lazygit.lua create mode 100644 nvim/lua/plugins/markdown.lua create mode 100644 nvim/lua/plugins/osc52.lua create mode 100644 nvim/stylua.toml create mode 100644 obs-studio/basic/profiles/Untitled/basic.ini create mode 100644 obs-studio/basic/scenes/Untitled.json create mode 100644 obs-studio/basic/scenes/Untitled.json.bak create mode 100644 obs-studio/global.ini create mode 100644 obs-studio/logs/2025-04-07 19-27-24.txt create mode 100644 obs-studio/logs/2025-04-07 19-31-21.txt create mode 100644 obs-studio/logs/2025-04-07 20-23-11.txt create mode 100644 obs-studio/logs/2025-04-08 16-04-53.txt create mode 100644 obs-studio/logs/2025-04-12 21-20-31.txt create mode 100644 obs-studio/plugin_config/rtmp-services/amazon_ivs_ingests.json create mode 100644 obs-studio/plugin_config/rtmp-services/package.json create mode 100644 obs-studio/plugin_config/rtmp-services/services.json create mode 100644 obs-studio/plugin_config/rtmp-services/twitch_ingests.json create mode 100644 obs-studio/profiler_data/2025-04-07 19-27-24.csv.gz create mode 100644 obs-studio/profiler_data/2025-04-07 20-23-11.csv.gz create mode 100644 obs-studio/profiler_data/2025-04-08 16-04-53.csv.gz create mode 100644 obs-studio/profiler_data/2025-04-12 21-20-31.csv.gz create mode 100644 obs-studio/user.ini create mode 100644 starship.toml create mode 100644 strawberry/strawberry.conf diff --git a/alacritty/alacritty.toml b/alacritty/alacritty.toml new file mode 100644 index 0000000..187e9b5 --- /dev/null +++ b/alacritty/alacritty.toml @@ -0,0 +1,167 @@ +[env] +TERM = "xterm-256color" +WINIT_X11_SCALE_FACTOR = "1" + +[window] +dynamic_padding = true +decorations = "full" +title = "Alacritty@CachyOS" +opacity = 0.8 +decorations_theme_variant = "Dark" + +[window.dimensions] +columns = 100 +lines = 30 + +[window.class] +instance = "Alacritty" +general = "Alacritty" + +[scrolling] +history = 10000 +multiplier = 3 + +[colors] +draw_bold_text_with_bright_colors = true + +[colors.primary] +background = "0x2E3440" +foreground = "0xD8DEE9" + +[colors.normal] +black = "0x3B4252" +red = "0xBF616A" +green = "0xA3BE8C" +yellow = "0xEBCB8B" +blue = "0x81A1C1" +magenta = "0xB48EAD" +cyan = "0x88C0D0" +white = "0xE5E9F0" + +[colors.bright] +black = "0x4C566A" +red = "0xBF616A" +green = "0xA3BE8C" +yellow = "0xEBCB8B" +blue = "0x81A1C1" +magenta = "0xB48EAD" +cyan = "0x8FBCBB" +white = "0xECEFF4" + +[font] +size = 12.0 + +[font.normal] +family = "JetBrainsMono Nerd Font" +style = "Regular" + +[font.bold] +family = "JetBrainsMono Nerd Font" +style = "Bold" + +[font.italic] +family = "JetBrainsMono Nerd Font" +style = "Italic" + + +[selection] +semantic_escape_chars = ",│`|:\"' ()[]{}<>\t" +save_to_clipboard = true + +[cursor] +style = "Underline" +vi_mode_style = "None" +unfocused_hollow = true +thickness = 0.15 + +[mouse] +hide_when_typing = true + +[[mouse.bindings]] +mouse = "Middle" +action = "PasteSelection" + +[keyboard] +[[keyboard.bindings]] +key = "Paste" +action = "Paste" + +[[keyboard.bindings]] +key = "Copy" +action = "Copy" + +[[keyboard.bindings]] +key = "L" +mods = "Control" +action = "ClearLogNotice" + +[[keyboard.bindings]] +key = "L" +mods = "Control" +mode = "~Vi" +chars = "\f" + +[[keyboard.bindings]] +key = "PageUp" +mods = "Shift" +mode = "~Alt" +action = "ScrollPageUp" + +[[keyboard.bindings]] +key = "PageDown" +mods = "Shift" +mode = "~Alt" +action = "ScrollPageDown" + +[[keyboard.bindings]] +key = "Home" +mods = "Shift" +mode = "~Alt" +action = "ScrollToTop" + +[[keyboard.bindings]] +key = "End" +mods = "Shift" +mode = "~Alt" +action = "ScrollToBottom" + +[[keyboard.bindings]] +key = "V" +mods = "Control|Shift" +action = "Paste" + +[[keyboard.bindings]] +key = "C" +mods = "Control|Shift" +action = "Copy" + +[[keyboard.bindings]] +key = "F" +mods = "Control|Shift" +action = "SearchForward" + +[[keyboard.bindings]] +key = "B" +mods = "Control|Shift" +action = "SearchBackward" + +[[keyboard.bindings]] +key = "C" +mods = "Control|Shift" +mode = "Vi" +action = "ClearSelection" + +[[keyboard.bindings]] +key = "Key0" +mods = "Control" +action = "ResetFontSize" + +[general] +live_config_reload = true +working_directory = "None" + +[terminal.shell] +program = "/usr/bin/sh" +args = ["-c", "fastfetch && exec nu"] + + diff --git a/aria2/aria2.conf b/aria2/aria2.conf new file mode 100644 index 0000000..10f2df0 --- /dev/null +++ b/aria2/aria2.conf @@ -0,0 +1,9 @@ +enable-rpc=true +rpc-listen-all=true +rpc-allow-origin-all=true +rpc-listen-port=6800 +continue=true +dir=/home/dich/Downloads +input-file=/home/dich/.config/aria2/aria2.session +save-session=/home/dich/.config/aria2/aria2.session +save-session-interval=60 diff --git a/atuin/config.toml b/atuin/config.toml new file mode 100644 index 0000000..eedc858 --- /dev/null +++ b/atuin/config.toml @@ -0,0 +1,10 @@ +enter_accept = true + +[sync] +records = true + +[preview] +strategy = "auto" + +[daemon] +enabled = false diff --git a/btop/btop.conf b/btop/btop.conf new file mode 100644 index 0000000..ce54a93 --- /dev/null +++ b/btop/btop.conf @@ -0,0 +1,254 @@ +#? Config file for btop v. 1.4.3 + +#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes. +#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes" +color_theme = "Default" + +#* If the theme set background should be shown, set to False if you want terminal background transparency. +theme_background = True + +#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false. +truecolor = True + +#* Set to true to force tty mode regardless if a real tty has been detected or not. +#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols. +force_tty = False + +#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets. +#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box. +#* Use whitespace " " as separator between different presets. +#* Example: "cpu:0:default,mem:0:tty,proc:1:default cpu:0:braille,proc:0:tty" +presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty" + +#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists. +#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift. +vim_keys = False + +#* Rounded corners on boxes, is ignored if TTY mode is ON. +rounded_corners = True + +#* Default symbols to use for graph creation, "braille", "block" or "tty". +#* "braille" offers the highest resolution but might not be included in all fonts. +#* "block" has half the resolution of braille but uses more common characters. +#* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY. +#* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view. +graph_symbol = "braille" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_cpu = "default" + +# Graph symbol to use for graphs in gpu box, "default", "braille", "block" or "tty". +graph_symbol_gpu = "default" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_mem = "default" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_net = "default" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_proc = "default" + +#* Manually set which boxes to show. Available values are "cpu mem net proc" and "gpu0" through "gpu5", separate values with whitespace. +shown_boxes = "cpu mem net proc" + +#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs. +update_ms = 2000 + +#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct", +#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly. +proc_sorting = "cpu lazy" + +#* Reverse sorting order, True or False. +proc_reversed = False + +#* Show processes as a tree. +proc_tree = False + +#* Use the cpu graph colors in the process list. +proc_colors = True + +#* Use a darkening gradient in the process list. +proc_gradient = True + +#* If process cpu usage should be of the core it's running on or usage of the total available cpu power. +proc_per_core = False + +#* Show process memory as bytes instead of percent. +proc_mem_bytes = True + +#* Show cpu graph for each process. +proc_cpu_graphs = True + +#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate) +proc_info_smaps = False + +#* Show proc box on left side of screen instead of right. +proc_left = False + +#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop). +proc_filter_kernel = False + +#* In tree-view, always accumulate child process resources in the parent process. +proc_aggregate = False + +#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available. +#* Select from a list of detected attributes from the options menu. +cpu_graph_upper = "Auto" + +#* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available. +#* Select from a list of detected attributes from the options menu. +cpu_graph_lower = "Auto" + +#* If gpu info should be shown in the cpu box. Available values = "Auto", "On" and "Off". +show_gpu_info = "Auto" + +#* Toggles if the lower CPU graph should be inverted. +cpu_invert_lower = True + +#* Set to True to completely disable the lower CPU graph. +cpu_single_graph = False + +#* Show cpu box at bottom of screen instead of top. +cpu_bottom = False + +#* Shows the system uptime in the CPU box. +show_uptime = True + +#* Show cpu temperature. +check_temp = True + +#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors. +cpu_sensor = "Auto" + +#* Show temperatures for cpu cores also if check_temp is True and sensors has been found. +show_coretemp = True + +#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core. +#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine. +#* Format "x:y" x=core with wrong temp, y=core with correct temp, use space as separator between multiple entries. +#* Example: "4:0 5:1 6:3" +cpu_core_map = "" + +#* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine". +temp_scale = "celsius" + +#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024. +base_10_sizes = False + +#* Show CPU frequency. +show_cpu_freq = True + +#* Draw a clock at top of screen, formatting according to strftime, empty string to disable. +#* Special formatting: /host = hostname | /user = username | /uptime = system uptime +clock_format = "%X" + +#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort. +background_update = True + +#* Custom cpu model name, empty string to disable. +custom_cpu_name = "" + +#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ". +#* Begin line with "exclude=" to change to exclude filter, otherwise defaults to "most include" filter. Example: disks_filter="exclude=/boot /home/user". +disks_filter = "" + +#* Show graphs instead of meters for memory values. +mem_graphs = True + +#* Show mem box below net box instead of above. +mem_below_net = False + +#* Count ZFS ARC in cached and available memory. +zfs_arc_cached = True + +#* If swap memory should be shown in memory box. +show_swap = True + +#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk. +swap_disk = True + +#* If mem box should be split to also show disks info. +show_disks = True + +#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar. +only_physical = True + +#* Read disks list from /etc/fstab. This also disables only_physical. +use_fstab = True + +#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool) +zfs_hide_datasets = False + +#* Set to true to show available disk space for privileged users. +disk_free_priv = False + +#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view. +show_io_stat = True + +#* Toggles io mode for disks, showing big graphs for disk read/write speeds. +io_mode = False + +#* Set to True to show combined read/write io graphs in io mode. +io_graph_combined = False + +#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ". +#* Example: "/mnt/media:100 /:20 /boot:1". +io_graph_speeds = "" + +#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False. +net_download = 100 + +net_upload = 100 + +#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest. +net_auto = True + +#* Sync the auto scaling for download and upload to whichever currently has the highest scale. +net_sync = True + +#* Starts with the Network Interface specified here. +net_iface = "" + +#* "True" shows bitrates in base 10 (Kbps, Mbps). "False" shows bitrates in binary sizes (Kibps, Mibps, etc.). "Auto" uses base_10_sizes. +base_10_bitrate = "Auto" + +#* Show battery stats in top right if battery is present. +show_battery = True + +#* Which battery to use if multiple are present. "Auto" for auto detection. +selected_battery = "Auto" + +#* Show power stats of battery next to charge indicator. +show_battery_watts = True + +#* Set loglevel for "~/.config/btop/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG". +#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info. +log_level = "WARNING" + +#* Measure PCIe throughput on NVIDIA cards, may impact performance on certain cards. +nvml_measure_pcie_speeds = True + +#* Measure PCIe throughput on AMD cards, may impact performance on certain cards. +rsmi_measure_pcie_speeds = True + +#* Horizontally mirror the GPU graph. +gpu_mirror_graph = True + +#* Custom gpu0 model name, empty string to disable. +custom_gpu_name0 = "" + +#* Custom gpu1 model name, empty string to disable. +custom_gpu_name1 = "" + +#* Custom gpu2 model name, empty string to disable. +custom_gpu_name2 = "" + +#* Custom gpu3 model name, empty string to disable. +custom_gpu_name3 = "" + +#* Custom gpu4 model name, empty string to disable. +custom_gpu_name4 = "" + +#* Custom gpu5 model name, empty string to disable. +custom_gpu_name5 = "" diff --git a/fastfetch/config.jsonc b/fastfetch/config.jsonc new file mode 100644 index 0000000..2584afe --- /dev/null +++ b/fastfetch/config.jsonc @@ -0,0 +1,162 @@ +{ + "display": { + "separator": " ", + }, + "logo": { + "source": "apple", + "padding": { + "top": 0 + }, + }, + "modules": [ + { + "type": "custom", + "format": "\u001b[36m╭────────────┬──────────────────Hardware───────────────────────╮", + }, + { + "type": "host", + "key": " PC │", + "keyColor": "cyan", + "format": "{2}", + "outputColor": "cyan", + }, + { + "type": "board", + "key": "│ ╠ Board │", + "keyColor": "cyan", + "format": "{1}", + "outputColor": "cyan", + }, + { + "type": "cpu", + "key": "│ ╠ CPU │", + "keyColor": "cyan", + "format": "{1}", + "outputColor": "cyan", + }, + { + "type": "gpu", + "key": "│ ╠ GPU │", + "keyColor": "cyan", + "format": "{1} {2}", + "outputColor": "cyan", + }, + { + "type": "memory", + "key": "│ ╠ RAM │", + "keyColor": "cyan", + "outputColor": "cyan", + }, + { + "type": "disk", + "key": "│ ╠ Disk │", + "keyColor": "cyan", + "outputColor": "cyan", + "format": "{1} / {2} ({3}) {9}", + }, + { + "type": "display", + "key": "│ ╠󰍺 Display │", + "keyColor": "cyan", + "outputColor": "cyan", + "format": "{1}x{2}@{3}Hz in {12}-inch", + }, + { + "type": "battery", + "key": "│ ╠ Battery │", + "keyColor": "cyan", + "outputColor": "cyan", + }, + { + "type": "uptime", + "key": "│ ╚ Uptime │", + "keyColor": "cyan", + "format": "{1} days {2} hours {3} minutes", + "outputColor": "cyan", + }, + { + "type": "custom", + "format": "\u001b[36m╰────────────┴─────────────────────────────────────────────────╯", + }, + { + "type": "custom", + "format": "\u001b[34m╭────────────┬──────────────────Software───────────────────────╮", + }, + { + "type": "os", + "key": " OS │", + "keyColor": "blue", + "format": "{2} {8} {12}", + "outputColor": "blue", + }, + { + "type": "kernel", + "key": "│ ╠ Kernel │", + "keyColor": "blue", + "format": "{1} {2}", + "outputColor": "blue", + }, + { + "type": "packages", + "key": "│ ╠󰏖 Packages│", + "keyColor": "blue", + "outputColor": "blue", + }, + { + "type": "shell", + "key": "│ ╠ Shell │", + "keyColor": "blue", + "outputColor": "blue", + "format": "nushell", + }, + { + "type": "terminal", + "key": "│ ╠ Terminal│", + "keyColor": "blue", + "outputColor": "blue", + "format": "{5} {6}", + }, + { + "type": "lm", + "key": "│ ╠󰍂 LM │", + "keyColor": "blue", + "outputColor": "blue", + }, + { + "type": "de", + "key": "│ ╠ DE │", + "keyColor": "blue", + "outputColor": "blue", + "format": "{2}", + }, + { + "type": "terminalfont", + "key": "│ ╠󰬴 TermFont│", + "keyColor": "blue", + "outputColor": "blue", + }, + { + "type": "icons", + "key": "│ ╠ Icons │", + "keyColor": "blue", + "outputColor": "blue", + "format": "{1} {2}", + }, + { + "type": "title", + "key": "│ ╚ Hostname│", + "keyColor": "blue", + "outputColor": "blue", + "format": "{8}", + }, + { + "type": "custom", + "format": "\u001b[34m╰────────────┴─────────────────────────────────────────────────╯", + }, + { + "type": "custom", + "format": "\u001b[90m \u001b[91m \u001b[92m \u001b[93m \u001b[94m \u001b[95m \u001b[96m \u001b[97m \u001b[97m \u001b[96m \u001b[95m \u001b[94m \u001b[93m \u001b[92m \u001b[91m \u001b[90m", + }, + ], +} + diff --git a/lazygit/config.yml b/lazygit/config.yml new file mode 100644 index 0000000..6cfbafc --- /dev/null +++ b/lazygit/config.yml @@ -0,0 +1,23 @@ +gui: + authorColors: + "*": "#b4befe" + theme: + activeBorderColor: + - "#cba6f7" + - bold + inactiveBorderColor: + - "#a6adc8" + optionsTextColor: + - "#89b4fa" + selectedLineBgColor: + - "#313244" + cherryPickedCommitBgColor: + - "#45475a" + cherryPickedCommitFgColor: + - "#cba6f7" + unstagedChangesColor: + - "#f38ba8" + defaultFgColor: + - "#cdd6f4" + searchingActiveBorderColor: + - "#f9e2af" diff --git a/nushell/config.nu b/nushell/config.nu new file mode 100644 index 0000000..51e7758 --- /dev/null +++ b/nushell/config.nu @@ -0,0 +1,24 @@ +# config.nu +# +# Installed by: +# version = "0.103.0" +# +# This file is used to override default Nushell settings, define +# (or import) custom commands, or run any other startup tasks. +# See https://www.nushell.sh/book/configuration.html +# +# This file is loaded after env.nu and before login.nu +# +# You can open this file in your default editor using: +# config nu +# +# See `help config nu` for more options +# +# You can remove these comments if you want or leave +# them for future reference. + +source ~/.local/share/atuin/init.nu +mkdir ($nu.data-dir | path join "vendor/autoload") +starship init nu | save -f ($nu.data-dir | path join "vendor/autoload/starship.nu") +# 彻底关闭启动欢迎横幅 +$env.config.show_banner = false diff --git a/nushell/env.nu b/nushell/env.nu new file mode 100644 index 0000000..2a6217e --- /dev/null +++ b/nushell/env.nu @@ -0,0 +1,18 @@ +# env.nu +# +# Installed by: +# version = "0.103.0" +# +# Previously, environment variables were typically configured in `env.nu`. +# In general, most configuration can and should be performed in `config.nu` +# or one of the autoload directories. +# +# This file is generated for backwards compatibility for now. +# It is loaded before config.nu and login.nu +# +# See https://www.nushell.sh/book/configuration.html +# +# Also see `help config env` for more options. +# +# You can remove these comments if you want or leave +# them for future reference. \ No newline at end of file diff --git a/nvim/.gitignore b/nvim/.gitignore new file mode 100644 index 0000000..cc5457a --- /dev/null +++ b/nvim/.gitignore @@ -0,0 +1,8 @@ +tt.* +.tests +doc/tags +debug +.repro +foo.* +*.log +data diff --git a/nvim/.neoconf.json b/nvim/.neoconf.json new file mode 100644 index 0000000..7c48087 --- /dev/null +++ b/nvim/.neoconf.json @@ -0,0 +1,15 @@ +{ + "neodev": { + "library": { + "enabled": true, + "plugins": true + } + }, + "neoconf": { + "plugins": { + "lua_ls": { + "enabled": true + } + } + } +} diff --git a/nvim/LICENSE b/nvim/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/nvim/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/nvim/README.md b/nvim/README.md new file mode 100644 index 0000000..185280b --- /dev/null +++ b/nvim/README.md @@ -0,0 +1,4 @@ +# 💤 LazyVim + +A starter template for [LazyVim](https://github.com/LazyVim/LazyVim). +Refer to the [documentation](https://lazyvim.github.io/installation) to get started. diff --git a/nvim/init.lua b/nvim/init.lua new file mode 100644 index 0000000..bb0d29c --- /dev/null +++ b/nvim/init.lua @@ -0,0 +1,9 @@ +-- bootstrap lazy.nvim, LazyVim and your plugins +require("config.lazy") + +vim.api.nvim_create_autocmd("FileType", { + pattern = "markdown", + callback = function() + vim.opt_local.conceallevel = 0 + end, +}) diff --git a/nvim/lazy-lock.json b/nvim/lazy-lock.json new file mode 100644 index 0000000..73a7cd7 --- /dev/null +++ b/nvim/lazy-lock.json @@ -0,0 +1,48 @@ +{ + "LazyVim": { "branch": "main", "commit": "25abbf546d564dc484cf903804661ba12de45507" }, + "SchemaStore.nvim": { "branch": "main", "commit": "a9ba109549de51e3b4594d39a1c07f14b9d0cfa5" }, + "blink.cmp": { "branch": "main", "commit": "022521a8910a5543b0251b21c9e1a1e989745796" }, + "bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" }, + "catppuccin": { "branch": "main", "commit": "56a9dfd1e05868cf3189369aad87242941396563" }, + "clangd_extensions.nvim": { "branch": "main", "commit": "db28f29be928d18cbfb86fbfb9f83f584f658feb" }, + "cmake-tools.nvim": { "branch": "master", "commit": "591ae37fc5494677e929118f0a182d2b61fe1af1" }, + "conform.nvim": { "branch": "master", "commit": "6feb2f28f9a9385e401857b21eeac3c1b66dd628" }, + "dashboard-nvim": { "branch": "master", "commit": "0f99b3cd66b9fde13926724c67c6e1abeb48e07d" }, + "flash.nvim": { "branch": "main", "commit": "3c942666f115e2811e959eabbdd361a025db8b63" }, + "friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" }, + "gitsigns.nvim": { "branch": "main", "commit": "8b729e489f1475615dc6c9737da917b3bc163605" }, + "grug-far.nvim": { "branch": "main", "commit": "f24022147ca4a0fe1d424a520a9437accbeba193" }, + "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, + "lazydev.nvim": { "branch": "main", "commit": "2367a6c0a01eb9edb0464731cc0fb61ed9ab9d2c" }, + "lazygit.nvim": { "branch": "main", "commit": "b9eae3badab982e71abab96d3ee1d258f0c07961" }, + "lualine.nvim": { "branch": "master", "commit": "0c6cca9f2c63dadeb9225c45bc92bb95a151d4af" }, + "markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "1a31f824b9cd5bc6f342fc29e9a53b60d74af245" }, + "mason-nvim-dap.nvim": { "branch": "main", "commit": "4c2cdc69d69fe00c15ae8648f7e954d99e5de3ea" }, + "mason.nvim": { "branch": "main", "commit": "fc98833b6da5de5a9c5b1446ac541577059555be" }, + "mini.ai": { "branch": "main", "commit": "7f1fe86277f0e977642cf8fe15f004229f61e61a" }, + "mini.icons": { "branch": "main", "commit": "397ed3807e96b59709ef3292f0a3e253d5c1dc0a" }, + "mini.pairs": { "branch": "main", "commit": "69864a2efb36c030877421634487fd90db1e4298" }, + "noice.nvim": { "branch": "main", "commit": "0427460c2d7f673ad60eb02b35f5e9926cf67c59" }, + "nui.nvim": { "branch": "main", "commit": "7cd18e73cfbd70e1546931b7268b3eebaeff9391" }, + "nvim-dap": { "branch": "master", "commit": "b0f983507e3702f073bfe1516846e58b56d4e42f" }, + "nvim-dap-go": { "branch": "main", "commit": "8763ced35b19c8dc526e04a70ab07c34e11ad064" }, + "nvim-dap-ui": { "branch": "master", "commit": "73a26abf4941aa27da59820fd6b028ebcdbcf932" }, + "nvim-dap-virtual-text": { "branch": "master", "commit": "fbdb48c2ed45f4a8293d0d483f7730d24467ccb6" }, + "nvim-lint": { "branch": "master", "commit": "b47cbb249351873e3a571751c3fb66ed6369852f" }, + "nvim-lspconfig": { "branch": "master", "commit": "b8e7957bde4cbb3cb25a13a62548f7c273b026e9" }, + "nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" }, + "nvim-osc52": { "branch": "main", "commit": "04cfaba1865ae5c53b6f887c3ca7304973824fb2" }, + "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, + "nvim-treesitter-textobjects": { "branch": "master", "commit": "0f051e9813a36481f48ca1f833897210dbcfffde" }, + "nvim-ts-autotag": { "branch": "main", "commit": "a1d526af391f6aebb25a8795cbc05351ed3620b5" }, + "nvim-web-devicons": { "branch": "master", "commit": "1fb58cca9aebbc4fd32b086cb413548ce132c127" }, + "persistence.nvim": { "branch": "main", "commit": "166a79a55bfa7a4db3e26fc031b4d92af71d0b51" }, + "plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" }, + "snacks.nvim": { "branch": "main", "commit": "bc0630e43be5699bb94dadc302c0d21615421d93" }, + "todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" }, + "tokyonight.nvim": { "branch": "main", "commit": "057ef5d260c1931f1dffd0f052c685dcd14100a3" }, + "trouble.nvim": { "branch": "main", "commit": "85bedb7eb7fa331a2ccbecb9202d8abba64d37b3" }, + "ts-comments.nvim": { "branch": "main", "commit": "1bd9d0ba1d8b336c3db50692ffd0955fe1bb9f0c" }, + "which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" } +} diff --git a/nvim/lazyvim.json b/nvim/lazyvim.json new file mode 100644 index 0000000..54fa8d2 --- /dev/null +++ b/nvim/lazyvim.json @@ -0,0 +1,15 @@ +{ + "extras": [ + "lazyvim.plugins.extras.dap.core", + "lazyvim.plugins.extras.lang.clangd", + "lazyvim.plugins.extras.lang.cmake", + "lazyvim.plugins.extras.lang.docker", + "lazyvim.plugins.extras.lang.go", + "lazyvim.plugins.extras.lang.yaml" + ], + "install_version": 8, + "news": { + "NEWS.md": "10960" + }, + "version": 8 +} \ No newline at end of file diff --git a/nvim/lua/config/autocmds.lua b/nvim/lua/config/autocmds.lua new file mode 100644 index 0000000..4221e75 --- /dev/null +++ b/nvim/lua/config/autocmds.lua @@ -0,0 +1,8 @@ +-- Autocmds are automatically loaded on the VeryLazy event +-- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua +-- +-- Add any additional autocmds here +-- with `vim.api.nvim_create_autocmd` +-- +-- Or remove existing autocmds by their group name (which is prefixed with `lazyvim_` for the defaults) +-- e.g. vim.api.nvim_del_augroup_by_name("lazyvim_wrap_spell") diff --git a/nvim/lua/config/keymaps.lua b/nvim/lua/config/keymaps.lua new file mode 100644 index 0000000..a74173c --- /dev/null +++ b/nvim/lua/config/keymaps.lua @@ -0,0 +1,31 @@ +-- Keymaps are automatically loaded on the VeryLazy event +-- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua +-- Add any additional keymaps here + +local map = vim.keymap.set +local opts = { noremap = true, silent = true } + +-- === VSCode-like buffer/tab navigation === +map("n", "", "bnext", { desc = "Next buffer (like VSCode)" }) +map("n", "", "bprevious", { desc = "Previous buffer (like VSCode)" }) + +-- === Close buffer like Ctrl + W in VSCode === +vim.keymap.set("n", "", "BufferLinePickClose", { desc = "Close buffer (BufferLine)" }) + +vim.keymap.set("n", "", function() +if vim.bo.buftype == "terminal" then + vim.cmd("vsplit | terminal") + else + vim.cmd("botright split | terminal") + end + end, { desc = "Split terminal" }) + +-- 在终端模式下的快捷键 +vim.keymap.set("t", "", "h", { desc = "Go to left window" }) +vim.keymap.set("t", "", "j", { desc = "Go to lower window" }) +vim.keymap.set("t", "", "k", { desc = "Go to upper window" }) +vim.keymap.set("t", "", "l", { desc = "Go to right window" }) + +vim.keymap.set("n", "xo", function() +vim.fn.jobstart({ "xdg-open", vim.fn.expand("%:p") }, { detach = true }) +end, { desc = "使用系统默认应用程序打开当前文件" }) diff --git a/nvim/lua/config/lazy.lua b/nvim/lua/config/lazy.lua new file mode 100644 index 0000000..d73bfa1 --- /dev/null +++ b/nvim/lua/config/lazy.lua @@ -0,0 +1,53 @@ +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end +end +vim.opt.rtp:prepend(lazypath) + +require("lazy").setup({ + spec = { + -- add LazyVim and import its plugins + { "LazyVim/LazyVim", import = "lazyvim.plugins" }, + -- import/override with your plugins + { import = "plugins" }, + }, + defaults = { + -- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup. + -- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default. + lazy = false, + -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, + -- have outdated releases, which may break your Neovim install. + version = false, -- always use the latest git commit + -- version = "*", -- try installing the latest stable version for plugins that support semver + }, + install = { colorscheme = { "tokyonight", "habamax" } }, + checker = { + enabled = true, -- check for plugin updates periodically + notify = false, -- notify on update + }, -- automatically check for plugin updates + performance = { + rtp = { + -- disable some rtp plugins + disabled_plugins = { + "gzip", + -- "matchit", + -- "matchparen", + -- "netrwPlugin", + "tarPlugin", + "tohtml", + "tutor", + "zipPlugin", + }, + }, + }, +}) diff --git a/nvim/lua/config/options.lua b/nvim/lua/config/options.lua new file mode 100644 index 0000000..3ea1454 --- /dev/null +++ b/nvim/lua/config/options.lua @@ -0,0 +1,3 @@ +-- Options are automatically loaded before lazy.nvim startup +-- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua +-- Add any additional options here diff --git a/nvim/lua/plugins/example.lua b/nvim/lua/plugins/example.lua new file mode 100644 index 0000000..17f53d6 --- /dev/null +++ b/nvim/lua/plugins/example.lua @@ -0,0 +1,197 @@ +-- since this is just an example spec, don't actually load anything here and return an empty spec +-- stylua: ignore +if true then return {} end + +-- every spec file under the "plugins" directory will be loaded automatically by lazy.nvim +-- +-- In your plugin files, you can: +-- * add extra plugins +-- * disable/enabled LazyVim plugins +-- * override the configuration of LazyVim plugins +return { + -- add gruvbox + { "ellisonleao/gruvbox.nvim" }, + + -- Configure LazyVim to load gruvbox + { + "LazyVim/LazyVim", + opts = { + colorscheme = "gruvbox", + }, + }, + + -- change trouble config + { + "folke/trouble.nvim", + -- opts will be merged with the parent spec + opts = { use_diagnostic_signs = true }, + }, + + -- disable trouble + { "folke/trouble.nvim", enabled = false }, + + -- override nvim-cmp and add cmp-emoji + { + "hrsh7th/nvim-cmp", + dependencies = { "hrsh7th/cmp-emoji" }, + ---@param opts cmp.ConfigSchema + opts = function(_, opts) + table.insert(opts.sources, { name = "emoji" }) + end, + }, + + -- change some telescope options and a keymap to browse plugin files + { + "nvim-telescope/telescope.nvim", + keys = { + -- add a keymap to browse plugin files + -- stylua: ignore + { + "fp", + function() require("telescope.builtin").find_files({ cwd = require("lazy.core.config").options.root }) end, + desc = "Find Plugin File", + }, + }, + -- change some options + opts = { + defaults = { + layout_strategy = "horizontal", + layout_config = { prompt_position = "top" }, + sorting_strategy = "ascending", + winblend = 0, + }, + }, + }, + + -- add pyright to lspconfig + { + "neovim/nvim-lspconfig", + ---@class PluginLspOpts + opts = { + ---@type lspconfig.options + servers = { + -- pyright will be automatically installed with mason and loaded with lspconfig + pyright = {}, + }, + }, + }, + + -- add tsserver and setup with typescript.nvim instead of lspconfig + { + "neovim/nvim-lspconfig", + dependencies = { + "jose-elias-alvarez/typescript.nvim", + init = function() + require("lazyvim.util").lsp.on_attach(function(_, buffer) + -- stylua: ignore + vim.keymap.set( "n", "co", "TypescriptOrganizeImports", { buffer = buffer, desc = "Organize Imports" }) + vim.keymap.set("n", "cR", "TypescriptRenameFile", { desc = "Rename File", buffer = buffer }) + end) + end, + }, + ---@class PluginLspOpts + opts = { + ---@type lspconfig.options + servers = { + -- tsserver will be automatically installed with mason and loaded with lspconfig + tsserver = {}, + }, + -- you can do any additional lsp server setup here + -- return true if you don't want this server to be setup with lspconfig + ---@type table + setup = { + -- example to setup with typescript.nvim + tsserver = function(_, opts) + require("typescript").setup({ server = opts }) + return true + end, + -- Specify * to use this function as a fallback for any server + -- ["*"] = function(server, opts) end, + }, + }, + }, + + -- for typescript, LazyVim also includes extra specs to properly setup lspconfig, + -- treesitter, mason and typescript.nvim. So instead of the above, you can use: + { import = "lazyvim.plugins.extras.lang.typescript" }, + + -- add more treesitter parsers + { + "nvim-treesitter/nvim-treesitter", + opts = { + ensure_installed = { + "bash", + "html", + "javascript", + "json", + "lua", + "markdown", + "markdown_inline", + "python", + "query", + "regex", + "tsx", + "typescript", + "vim", + "yaml", + }, + }, + }, + + -- since `vim.tbl_deep_extend`, can only merge tables and not lists, the code above + -- would overwrite `ensure_installed` with the new value. + -- If you'd rather extend the default config, use the code below instead: + { + "nvim-treesitter/nvim-treesitter", + opts = function(_, opts) + -- add tsx and treesitter + vim.list_extend(opts.ensure_installed, { + "tsx", + "typescript", + }) + end, + }, + + -- the opts function can also be used to change the default opts: + { + "nvim-lualine/lualine.nvim", + event = "VeryLazy", + opts = function(_, opts) + table.insert(opts.sections.lualine_x, { + function() + return "😄" + end, + }) + end, + }, + + -- or you can return new options to override all the defaults + { + "nvim-lualine/lualine.nvim", + event = "VeryLazy", + opts = function() + return { + --[[add your custom lualine config here]] + } + end, + }, + + -- use mini.starter instead of alpha + { import = "lazyvim.plugins.extras.ui.mini-starter" }, + + -- add jsonls and schemastore packages, and setup treesitter for json, json5 and jsonc + { import = "lazyvim.plugins.extras.lang.json" }, + + -- add any tools you want to have installed below + { + "williamboman/mason.nvim", + opts = { + ensure_installed = { + "stylua", + "shellcheck", + "shfmt", + "flake8", + }, + }, + }, +} diff --git a/nvim/lua/plugins/lazygit.lua b/nvim/lua/plugins/lazygit.lua new file mode 100644 index 0000000..f260504 --- /dev/null +++ b/nvim/lua/plugins/lazygit.lua @@ -0,0 +1,16 @@ +return { + "kdheepak/lazygit.nvim", + cmd = { + "LazyGit", + "LazyGitConfig", + "LazyGitCurrentFile", + "LazyGitFilter", + "LazyGitFilterCurrentFile", + }, + keys = { + { "gg", "LazyGit", desc = "Open LazyGit" }, + }, + dependencies = { + "nvim-lua/plenary.nvim", + }, +} diff --git a/nvim/lua/plugins/markdown.lua b/nvim/lua/plugins/markdown.lua new file mode 100644 index 0000000..1b0209f --- /dev/null +++ b/nvim/lua/plugins/markdown.lua @@ -0,0 +1,9 @@ +return { + { + "iamcco/markdown-preview.nvim", + cmd = { "MarkdownPreviewToggle", "MarkdownPreview", "MarkdownPreviewStop" }, + ft = { "markdown" }, + build = ':call mkdp#util#install()' + } +} + diff --git a/nvim/lua/plugins/osc52.lua b/nvim/lua/plugins/osc52.lua new file mode 100644 index 0000000..7a20603 --- /dev/null +++ b/nvim/lua/plugins/osc52.lua @@ -0,0 +1,18 @@ +return { + "ojroques/nvim-osc52", + config = function() + require("osc52").setup { + max_length = 0, -- 不限制长度 + silent = false, + trim = false, + } + + local function copy() + if vim.v.event.operator == "y" and vim.v.event.regname == "" then + require("osc52").copy_register("") + end + end + + vim.api.nvim_create_autocmd("TextYankPost", { callback = copy }) + end, +} diff --git a/nvim/stylua.toml b/nvim/stylua.toml new file mode 100644 index 0000000..5d6c50d --- /dev/null +++ b/nvim/stylua.toml @@ -0,0 +1,3 @@ +indent_type = "Spaces" +indent_width = 2 +column_width = 120 \ No newline at end of file diff --git a/obs-studio/basic/profiles/Untitled/basic.ini b/obs-studio/basic/profiles/Untitled/basic.ini new file mode 100644 index 0000000..63a657c --- /dev/null +++ b/obs-studio/basic/profiles/Untitled/basic.ini @@ -0,0 +1,113 @@ +[General] +Name=Untitled + +[Output] +Mode=Simple +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/dich +RecFormat2=mp4 +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/dich +RecFormat2=mkv +RecUseRescale=false +RecTracks=1 +RecEncoder=none +FLVTrack=1 +StreamMultiTrackAudioMixes=1 +FFOutputToFile=true +FFFilePath=/home/dich +FFVBitrate=2500 +FFVGOPSize=250 +FFUseRescale=false +FFIgnoreCompat=false +FFABitrate=160 +FFAudioMixes=1 +Track1Bitrate=160 +Track2Bitrate=160 +Track3Bitrate=160 +Track4Bitrate=160 +Track5Bitrate=160 +Track6Bitrate=160 +RecSplitFileTime=15 +RecSplitFileSize=2048 +RecRB=false +RecRBTime=20 +RecRBSize=512 +AudioEncoder=libfdk_aac +RecAudioEncoder=libfdk_aac +RecSplitFileType=Time +FFFormat= +FFFormatMimeType= +FFVEncoderId=0 +FFVEncoder= +FFAEncoderId=0 +FFAEncoder= +FFExtension=mp4 + +[Video] +BaseCX=1920 +BaseCY=1080 +OutputCX=1280 +OutputCY=720 +FPSType=0 +FPSCommon=30 +FPSInt=30 +FPSNum=30 +FPSDen=1 +ScaleType=bicubic +ColorFormat=NV12 +ColorSpace=709 +ColorRange=Partial +SdrWhiteLevel=300 +HdrNominalPeakLevel=1000 + +[Audio] +MonitoringDeviceId=alsa_output.pci-0000_05_00.6.analog-stereo +MonitoringDeviceName=Family 17h/19h/1ah HD Audio Controller Analog Stereo +SampleRate=48000 +ChannelSetup=Stereo +MeterDecayRate=23.53 +PeakMeterType=0 + +[Panels] +CookieId=9FF9985CAAB5C18B diff --git a/obs-studio/basic/scenes/Untitled.json b/obs-studio/basic/scenes/Untitled.json new file mode 100644 index 0000000..1cb6079 --- /dev/null +++ b/obs-studio/basic/scenes/Untitled.json @@ -0,0 +1,247 @@ +{ + "DesktopAudioDevice1": { + "prev_ver": 520093699, + "name": "Desktop Audio", + "uuid": "02d5047a-68ce-43a6-a1c2-401dfb117480", + "id": "pulse_output_capture", + "versioned_id": "pulse_output_capture", + "settings": { + "device_id": "alsa_output.pci-0000_05_00.6.analog-stereo.monitor" + }, + "mixers": 255, + "sync": 0, + "flags": 0, + "volume": 0.32882726192474365, + "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": {} + }, + "AuxAudioDevice1": { + "prev_ver": 520093699, + "name": "Mic/Aux", + "uuid": "72203d14-38fc-419b-aac9-46a4c1385437", + "id": "pulse_input_capture", + "versioned_id": "pulse_input_capture", + "settings": { + "device_id": "alsa_input.pci-0000_05_00.6.analog-stereo" + }, + "mixers": 255, + "sync": 0, + "flags": 0, + "volume": 0.31743475794792175, + "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": {}, + "filters": [ + { + "prev_ver": 520093699, + "name": "噪声抑制", + "uuid": "fd3d521b-86d5-48c6-b720-264c708ea2cb", + "id": "noise_suppress_filter", + "versioned_id": "noise_suppress_filter_v2", + "settings": {}, + "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": {}, + "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": 520093699, + "name": "Scene", + "uuid": "aa201eee-721f-44aa-8e7a-6383fa5da63a", + "id": "scene", + "versioned_id": "scene", + "settings": { + "id_counter": 1, + "custom_size": false, + "items": [ + { + "name": "Screen Capture (PipeWire)", + "source_uuid": "385bea17-7de2-41ea-9fbb-acc8c50c9fb3", + "visible": true, + "locked": false, + "rot": 0.0, + "scale_ref": { + "x": 1920.0, + "y": 1080.0 + }, + "align": 5, + "bounds_type": 0, + "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": 0.75, + "y": 0.75 + }, + "scale_rel": { + "x": 0.75, + "y": 0.75 + }, + "bounds": { + "x": 0.0, + "y": 0.0 + }, + "bounds_rel": { + "x": 0.0, + "y": 0.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, + "private_settings": {} + }, + { + "prev_ver": 520093699, + "name": "Screen Capture (PipeWire)", + "uuid": "385bea17-7de2-41ea-9fbb-acc8c50c9fb3", + "id": "pipewire-screen-capture-source", + "versioned_id": "pipewire-screen-capture-source", + "settings": { + "RestoreToken": "5f9f4fdb-56d1-45a2-aedf-19564983774a" + }, + "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": [], + "transitions": [], + "saved_projectors": [], + "current_transition": "淡入淡出", + "transition_duration": 300, + "preview_locked": false, + "scaling_enabled": false, + "scaling_level": 0, + "scaling_off_x": 0.0, + "scaling_off_y": 0.0, + "virtual-camera": { + "type2": 3 + }, + "modules": { + "scripts-tool": [], + "output-timer": { + "streamTimerHours": 0, + "streamTimerMinutes": 0, + "streamTimerSeconds": 30, + "recordTimerHours": 0, + "recordTimerMinutes": 0, + "recordTimerSeconds": 30, + "autoStartStreamTimer": false, + "autoStartRecordTimer": false, + "pauseRecordTimer": true + } + }, + "resolution": { + "x": 1920, + "y": 1080 + }, + "version": 2 +} \ No newline at end of file diff --git a/obs-studio/basic/scenes/Untitled.json.bak b/obs-studio/basic/scenes/Untitled.json.bak new file mode 100644 index 0000000..1cb6079 --- /dev/null +++ b/obs-studio/basic/scenes/Untitled.json.bak @@ -0,0 +1,247 @@ +{ + "DesktopAudioDevice1": { + "prev_ver": 520093699, + "name": "Desktop Audio", + "uuid": "02d5047a-68ce-43a6-a1c2-401dfb117480", + "id": "pulse_output_capture", + "versioned_id": "pulse_output_capture", + "settings": { + "device_id": "alsa_output.pci-0000_05_00.6.analog-stereo.monitor" + }, + "mixers": 255, + "sync": 0, + "flags": 0, + "volume": 0.32882726192474365, + "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": {} + }, + "AuxAudioDevice1": { + "prev_ver": 520093699, + "name": "Mic/Aux", + "uuid": "72203d14-38fc-419b-aac9-46a4c1385437", + "id": "pulse_input_capture", + "versioned_id": "pulse_input_capture", + "settings": { + "device_id": "alsa_input.pci-0000_05_00.6.analog-stereo" + }, + "mixers": 255, + "sync": 0, + "flags": 0, + "volume": 0.31743475794792175, + "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": {}, + "filters": [ + { + "prev_ver": 520093699, + "name": "噪声抑制", + "uuid": "fd3d521b-86d5-48c6-b720-264c708ea2cb", + "id": "noise_suppress_filter", + "versioned_id": "noise_suppress_filter_v2", + "settings": {}, + "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": {}, + "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": 520093699, + "name": "Scene", + "uuid": "aa201eee-721f-44aa-8e7a-6383fa5da63a", + "id": "scene", + "versioned_id": "scene", + "settings": { + "id_counter": 1, + "custom_size": false, + "items": [ + { + "name": "Screen Capture (PipeWire)", + "source_uuid": "385bea17-7de2-41ea-9fbb-acc8c50c9fb3", + "visible": true, + "locked": false, + "rot": 0.0, + "scale_ref": { + "x": 1920.0, + "y": 1080.0 + }, + "align": 5, + "bounds_type": 0, + "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": 0.75, + "y": 0.75 + }, + "scale_rel": { + "x": 0.75, + "y": 0.75 + }, + "bounds": { + "x": 0.0, + "y": 0.0 + }, + "bounds_rel": { + "x": 0.0, + "y": 0.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, + "private_settings": {} + }, + { + "prev_ver": 520093699, + "name": "Screen Capture (PipeWire)", + "uuid": "385bea17-7de2-41ea-9fbb-acc8c50c9fb3", + "id": "pipewire-screen-capture-source", + "versioned_id": "pipewire-screen-capture-source", + "settings": { + "RestoreToken": "5f9f4fdb-56d1-45a2-aedf-19564983774a" + }, + "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": [], + "transitions": [], + "saved_projectors": [], + "current_transition": "淡入淡出", + "transition_duration": 300, + "preview_locked": false, + "scaling_enabled": false, + "scaling_level": 0, + "scaling_off_x": 0.0, + "scaling_off_y": 0.0, + "virtual-camera": { + "type2": 3 + }, + "modules": { + "scripts-tool": [], + "output-timer": { + "streamTimerHours": 0, + "streamTimerMinutes": 0, + "streamTimerSeconds": 30, + "recordTimerHours": 0, + "recordTimerMinutes": 0, + "recordTimerSeconds": 30, + "autoStartStreamTimer": false, + "autoStartRecordTimer": false, + "pauseRecordTimer": true + } + }, + "resolution": { + "x": 1920, + "y": 1080 + }, + "version": 2 +} \ No newline at end of file diff --git a/obs-studio/global.ini b/obs-studio/global.ini new file mode 100644 index 0000000..9102158 --- /dev/null +++ b/obs-studio/global.ini @@ -0,0 +1,19 @@ +[General] +Pre31Migrated=true +MaxLogs=10 +InfoIncrement=-1 +ProcessPriority=Normal +EnableAutoUpdates=true +LastVersion=520093699 + +[Video] +Renderer=OpenGL + +[Locations] +Configuration=/home/dich/.config +SceneCollections=/home/dich/.config +Profiles=/home/dich/.config + +[PropertiesWindow] +cx=720 +cy=580 diff --git a/obs-studio/logs/2025-04-07 19-27-24.txt b/obs-studio/logs/2025-04-07 19-27-24.txt new file mode 100644 index 0000000..9e0c9b0 --- /dev/null +++ b/obs-studio/logs/2025-04-07 19-27-24.txt @@ -0,0 +1,314 @@ +19:27:24.166: Platform: Wayland +19:27:24.166: CPU Name: AMD Ryzen 7 8845HS w/ Radeon 780M Graphics +19:27:24.166: CPU Speed: 2192.270MHz +19:27:24.166: Physical Cores: 8, Logical Cores: 16 +19:27:24.166: Physical Memory: 31266MB Total, 16827MB Free +19:27:24.166: Kernel Version: Linux 6.14.0-4-cachyos +19:27:24.167: Distribution: "CachyOS Linux" Unknown +19:27:24.167: Desktop Environment: KDE (KDE) +19:27:24.167: Session Type: wayland +19:27:24.168: Qt Version: 6.9.0 (runtime), 6.8.3 (compiled) +19:27:24.168: Portable mode: false +19:27:24.197: OBS 31.0.3 (linux) +19:27:24.197: --------------------------------- +19:27:24.197: --------------------------------- +19:27:24.197: audio settings reset: +19:27:24.197: samples per sec: 48000 +19:27:24.197: speakers: 2 +19:27:24.197: max buffering: 960 milliseconds +19:27:24.197: buffering type: dynamically increasing +19:27:24.199: --------------------------------- +19:27:24.199: Initializing OpenGL... +19:27:24.199: Using EGL/Wayland +19:27:24.205: Initialized EGL 1.5 +19:27:24.217: Loading up OpenGL on adapter AMD AMD Radeon Graphics (radeonsi, phoenix, LLVM 19.1.7, DRM 3.61, 6.14.0-4-cachyos) +19:27:24.217: OpenGL loaded successfully, version 4.6 (Core Profile) Mesa 25.0.3-cachyos1.2, shading language 4.60 +19:27:24.330: --------------------------------- +19:27:24.330: video settings reset: +19:27:24.330: base resolution: 1920x1080 +19:27:24.330: output resolution: 1280x720 +19:27:24.330: downscale filter: Bicubic +19:27:24.330: fps: 30/1 +19:27:24.330: format: NV12 +19:27:24.330: YUV mode: Rec. 709/Partial +19:27:24.331: NV12 texture support enabled +19:27:24.331: P010 texture support not available +19:27:24.333: Audio monitoring device: +19:27:24.333: name: Default +19:27:24.333: id: default +19:27:24.334: --------------------------------- +19:27:24.343: Failed to load 'en-US' text for module: 'decklink-captions.so' +19:27:24.350: Failed to load 'en-US' text for module: 'decklink-output-ui.so' +19:27:24.356: A DeckLink iterator could not be created. The DeckLink drivers may not be installed +19:27:24.356: Failed to initialize module 'decklink.so' +19:27:24.476: [pipewire] Available capture sources: +19:27:24.476: [pipewire] - Monitor source +19:27:24.476: [pipewire] - Window source +19:27:24.550: VAAPI: API version 1.22 +19:27:24.551: FFmpeg VAAPI H264 encoding supported +19:27:24.555: FFmpeg VAAPI AV1 encoding supported +19:27:24.558: FFmpeg VAAPI HEVC encoding supported +19:27:24.585: os_dlopen(libnvidia-encode.so.1->libnvidia-encode.so.1): libnvidia-encode.so.1: cannot open shared object file: No such file or directory +19:27:24.585: +19:27:24.585: NVENC not supported +19:27:24.585: Failed to initialize module 'obs-nvenc.so' +19:27:24.659: os_dlopen(/usr/lib/obs-plugins/obs-websocket.so->/usr/lib/obs-plugins/obs-websocket.so): libqrcodegencpp.so.1: cannot open shared object file: No such file or directory +19:27:24.659: +19:27:24.662: os_dlopen(/usr/lib/obs-plugins/obs-websocket.so->/usr/lib/obs-plugins/obs-websocket.so): libqrcodegencpp.so.1: cannot open shared object file: No such file or directory +19:27:24.662: +19:27:24.662: Module '/usr/lib/obs-plugins/obs-websocket.so' not loaded +19:27:24.683: --------------------------------- +19:27:24.683: Loaded Modules: +19:27:24.683: text-freetype2.so +19:27:24.683: rtmp-services.so +19:27:24.683: obs-x264.so +19:27:24.683: obs-webrtc.so +19:27:24.683: obs-vst.so +19:27:24.683: obs-transitions.so +19:27:24.683: obs-qsv11.so +19:27:24.683: obs-outputs.so +19:27:24.683: obs-libfdk.so +19:27:24.683: obs-filters.so +19:27:24.683: obs-ffmpeg.so +19:27:24.683: linux-v4l2.so +19:27:24.683: linux-pulseaudio.so +19:27:24.683: linux-pipewire.so +19:27:24.683: linux-jack.so +19:27:24.683: linux-capture.so +19:27:24.683: linux-alsa.so +19:27:24.683: image-source.so +19:27:24.683: frontend-tools.so +19:27:24.683: decklink-output-ui.so +19:27:24.683: decklink-captions.so +19:27:24.683: --------------------------------- +19:27:24.683: --------------------------------- +19:27:24.683: Available Encoders: +19:27:24.683: Video Encoders: +19:27:24.683: - ffmpeg_svt_av1 (SVT-AV1) +19:27:24.683: - ffmpeg_aom_av1 (AOM AV1) +19:27:24.683: - ffmpeg_vaapi_tex (FFmpeg VAAPI H.264) +19:27:24.683: - av1_ffmpeg_vaapi_tex (FFmpeg VAAPI AV1) +19:27:24.683: - hevc_ffmpeg_vaapi_tex (FFmpeg VAAPI HEVC) +19:27:24.683: - obs_x264 (x264) +19:27:24.683: Audio Encoders: +19:27:24.683: - ffmpeg_aac (FFmpeg AAC) +19:27:24.683: - ffmpeg_opus (FFmpeg Opus) +19:27:24.683: - ffmpeg_pcm_s16le (FFmpeg PCM (16-bit)) +19:27:24.683: - ffmpeg_pcm_s24le (FFmpeg PCM (24-bit)) +19:27:24.683: - ffmpeg_pcm_f32le (FFmpeg PCM (32-bit float)) +19:27:24.683: - ffmpeg_alac (FFmpeg ALAC (24-bit)) +19:27:24.683: - ffmpeg_flac (FFmpeg FLAC (16-bit)) +19:27:24.683: - libfdk_aac (libfdk AAC) +19:27:24.683: ==== Startup complete =============================================== +19:27:24.687: No scene file found, creating default scene +19:27:24.712: All scene data cleared +19:27:24.712: ------------------------------------------------ +19:27:24.722: pulse-input: Server name: 'PulseAudio (on PipeWire 1.4.1) 15.0.0' +19:27:24.722: pulse-input: Audio format: s32le, 48000 Hz, 2 channels +19:27:24.722: pulse-input: Started recording from 'alsa_output.pci-0000_05_00.6.analog-stereo.monitor' (default) +19:27:24.722: pulse-input: Server name: 'PulseAudio (on PipeWire 1.4.1) 15.0.0' +19:27:24.722: pulse-input: Audio format: s32le, 48000 Hz, 2 channels +19:27:24.722: pulse-input: Started recording from 'alsa_input.pci-0000_05_00.6.analog-stereo' (default) +19:27:24.723: Switched to scene 'Scene' +19:27:24.723: Created scene collection 'Untitled' (clean, Untitled.json) +19:27:24.723: ------------------------------------------------ +19:27:25.457: adding 21 milliseconds of audio buffering, total audio buffering is now 21 milliseconds (source: Desktop Audio) +19:27:25.457: +19:28:02.383: PipeWire initialized +19:28:02.388: User added source 'Screen Capture (PipeWire)' (pipewire-screen-capture-source) to scene 'Scene' +19:28:02.439: [pipewire] Screencast session created +19:28:02.448: [pipewire] Asking for monitor and window +19:28:03.608: [pipewire] source selected, setting up screencast +19:28:03.613: [pipewire] Server version: 1.4.1 +19:28:03.613: [pipewire] Library version: 1.4.1 +19:28:03.613: [pipewire] Header version: 1.4.1 +19:28:03.613: [pipewire] Created stream 0x62cd78938870 +19:28:03.614: [pipewire] Stream 0x62cd78938870 state: "connecting" (error: none) +19:28:03.614: [pipewire] Playing stream 0x62cd78938870 +19:28:03.614: [pipewire] Stream 0x62cd78938870 state: "paused" (error: none) +19:28:03.622: [pipewire] Negotiated format: +19:28:03.622: [pipewire] Format: 12 (Spa:Enum:VideoFormat:BGRA) +19:28:03.622: [pipewire] Modifier: 0x0 +19:28:03.622: [pipewire] Size: 2560x1440 +19:28:03.622: [pipewire] Framerate: 0/1 +19:28:03.622: [pipewire] Negotiated format: +19:28:03.622: [pipewire] Format: 12 (Spa:Enum:VideoFormat:BGRA) +19:28:03.622: [pipewire] Modifier: 0x20000001046bb04 +19:28:03.622: [pipewire] Size: 2560x1440 +19:28:03.622: [pipewire] Framerate: 0/1 +19:28:03.624: [pipewire] Stream 0x62cd78938870 state: "streaming" (error: none) +19:28:56.402: [pipewire] Stream 0x62cd78938870 state: "paused" (error: none) +19:28:56.402: [pipewire] Stream 0x62cd78938870 state: "unconnected" (error: none) +19:28:56.408: PipeWire initialized +19:28:56.411: [pipewire] Screencast session created +19:28:56.411: [pipewire] Asking for monitor and window +19:28:58.523: [pipewire] Failed to start screencast, denied or cancelled by user +19:29:03.042: PipeWire initialized +19:29:03.046: [pipewire] Screencast session created +19:29:03.046: [pipewire] Asking for monitor and window +19:29:04.309: [pipewire] source selected, setting up screencast +19:29:04.314: [pipewire] Server version: 1.4.1 +19:29:04.314: [pipewire] Library version: 1.4.1 +19:29:04.314: [pipewire] Header version: 1.4.1 +19:29:04.314: [pipewire] Created stream 0x62cd78b3ded0 +19:29:04.315: [pipewire] Stream 0x62cd78b3ded0 state: "connecting" (error: none) +19:29:04.315: [pipewire] Playing stream 0x62cd78b3ded0 +19:29:04.315: [pipewire] Stream 0x62cd78b3ded0 state: "paused" (error: none) +19:29:04.322: [pipewire] Negotiated format: +19:29:04.322: [pipewire] Format: 12 (Spa:Enum:VideoFormat:BGRA) +19:29:04.322: [pipewire] Modifier: 0x0 +19:29:04.322: [pipewire] Size: 2560x1600 +19:29:04.322: [pipewire] Framerate: 0/1 +19:29:04.322: [pipewire] Negotiated format: +19:29:04.322: [pipewire] Format: 12 (Spa:Enum:VideoFormat:BGRA) +19:29:04.322: [pipewire] Modifier: 0x20000001046bb04 +19:29:04.322: [pipewire] Size: 2560x1600 +19:29:04.322: [pipewire] Framerate: 0/1 +19:29:04.323: [pipewire] Stream 0x62cd78b3ded0 state: "streaming" (error: none) +19:29:07.372: [pipewire] Stream 0x62cd78b3ded0 state: "paused" (error: none) +19:29:07.372: [pipewire] Stream 0x62cd78b3ded0 state: "unconnected" (error: none) +19:29:07.374: PipeWire initialized +19:29:07.376: [pipewire] Screencast session created +19:29:07.377: [pipewire] Asking for monitor and window +19:29:08.546: [pipewire] source selected, setting up screencast +19:29:08.550: [pipewire] Server version: 1.4.1 +19:29:08.550: [pipewire] Library version: 1.4.1 +19:29:08.550: [pipewire] Header version: 1.4.1 +19:29:08.550: [pipewire] Created stream 0x62cd78b3ded0 +19:29:08.550: [pipewire] Stream 0x62cd78b3ded0 state: "connecting" (error: none) +19:29:08.551: [pipewire] Playing stream 0x62cd78b3ded0 +19:29:08.551: [pipewire] Stream 0x62cd78b3ded0 state: "paused" (error: none) +19:29:08.572: [pipewire] Negotiated format: +19:29:08.572: [pipewire] Format: 12 (Spa:Enum:VideoFormat:BGRA) +19:29:08.572: [pipewire] Modifier: 0x0 +19:29:08.572: [pipewire] Size: 2560x1440 +19:29:08.572: [pipewire] Framerate: 0/1 +19:29:08.575: [pipewire] Negotiated format: +19:29:08.575: [pipewire] Format: 12 (Spa:Enum:VideoFormat:BGRA) +19:29:08.575: [pipewire] Modifier: 0x20000001046bb04 +19:29:08.575: [pipewire] Size: 2560x1440 +19:29:08.575: [pipewire] Framerate: 0/1 +19:29:08.576: [pipewire] Stream 0x62cd78b3ded0 state: "streaming" (error: none) +19:29:33.426: --------------------------------- +19:29:33.426: [x264 encoder: 'simple_video_stream'] preset: veryfast +19:29:33.426: [x264 encoder: 'simple_video_stream'] settings: +19:29:33.426: rate_control: CBR +19:29:33.426: bitrate: 2500 +19:29:33.426: buffer size: 2500 +19:29:33.426: crf: 23 +19:29:33.426: fps_num: 30 +19:29:33.426: fps_den: 1 +19:29:33.426: width: 1280 +19:29:33.426: height: 720 +19:29:33.426: keyint: 250 +19:29:33.426: +19:29:33.431: libfdk_aac encoder created +19:29:33.431: libfdk_aac bitrate: 160, channels: 2 +19:29:33.435: ==== Recording Start =============================================== +19:29:33.435: [ffmpeg muxer: 'simple_file_output'] Writing file '/home/dich/2025-04-07 19-29-33.mkv'... +19:29:48.308: [ffmpeg muxer: 'simple_file_output'] Output of file '/home/dich/2025-04-07 19-29-33.mkv' stopped +19:29:48.308: Output 'simple_file_output': stopping +19:29:48.308: Output 'simple_file_output': Total frames output: 409 +19:29:48.308: Output 'simple_file_output': Total drawn frames: 446 +19:29:48.309: ==== Recording Stop ================================================ +19:29:48.316: libfdk_aac encoder destroyed +19:30:49.459: Switched to Preview/Program mode +19:30:49.459: ------------------------------------------------ +19:30:51.285: User switched Program to scene 'Scene' +19:30:52.275: User switched Program to scene 'Scene' +19:30:53.195: User faded from scene 'Scene' to black +19:30:54.485: User switched Program to scene 'Scene' +19:30:56.446: Switched to scene 'Scene' +19:30:56.447: Switched to regular Preview mode +19:30:56.447: ------------------------------------------------ +19:31:15.702: ReadOne on org.freedesktop.portal.Settings returned an invalid reply +19:31:15.702: ReadOne on org.freedesktop.portal.Settings returned an invalid reply +19:31:19.305: Settings changed (general) +19:31:19.305: ------------------------------------------------ +19:31:20.745: ==== Shutting down ================================================== +19:31:20.747: pulse-input: Stopped recording from 'alsa_output.pci-0000_05_00.6.analog-stereo.monitor' +19:31:20.747: pulse-input: Got 9432 packets with 11318400 frames +19:31:20.748: pulse-input: Stopped recording from 'alsa_input.pci-0000_05_00.6.analog-stereo' +19:31:20.748: pulse-input: Got 9431 packets with 11317200 frames +19:31:20.748: [pipewire] Stream 0x62cd78b3ded0 state: "paused" (error: none) +19:31:20.748: [pipewire] Stream 0x62cd78b3ded0 state: "unconnected" (error: none) +19:31:20.789: All scene data cleared +19:31:20.790: ------------------------------------------------ +19:31:20.864: [Scripting] Total detached callbacks: 0 +19:31:20.864: Freeing OBS context data +19:31:20.887: == Profiler Results ============================= +19:31:20.887: run_program_init: 700.602 ms +19:31:20.887: ┣OBSApp::AppInit: 15.283 ms +19:31:20.887: ┃ ┗OBSApp::InitLocale: 4.837 ms +19:31:20.887: ┗OBSApp::OBSInit: 588.254 ms +19:31:20.887: ┣obs_startup: 1.927 ms +19:31:20.887: ┗OBSBasic::OBSInit: 557.421 ms +19:31:20.887: ┣OBSBasic::InitBasicConfig: 0.438 ms +19:31:20.887: ┣OBSBasic::ResetAudio: 0.205 ms +19:31:20.887: ┣OBSBasic::ResetVideo: 135.928 ms +19:31:20.887: ┃ ┗obs_init_graphics: 132.827 ms +19:31:20.887: ┃ ┗shader compilation: 112.398 ms +19:31:20.887: ┣OBSBasic::InitOBSCallbacks: 0.004 ms +19:31:20.887: ┣OBSBasic::InitHotkeys: 0.023 ms +19:31:20.887: ┣obs_load_all_modules2: 349.475 ms +19:31:20.887: ┃ ┣obs_init_module(decklink-captions.so): 0 ms +19:31:20.887: ┃ ┣obs_init_module(decklink-output-ui.so): 0 ms +19:31:20.887: ┃ ┣obs_init_module(decklink.so): 0.098 ms +19:31:20.887: ┃ ┣obs_init_module(frontend-tools.so): 55.355 ms +19:31:20.887: ┃ ┣obs_init_module(image-source.so): 0.014 ms +19:31:20.887: ┃ ┣obs_init_module(linux-alsa.so): 0.001 ms +19:31:20.887: ┃ ┣obs_init_module(linux-capture.so): 0 ms +19:31:20.887: ┃ ┣obs_init_module(linux-jack.so): 0.002 ms +19:31:20.887: ┃ ┣obs_init_module(linux-pipewire.so): 12.815 ms +19:31:20.887: ┃ ┣obs_init_module(linux-pulseaudio.so): 0.007 ms +19:31:20.887: ┃ ┣obs_init_module(linux-v4l2.so): 5.02 ms +19:31:20.887: ┃ ┣obs_init_module(obs-ffmpeg.so): 13.026 ms +19:31:20.887: ┃ ┣obs_init_module(obs-filters.so): 0.029 ms +19:31:20.887: ┃ ┣obs_init_module(obs-libfdk.so): 0.002 ms +19:31:20.887: ┃ ┣obs_init_module(obs-nvenc.so): 0.141 ms +19:31:20.887: ┃ ┃ ┗nvenc_check: 0.12 ms +19:31:20.887: ┃ ┣obs_init_module(obs-outputs.so): 0.005 ms +19:31:20.887: ┃ ┣obs_init_module(obs-qsv11.so): 8.657 ms +19:31:20.887: ┃ ┣obs_init_module(obs-transitions.so): 0.01 ms +19:31:20.887: ┃ ┣obs_init_module(obs-vst.so): 0.004 ms +19:31:20.887: ┃ ┣obs_init_module(obs-webrtc.so): 0.007 ms +19:31:20.887: ┃ ┣obs_init_module(obs-x264.so): 0.004 ms +19:31:20.887: ┃ ┣obs_init_module(rtmp-services.so): 0.106 ms +19:31:20.887: ┃ ┗obs_init_module(text-freetype2.so): 0.024 ms +19:31:20.887: ┣OBSBasic::InitService: 1.316 ms +19:31:20.887: ┣OBSBasic::ResetOutputs: 0.151 ms +19:31:20.887: ┣OBSBasic::CreateHotkeys: 0.02 ms +19:31:20.887: ┣OBSBasic::InitPrimitives: 0.271 ms +19:31:20.887: ┗OBSBasic::Load: 36.107 ms +19:31:20.887: obs_hotkey_thread(25 ms): min=0 ms, median=0 ms, max=0.034 ms, 99th percentile=0.001 ms, 100% below 25 ms +19:31:20.887: audio_thread(Audio): min=0.008 ms, median=0.04 ms, max=11.601 ms, 99th percentile=0.642 ms +19:31:20.887: ┗receive_audio: min=0.002 ms, median=0.353 ms, max=3.958 ms, 99th percentile=0.669 ms, 0.0629226 calls per parent call +19:31:20.887: ┣buffer_audio: min=0 ms, median=0.001 ms, max=0.03 ms, 99th percentile=0.004 ms +19:31:20.887: ┗do_encode: min=0.16 ms, median=0.352 ms, max=3.956 ms, 99th percentile=0.665 ms +19:31:20.887: ┣encode(simple_aac): min=0.155 ms, median=0.34 ms, max=0.872 ms, 99th percentile=0.621 ms +19:31:20.887: ┗send_packet: min=0.001 ms, median=0.005 ms, max=3.778 ms, 99th percentile=0.057 ms +19:31:20.887: obs_graphics_thread(33.3333 ms): min=0.134 ms, median=0.589 ms, max=247.936 ms, 99th percentile=2.149 ms, 99.8019% below 33.333 ms +19:31:20.887: ┣tick_sources: min=0 ms, median=0.007 ms, max=14.694 ms, 99th percentile=1.089 ms +19:31:20.887: ┣output_frame: min=0.061 ms, median=0.277 ms, max=22.198 ms, 99th percentile=1.277 ms +19:31:20.887: ┃ ┣gs_context(video->graphics): min=0.061 ms, median=0.275 ms, max=22.195 ms, 99th percentile=1.107 ms +19:31:20.887: ┃ ┃ ┣render_video: min=0.007 ms, median=0.059 ms, max=13.635 ms, 99th percentile=0.251 ms +19:31:20.887: ┃ ┃ ┃ ┣render_main_texture: min=0.006 ms, median=0.055 ms, max=3.274 ms, 99th percentile=0.188 ms +19:31:20.887: ┃ ┃ ┃ ┣render_output_texture: min=0.013 ms, median=0.033 ms, max=7.757 ms, 99th percentile=0.119 ms, 0.0631013 calls per parent call +19:31:20.887: ┃ ┃ ┃ ┣render_convert_texture: min=0.011 ms, median=0.035 ms, max=5.416 ms, 99th percentile=0.103 ms, 0.0631013 calls per parent call +19:31:20.887: ┃ ┃ ┃ ┗stage_output_texture: min=0.007 ms, median=0.02 ms, max=0.349 ms, 99th percentile=0.07 ms, 0.0631013 calls per parent call +19:31:20.887: ┃ ┃ ┣gs_flush: min=0.001 ms, median=0.175 ms, max=8.808 ms, 99th percentile=0.963 ms +19:31:20.887: ┃ ┃ ┗download_frame: min=0 ms, median=0.068 ms, max=0.382 ms, 99th percentile=0.165 ms, 0.0631013 calls per parent call +19:31:20.887: ┃ ┗output_video_data: min=0.085 ms, median=0.468 ms, max=1.464 ms, 99th percentile=0.92 ms, 0.0629598 calls per parent call +19:31:20.887: ┗render_displays: min=0.001 ms, median=0.266 ms, max=247.444 ms, 99th percentile=0.818 ms +19:31:20.887: video_thread(video): min=0.405 ms, median=1.156 ms, max=2.222 ms, 99th percentile=2.079 ms +19:31:20.887: ┗receive_video: min=0.404 ms, median=1.152 ms, max=2.22 ms, 99th percentile=2.075 ms +19:31:20.887: ┗do_encode: min=0.403 ms, median=1.151 ms, max=2.218 ms, 99th percentile=2.073 ms +19:31:20.887: ┣encode(simple_video_stream): min=0.398 ms, median=1.134 ms, max=2.217 ms, 99th percentile=2.07 ms +19:31:20.887: ┗send_packet: min=0.002 ms, median=0.013 ms, max=0.113 ms, 99th percentile=0.079 ms, 0.921348 calls per parent call +19:31:20.887: OBSBasicSettings::LoadThemeList: 0.033 ms +19:31:20.887: ================================================= +19:31:20.887: == Profiler Time Between Calls ================== +19:31:20.887: obs_hotkey_thread(25 ms): min=25.01 ms, median=25.075 ms, max=26.792 ms, 97.4756% within ±2% of 25 ms (0% lower, 2.5244% higher) +19:31:20.887: obs_graphics_thread(33.3333 ms): min=7.201 ms, median=33.333 ms, max=247.947 ms, 97.1982% within ±2% of 33.333 ms (1.44333% lower, 1.35843% higher) +19:31:20.887: ================================================= +19:31:20.893: Number of memory leaks: 0 diff --git a/obs-studio/logs/2025-04-07 19-31-21.txt b/obs-studio/logs/2025-04-07 19-31-21.txt new file mode 100644 index 0000000..249553b --- /dev/null +++ b/obs-studio/logs/2025-04-07 19-31-21.txt @@ -0,0 +1,357 @@ +19:31:21.019: Platform: Wayland +19:31:21.019: CPU Name: AMD Ryzen 7 8845HS w/ Radeon 780M Graphics +19:31:21.019: CPU Speed: 1806.030MHz +19:31:21.019: Physical Cores: 8, Logical Cores: 16 +19:31:21.019: Physical Memory: 31266MB Total, 16098MB Free +19:31:21.019: Kernel Version: Linux 6.14.0-4-cachyos +19:31:21.019: Distribution: "CachyOS Linux" Unknown +19:31:21.019: Desktop Environment: KDE (KDE) +19:31:21.019: Session Type: wayland +19:31:21.020: Qt Version: 6.9.0 (runtime), 6.8.3 (compiled) +19:31:21.020: Portable mode: false +19:31:21.045: OBS 31.0.3 (linux) +19:31:21.045: --------------------------------- +19:31:21.045: --------------------------------- +19:31:21.045: audio settings reset: +19:31:21.045: samples per sec: 48000 +19:31:21.045: speakers: 2 +19:31:21.045: max buffering: 960 milliseconds +19:31:21.045: buffering type: dynamically increasing +19:31:21.046: --------------------------------- +19:31:21.046: Initializing OpenGL... +19:31:21.046: Using EGL/Wayland +19:31:21.052: Initialized EGL 1.5 +19:31:21.064: Loading up OpenGL on adapter AMD AMD Radeon Graphics (radeonsi, phoenix, LLVM 19.1.7, DRM 3.61, 6.14.0-4-cachyos) +19:31:21.064: OpenGL loaded successfully, version 4.6 (Core Profile) Mesa 25.0.3-cachyos1.2, shading language 4.60 +19:31:21.086: --------------------------------- +19:31:21.086: video settings reset: +19:31:21.086: base resolution: 1920x1080 +19:31:21.086: output resolution: 1280x720 +19:31:21.086: downscale filter: Bicubic +19:31:21.086: fps: 30/1 +19:31:21.086: format: NV12 +19:31:21.086: YUV mode: Rec. 709/Partial +19:31:21.086: NV12 texture support enabled +19:31:21.086: P010 texture support not available +19:31:21.089: Audio monitoring device: +19:31:21.089: name: Default +19:31:21.089: id: default +19:31:21.089: --------------------------------- +19:31:21.097: Failed to load 'en-US' text for module: 'decklink-captions.so' +19:31:21.102: Failed to load 'en-US' text for module: 'decklink-output-ui.so' +19:31:21.107: A DeckLink iterator could not be created. The DeckLink drivers may not be installed +19:31:21.107: Failed to initialize module 'decklink.so' +19:31:21.210: [pipewire] Available capture sources: +19:31:21.210: [pipewire] - Monitor source +19:31:21.210: [pipewire] - Window source +19:31:21.266: VAAPI: API version 1.22 +19:31:21.268: FFmpeg VAAPI H264 encoding supported +19:31:21.271: FFmpeg VAAPI AV1 encoding supported +19:31:21.275: FFmpeg VAAPI HEVC encoding supported +19:31:21.295: os_dlopen(libnvidia-encode.so.1->libnvidia-encode.so.1): libnvidia-encode.so.1: cannot open shared object file: No such file or directory +19:31:21.295: +19:31:21.295: NVENC not supported +19:31:21.295: Failed to initialize module 'obs-nvenc.so' +19:31:21.355: os_dlopen(/usr/lib/obs-plugins/obs-websocket.so->/usr/lib/obs-plugins/obs-websocket.so): libqrcodegencpp.so.1: cannot open shared object file: No such file or directory +19:31:21.355: +19:31:21.356: os_dlopen(/usr/lib/obs-plugins/obs-websocket.so->/usr/lib/obs-plugins/obs-websocket.so): libqrcodegencpp.so.1: cannot open shared object file: No such file or directory +19:31:21.356: +19:31:21.356: Module '/usr/lib/obs-plugins/obs-websocket.so' not loaded +19:31:21.373: --------------------------------- +19:31:21.373: Loaded Modules: +19:31:21.373: text-freetype2.so +19:31:21.373: rtmp-services.so +19:31:21.373: obs-x264.so +19:31:21.373: obs-webrtc.so +19:31:21.373: obs-vst.so +19:31:21.373: obs-transitions.so +19:31:21.373: obs-qsv11.so +19:31:21.373: obs-outputs.so +19:31:21.373: obs-libfdk.so +19:31:21.373: obs-filters.so +19:31:21.373: obs-ffmpeg.so +19:31:21.373: linux-v4l2.so +19:31:21.373: linux-pulseaudio.so +19:31:21.373: linux-pipewire.so +19:31:21.373: linux-jack.so +19:31:21.373: linux-capture.so +19:31:21.373: linux-alsa.so +19:31:21.373: image-source.so +19:31:21.373: frontend-tools.so +19:31:21.373: decklink-output-ui.so +19:31:21.373: decklink-captions.so +19:31:21.373: --------------------------------- +19:31:21.373: --------------------------------- +19:31:21.373: Available Encoders: +19:31:21.373: Video Encoders: +19:31:21.374: - ffmpeg_svt_av1 (SVT-AV1) +19:31:21.374: - ffmpeg_aom_av1 (AOM AV1) +19:31:21.374: - ffmpeg_vaapi_tex (FFmpeg VAAPI H.264) +19:31:21.374: - av1_ffmpeg_vaapi_tex (FFmpeg VAAPI AV1) +19:31:21.374: - hevc_ffmpeg_vaapi_tex (FFmpeg VAAPI HEVC) +19:31:21.374: - obs_x264 (x264) +19:31:21.374: Audio Encoders: +19:31:21.374: - ffmpeg_aac (FFmpeg AAC) +19:31:21.374: - ffmpeg_opus (FFmpeg Opus) +19:31:21.374: - ffmpeg_pcm_s16le (FFmpeg PCM (16位)) +19:31:21.374: - ffmpeg_pcm_s24le (FFmpeg PCM (24位)) +19:31:21.374: - ffmpeg_pcm_f32le (FFmpeg PCM (32位浮点)) +19:31:21.374: - ffmpeg_alac (FFmpeg ALAC (24位)) +19:31:21.374: - ffmpeg_flac (FFmpeg FLAC (16位)) +19:31:21.374: - libfdk_aac (libfdk AAC) +19:31:21.374: ==== Startup complete =============================================== +19:31:21.410: All scene data cleared +19:31:21.410: ------------------------------------------------ +19:31:21.414: pulse-input: Server name: 'PulseAudio (on PipeWire 1.4.1) 15.0.0' +19:31:21.414: pulse-input: Audio format: s32le, 48000 Hz, 2 channels +19:31:21.414: pulse-input: Started recording from 'alsa_output.pci-0000_05_00.6.analog-stereo.monitor' (default) +19:31:21.414: [Loaded global audio device]: 'Desktop Audio' +19:31:21.414: pulse-input: Server name: 'PulseAudio (on PipeWire 1.4.1) 15.0.0' +19:31:21.414: pulse-input: Audio format: s32le, 48000 Hz, 2 channels +19:31:21.414: pulse-input: Started recording from 'alsa_input.pci-0000_05_00.6.analog-stereo' (default) +19:31:21.414: [Loaded global audio device]: 'Mic/Aux' +19:31:21.414: PipeWire initialized +19:31:21.415: Switched to scene 'Scene' +19:31:21.415: ------------------------------------------------ +19:31:21.415: Loaded scenes: +19:31:21.415: - scene 'Scene': +19:31:21.415: - source: 'Screen Capture (PipeWire)' (pipewire-screen-capture-source) +19:31:21.415: ------------------------------------------------ +19:31:21.458: [pipewire] Screencast session created +19:31:21.537: [pipewire] Asking for monitor and window +19:31:21.542: [pipewire] source selected, setting up screencast +19:31:21.546: [pipewire] Server version: 1.4.1 +19:31:21.546: [pipewire] Library version: 1.4.1 +19:31:21.546: [pipewire] Header version: 1.4.1 +19:31:21.546: [pipewire] Created stream 0x5a21a5f2efe0 +19:31:21.546: [pipewire] Stream 0x5a21a5f2efe0 state: "connecting" (error: none) +19:31:21.547: [pipewire] Playing stream 0x5a21a5f2efe0 +19:31:21.547: [pipewire] Stream 0x5a21a5f2efe0 state: "paused" (error: none) +19:31:21.552: [pipewire] Negotiated format: +19:31:21.552: [pipewire] Format: 12 (Spa:Enum:VideoFormat:BGRA) +19:31:21.552: [pipewire] Modifier: 0x0 +19:31:21.552: [pipewire] Size: 2560x1440 +19:31:21.552: [pipewire] Framerate: 0/1 +19:31:21.555: [pipewire] Negotiated format: +19:31:21.556: [pipewire] Format: 12 (Spa:Enum:VideoFormat:BGRA) +19:31:21.556: [pipewire] Modifier: 0x20000001046bb04 +19:31:21.556: [pipewire] Size: 2560x1440 +19:31:21.556: [pipewire] Framerate: 0/1 +19:31:21.577: [pipewire] Stream 0x5a21a5f2efe0 state: "streaming" (error: none) +19:31:21.985: adding 42 milliseconds of audio buffering, total audio buffering is now 42 milliseconds (source: Desktop Audio) +19:31:21.985: +19:31:34.487: Switched to Preview/Program mode +19:31:34.487: ------------------------------------------------ +19:31:37.857: Switched to scene 'Scene' +19:31:37.858: Switched to regular Preview mode +19:31:37.858: ------------------------------------------------ +19:31:38.419: ReadOne on org.freedesktop.portal.Settings returned an invalid reply +19:31:38.419: ReadOne on org.freedesktop.portal.Settings returned an invalid reply +19:32:12.154: Settings changed (audio) +19:32:12.154: ------------------------------------------------ +19:32:13.807: --------------------------------- +19:32:13.807: [x264 encoder: 'simple_video_stream'] preset: veryfast +19:32:13.807: [x264 encoder: 'simple_video_stream'] settings: +19:32:13.807: rate_control: CBR +19:32:13.807: bitrate: 2500 +19:32:13.807: buffer size: 2500 +19:32:13.807: crf: 23 +19:32:13.807: fps_num: 30 +19:32:13.807: fps_den: 1 +19:32:13.807: width: 1280 +19:32:13.807: height: 720 +19:32:13.807: keyint: 250 +19:32:13.807: +19:32:13.813: libfdk_aac encoder created +19:32:13.813: libfdk_aac bitrate: 160, channels: 2 +19:32:13.815: ==== Recording Start =============================================== +19:32:13.815: [ffmpeg muxer: 'simple_file_output'] Writing file '/home/dich/2025-04-07 19-32-13.mkv'... +19:32:45.194: [ffmpeg muxer: 'simple_file_output'] Output of file '/home/dich/2025-04-07 19-32-13.mkv' stopped +19:32:45.194: Output 'simple_file_output': stopping +19:32:45.194: Output 'simple_file_output': Total frames output: 905 +19:32:45.194: Output 'simple_file_output': Total drawn frames: 942 +19:32:45.194: ==== Recording Stop ================================================ +19:32:45.199: libfdk_aac encoder destroyed +19:33:13.546: ReadOne on org.freedesktop.portal.Settings returned an invalid reply +19:33:13.546: ReadOne on org.freedesktop.portal.Settings returned an invalid reply +19:33:42.318: pulse-input: Server name: 'PulseAudio (on PipeWire 1.4.1) 15.0.0' +19:33:42.318: pulse-input: Audio format: s32le, 48000 Hz, 2 channels +19:33:42.318: pulse-input: Started recording from 'alsa_output.pci-0000_05_00.1.hdmi-stereo-extra1.monitor' +19:33:42.319: pulse-input: Server name: 'PulseAudio (on PipeWire 1.4.1) 15.0.0' +19:33:42.319: pulse-input: Audio format: s32le, 48000 Hz, 2 channels +19:33:42.319: pulse-input: Started recording from 'alsa_input.pci-0000_05_00.6.analog-stereo' (default) +19:33:42.319: Audio monitoring device: +19:33:42.319: name: Family 17h/19h/1ah HD Audio Controller Analog Stereo +19:33:42.319: id: alsa_output.pci-0000_05_00.6.analog-stereo +19:33:42.322: Number of remaining views: 1 +19:33:42.322: --------------------------------- +19:33:42.322: video settings reset: +19:33:42.322: base resolution: 1920x1080 +19:33:42.322: output resolution: 1280x720 +19:33:42.322: downscale filter: Bicubic +19:33:42.322: fps: 30/1 +19:33:42.322: format: NV12 +19:33:42.322: YUV mode: Rec. 709/Partial +19:33:42.322: NV12 texture support enabled +19:33:42.322: P010 texture support not available +19:33:42.324: Settings changed (audio, advanced) +19:33:42.324: ------------------------------------------------ +19:33:45.396: --------------------------------- +19:33:45.396: [x264 encoder: 'simple_video_stream'] preset: veryfast +19:33:45.396: [x264 encoder: 'simple_video_stream'] settings: +19:33:45.396: rate_control: CBR +19:33:45.396: bitrate: 2500 +19:33:45.396: buffer size: 2500 +19:33:45.396: crf: 23 +19:33:45.396: fps_num: 30 +19:33:45.396: fps_den: 1 +19:33:45.396: width: 1280 +19:33:45.396: height: 720 +19:33:45.396: keyint: 250 +19:33:45.396: +19:33:45.403: libfdk_aac encoder created +19:33:45.403: libfdk_aac bitrate: 160, channels: 2 +19:33:45.404: ==== Recording Start =============================================== +19:33:45.404: [ffmpeg muxer: 'simple_file_output'] Writing file '/home/dich/2025-04-07 19-33-45.mkv'... +19:33:48.719: [ffmpeg muxer: 'simple_file_output'] Output of file '/home/dich/2025-04-07 19-33-45.mkv' stopped +19:33:48.719: Output 'simple_file_output': stopping +19:33:48.719: Output 'simple_file_output': Total frames output: 63 +19:33:48.719: Output 'simple_file_output': Total drawn frames: 99 +19:33:48.719: ==== Recording Stop ================================================ +19:33:48.729: libfdk_aac encoder destroyed +19:35:19.237: --------------------------------- +19:35:19.237: [x264 encoder: 'simple_video_stream'] preset: veryfast +19:35:19.237: [x264 encoder: 'simple_video_stream'] settings: +19:35:19.237: rate_control: CBR +19:35:19.237: bitrate: 2500 +19:35:19.237: buffer size: 2500 +19:35:19.237: crf: 23 +19:35:19.237: fps_num: 30 +19:35:19.237: fps_den: 1 +19:35:19.237: width: 1280 +19:35:19.237: height: 720 +19:35:19.237: keyint: 250 +19:35:19.237: +19:35:19.243: libfdk_aac encoder created +19:35:19.243: libfdk_aac bitrate: 160, channels: 2 +19:35:19.243: ==== Recording Start =============================================== +19:35:19.244: [ffmpeg muxer: 'simple_file_output'] Writing file '/home/dich/2025-04-07 19-35-19.mkv'... +19:35:24.965: [ffmpeg muxer: 'simple_file_output'] Output of file '/home/dich/2025-04-07 19-35-19.mkv' stopped +19:35:24.965: Output 'simple_file_output': stopping +19:35:24.965: Output 'simple_file_output': Total frames output: 135 +19:35:24.965: Output 'simple_file_output': Total drawn frames: 172 +19:35:24.965: ==== Recording Stop ================================================ +19:35:24.974: libfdk_aac encoder destroyed +19:37:16.265: --------------------------------- +19:37:16.265: [x264 encoder: 'simple_video_stream'] preset: veryfast +19:37:16.265: [x264 encoder: 'simple_video_stream'] settings: +19:37:16.265: rate_control: CBR +19:37:16.265: bitrate: 2500 +19:37:16.265: buffer size: 2500 +19:37:16.265: crf: 23 +19:37:16.265: fps_num: 30 +19:37:16.265: fps_den: 1 +19:37:16.265: width: 1280 +19:37:16.265: height: 720 +19:37:16.265: keyint: 250 +19:37:16.265: +19:37:16.268: libfdk_aac encoder created +19:37:16.268: libfdk_aac bitrate: 160, channels: 2 +19:37:16.269: ==== Recording Start =============================================== +19:37:16.269: [ffmpeg muxer: 'simple_file_output'] Writing file '/home/dich/2025-04-07 19-37-16.mkv'... +19:37:19.995: [ffmpeg muxer: 'simple_file_output'] Output of file '/home/dich/2025-04-07 19-37-16.mkv' stopped +19:37:19.996: Output 'simple_file_output': stopping +19:37:19.996: Output 'simple_file_output': Total frames output: 75 +19:37:19.996: Output 'simple_file_output': Total drawn frames: 112 +19:37:19.996: ==== Recording Stop ================================================ +19:37:20.000: libfdk_aac encoder destroyed +19:38:28.777: --------------------------------- +19:38:28.777: [x264 encoder: 'simple_video_stream'] preset: veryfast +19:38:28.777: [x264 encoder: 'simple_video_stream'] settings: +19:38:28.777: rate_control: CBR +19:38:28.777: bitrate: 2500 +19:38:28.777: buffer size: 2500 +19:38:28.777: crf: 23 +19:38:28.777: fps_num: 30 +19:38:28.777: fps_den: 1 +19:38:28.777: width: 1280 +19:38:28.777: height: 720 +19:38:28.777: keyint: 250 +19:38:28.777: +19:38:28.784: libfdk_aac encoder created +19:38:28.784: libfdk_aac bitrate: 160, channels: 2 +19:38:28.785: ==== Recording Start =============================================== +19:38:28.785: [ffmpeg muxer: 'simple_file_output'] Writing file '/home/dich/2025-04-07 19-38-28.mkv'... +19:38:33.030: [ffmpeg muxer: 'simple_file_output'] Output of file '/home/dich/2025-04-07 19-38-28.mkv' stopped +19:38:33.030: Output 'simple_file_output': stopping +19:38:33.030: Output 'simple_file_output': Total frames output: 91 +19:38:33.030: Output 'simple_file_output': Total drawn frames: 128 +19:38:33.031: ==== Recording Stop ================================================ +19:38:33.036: libfdk_aac encoder destroyed +19:39:39.714: ReadOne on org.freedesktop.portal.Settings returned an invalid reply +19:39:39.715: ReadOne on org.freedesktop.portal.Settings returned an invalid reply +19:41:15.922: This plugin supports grabbing the mouse only for popup windows +19:41:16.130: This plugin supports grabbing the mouse only for popup windows +19:41:35.566: User added filter '噪声抑制' (noise_suppress_filter_v2) to source '麦克风/Aux 2' +19:41:35.595: adding 64 milliseconds of audio buffering, total audio buffering is now 106 milliseconds (source: 麦克风/Aux 2) +19:41:35.595: +19:41:43.446: adding 106 milliseconds of audio buffering, total audio buffering is now 213 milliseconds (source: 麦克风/Aux 2) +19:41:43.446: +19:41:55.549: User added filter '噪声门限' (noise_gate_filter) to source '麦克风/Aux 2' +19:42:13.453: User removed filter '噪声门限' (noise_gate_filter) from source '麦克风/Aux 2' +19:42:24.558: User added filter '噪声抑制' (noise_suppress_filter_v2) to source 'Mic/Aux' +19:42:26.950: --------------------------------- +19:42:26.950: [x264 encoder: 'simple_video_stream'] preset: veryfast +19:42:26.950: [x264 encoder: 'simple_video_stream'] settings: +19:42:26.950: rate_control: CBR +19:42:26.950: bitrate: 2500 +19:42:26.950: buffer size: 2500 +19:42:26.950: crf: 23 +19:42:26.950: fps_num: 30 +19:42:26.950: fps_den: 1 +19:42:26.950: width: 1280 +19:42:26.950: height: 720 +19:42:26.950: keyint: 250 +19:42:26.950: +19:42:26.954: libfdk_aac encoder created +19:42:26.955: libfdk_aac bitrate: 160, channels: 2 +19:42:26.955: ==== Recording Start =============================================== +19:42:26.955: [ffmpeg muxer: 'simple_file_output'] Writing file '/home/dich/2025-04-07 19-42-26.mkv'... +19:42:31.493: [ffmpeg muxer: 'simple_file_output'] Output of file '/home/dich/2025-04-07 19-42-26.mkv' stopped +19:42:31.493: Output 'simple_file_output': stopping +19:42:31.493: Output 'simple_file_output': Total frames output: 100 +19:42:31.493: Output 'simple_file_output': Total drawn frames: 137 +19:42:31.493: ==== Recording Stop ================================================ +19:42:31.499: libfdk_aac encoder destroyed +19:50:42.752: --------------------------------- +19:50:42.752: [x264 encoder: 'simple_video_stream'] preset: veryfast +19:50:42.752: [x264 encoder: 'simple_video_stream'] settings: +19:50:42.752: rate_control: CBR +19:50:42.752: bitrate: 2500 +19:50:42.752: buffer size: 2500 +19:50:42.752: crf: 23 +19:50:42.752: fps_num: 30 +19:50:42.752: fps_den: 1 +19:50:42.752: width: 1280 +19:50:42.752: height: 720 +19:50:42.752: keyint: 250 +19:50:42.752: +19:50:42.755: libfdk_aac encoder created +19:50:42.755: libfdk_aac bitrate: 160, channels: 2 +19:50:42.756: ==== Recording Start =============================================== +19:50:42.756: [ffmpeg muxer: 'simple_file_output'] Writing file '/home/dich/2025-04-07 19-50-42.mkv'... +19:50:47.966: [ffmpeg muxer: 'simple_file_output'] Output of file '/home/dich/2025-04-07 19-50-42.mkv' stopped +19:50:47.966: Output 'simple_file_output': stopping +19:50:47.966: Output 'simple_file_output': Total frames output: 120 +19:50:47.966: Output 'simple_file_output': Total drawn frames: 157 +19:50:47.966: ==== Recording Stop ================================================ +19:50:47.971: libfdk_aac encoder destroyed +19:53:50.230: adding 128 milliseconds of audio buffering, total audio buffering is now 341 milliseconds (source: 麦克风/Aux 2) +19:53:50.230: +20:02:43.286: adding 64 milliseconds of audio buffering, total audio buffering is now 405 milliseconds (source: 麦克风/Aux 2) +20:02:43.286: +20:22:48.301: ReadOne on org.freedesktop.portal.Settings returned an invalid reply +20:22:48.302: ReadOne on org.freedesktop.portal.Settings returned an invalid reply +20:23:03.532: Settings changed (outputs) +20:23:03.532: ------------------------------------------------ +20:23:03.533: The Wayland connection experienced a fatal error: Bad file descriptor diff --git a/obs-studio/logs/2025-04-07 20-23-11.txt b/obs-studio/logs/2025-04-07 20-23-11.txt new file mode 100644 index 0000000..59d0ae5 --- /dev/null +++ b/obs-studio/logs/2025-04-07 20-23-11.txt @@ -0,0 +1,241 @@ +20:23:11.017: [Safe Mode] Unclean shutdown detected! +20:23:14.774: [Safe Mode] User elected to launch normally. +20:23:14.774: Platform: Wayland +20:23:14.774: CPU Name: AMD Ryzen 7 8845HS w/ Radeon 780M Graphics +20:23:14.774: CPU Speed: 1100.980MHz +20:23:14.775: Physical Cores: 8, Logical Cores: 16 +20:23:14.775: Physical Memory: 31266MB Total, 14118MB Free +20:23:14.775: Kernel Version: Linux 6.14.0-4-cachyos +20:23:14.775: Distribution: "CachyOS Linux" Unknown +20:23:14.775: Desktop Environment: KDE (KDE) +20:23:14.775: Session Type: wayland +20:23:14.776: Qt Version: 6.9.0 (runtime), 6.8.3 (compiled) +20:23:14.776: Portable mode: false +20:23:14.791: OBS 31.0.3 (linux) +20:23:14.791: --------------------------------- +20:23:14.792: --------------------------------- +20:23:14.792: audio settings reset: +20:23:14.792: samples per sec: 48000 +20:23:14.792: speakers: 2 +20:23:14.792: max buffering: 960 milliseconds +20:23:14.792: buffering type: dynamically increasing +20:23:14.793: --------------------------------- +20:23:14.793: Initializing OpenGL... +20:23:14.793: Using EGL/Wayland +20:23:14.799: Initialized EGL 1.5 +20:23:14.812: Loading up OpenGL on adapter AMD AMD Radeon Graphics (radeonsi, phoenix, LLVM 19.1.7, DRM 3.61, 6.14.0-4-cachyos) +20:23:14.812: OpenGL loaded successfully, version 4.6 (Core Profile) Mesa 25.0.3-cachyos1.2, shading language 4.60 +20:23:14.833: --------------------------------- +20:23:14.833: video settings reset: +20:23:14.833: base resolution: 1920x1080 +20:23:14.833: output resolution: 1280x720 +20:23:14.833: downscale filter: Bicubic +20:23:14.833: fps: 30/1 +20:23:14.833: format: NV12 +20:23:14.833: YUV mode: Rec. 709/Partial +20:23:14.833: NV12 texture support enabled +20:23:14.833: P010 texture support not available +20:23:14.835: Audio monitoring device: +20:23:14.835: name: Family 17h/19h/1ah HD Audio Controller Analog Stereo +20:23:14.835: id: alsa_output.pci-0000_05_00.6.analog-stereo +20:23:14.835: --------------------------------- +20:23:14.842: Failed to load 'en-US' text for module: 'decklink-captions.so' +20:23:14.849: Failed to load 'en-US' text for module: 'decklink-output-ui.so' +20:23:14.854: A DeckLink iterator could not be created. The DeckLink drivers may not be installed +20:23:14.854: Failed to initialize module 'decklink.so' +20:23:14.967: [pipewire] Available capture sources: +20:23:14.967: [pipewire] - Monitor source +20:23:14.967: [pipewire] - Window source +20:23:15.026: VAAPI: API version 1.22 +20:23:15.027: FFmpeg VAAPI H264 encoding supported +20:23:15.031: FFmpeg VAAPI AV1 encoding supported +20:23:15.034: FFmpeg VAAPI HEVC encoding supported +20:23:15.055: os_dlopen(libnvidia-encode.so.1->libnvidia-encode.so.1): libnvidia-encode.so.1: cannot open shared object file: No such file or directory +20:23:15.055: +20:23:15.055: NVENC not supported +20:23:15.055: Failed to initialize module 'obs-nvenc.so' +20:23:15.115: os_dlopen(/usr/lib/obs-plugins/obs-websocket.so->/usr/lib/obs-plugins/obs-websocket.so): libqrcodegencpp.so.1: cannot open shared object file: No such file or directory +20:23:15.115: +20:23:15.117: os_dlopen(/usr/lib/obs-plugins/obs-websocket.so->/usr/lib/obs-plugins/obs-websocket.so): libqrcodegencpp.so.1: cannot open shared object file: No such file or directory +20:23:15.117: +20:23:15.117: Module '/usr/lib/obs-plugins/obs-websocket.so' not loaded +20:23:15.137: --------------------------------- +20:23:15.137: Loaded Modules: +20:23:15.137: text-freetype2.so +20:23:15.137: rtmp-services.so +20:23:15.137: obs-x264.so +20:23:15.137: obs-webrtc.so +20:23:15.137: obs-vst.so +20:23:15.137: obs-transitions.so +20:23:15.137: obs-qsv11.so +20:23:15.137: obs-outputs.so +20:23:15.137: obs-libfdk.so +20:23:15.137: obs-filters.so +20:23:15.137: obs-ffmpeg.so +20:23:15.137: linux-v4l2.so +20:23:15.137: linux-pulseaudio.so +20:23:15.137: linux-pipewire.so +20:23:15.137: linux-jack.so +20:23:15.137: linux-capture.so +20:23:15.137: linux-alsa.so +20:23:15.137: image-source.so +20:23:15.137: frontend-tools.so +20:23:15.137: decklink-output-ui.so +20:23:15.137: decklink-captions.so +20:23:15.137: --------------------------------- +20:23:15.137: --------------------------------- +20:23:15.137: Available Encoders: +20:23:15.137: Video Encoders: +20:23:15.137: - ffmpeg_svt_av1 (SVT-AV1) +20:23:15.137: - ffmpeg_aom_av1 (AOM AV1) +20:23:15.137: - ffmpeg_vaapi_tex (FFmpeg VAAPI H.264) +20:23:15.137: - av1_ffmpeg_vaapi_tex (FFmpeg VAAPI AV1) +20:23:15.137: - hevc_ffmpeg_vaapi_tex (FFmpeg VAAPI HEVC) +20:23:15.137: - obs_x264 (x264) +20:23:15.138: Audio Encoders: +20:23:15.138: - ffmpeg_aac (FFmpeg AAC) +20:23:15.138: - ffmpeg_opus (FFmpeg Opus) +20:23:15.138: - ffmpeg_pcm_s16le (FFmpeg PCM (16位)) +20:23:15.138: - ffmpeg_pcm_s24le (FFmpeg PCM (24位)) +20:23:15.138: - ffmpeg_pcm_f32le (FFmpeg PCM (32位浮点)) +20:23:15.138: - ffmpeg_alac (FFmpeg ALAC (24位)) +20:23:15.138: - ffmpeg_flac (FFmpeg FLAC (16位)) +20:23:15.138: - libfdk_aac (libfdk AAC) +20:23:15.138: ==== Startup complete =============================================== +20:23:15.177: All scene data cleared +20:23:15.178: ------------------------------------------------ +20:23:15.181: pulse-input: Server name: 'PulseAudio (on PipeWire 1.4.1) 15.0.0' +20:23:15.182: pulse-input: Audio format: s32le, 48000 Hz, 2 channels +20:23:15.182: pulse-input: Started recording from 'alsa_output.pci-0000_05_00.6.analog-stereo.monitor' +20:23:15.182: [Loaded global audio device]: 'Desktop Audio' +20:23:15.182: pulse-input: Server name: 'PulseAudio (on PipeWire 1.4.1) 15.0.0' +20:23:15.182: pulse-input: Audio format: s32le, 48000 Hz, 2 channels +20:23:15.182: pulse-input: Started recording from 'alsa_output.pci-0000_05_00.1.hdmi-stereo-extra1.monitor' +20:23:15.182: [Loaded global audio device]: '桌面音频 2' +20:23:15.183: pulse-input: Server name: 'PulseAudio (on PipeWire 1.4.1) 15.0.0' +20:23:15.183: pulse-input: Audio format: s32le, 48000 Hz, 2 channels +20:23:15.183: pulse-input: Started recording from 'alsa_input.pci-0000_05_00.6.analog-stereo' +20:23:15.183: [Loaded global audio device]: 'Mic/Aux' +20:23:15.183: - filter: '噪声抑制' (noise_suppress_filter_v2) +20:23:15.184: pulse-input: Server name: 'PulseAudio (on PipeWire 1.4.1) 15.0.0' +20:23:15.184: pulse-input: Audio format: s32le, 48000 Hz, 2 channels +20:23:15.184: pulse-input: Started recording from 'alsa_input.pci-0000_05_00.6.analog-stereo' (default) +20:23:15.185: [Loaded global audio device]: '麦克风/Aux 2' +20:23:15.185: - filter: '噪声抑制' (noise_suppress_filter_v2) +20:23:15.185: PipeWire initialized +20:23:15.186: Switched to scene 'Scene' +20:23:15.186: ------------------------------------------------ +20:23:15.186: Loaded scenes: +20:23:15.186: - scene 'Scene': +20:23:15.186: - source: 'Screen Capture (PipeWire)' (pipewire-screen-capture-source) +20:23:15.186: ------------------------------------------------ +20:23:15.231: [pipewire] Screencast session created +20:23:15.272: [pipewire] Asking for monitor and window +20:23:15.320: [pipewire] source selected, setting up screencast +20:23:15.325: [pipewire] Server version: 1.4.1 +20:23:15.325: [pipewire] Library version: 1.4.1 +20:23:15.325: [pipewire] Header version: 1.4.1 +20:23:15.325: [pipewire] Created stream 0x5f201d66a4f0 +20:23:15.325: [pipewire] Stream 0x5f201d66a4f0 state: "connecting" (error: none) +20:23:15.325: [pipewire] Playing stream 0x5f201d66a4f0 +20:23:15.325: [pipewire] Stream 0x5f201d66a4f0 state: "paused" (error: none) +20:23:15.332: [pipewire] Negotiated format: +20:23:15.332: [pipewire] Format: 12 (Spa:Enum:VideoFormat:BGRA) +20:23:15.332: [pipewire] Modifier: 0x0 +20:23:15.332: [pipewire] Size: 2560x1440 +20:23:15.332: [pipewire] Framerate: 0/1 +20:23:15.332: [pipewire] Negotiated format: +20:23:15.332: [pipewire] Format: 12 (Spa:Enum:VideoFormat:BGRA) +20:23:15.332: [pipewire] Modifier: 0x20000001046bb04 +20:23:15.332: [pipewire] Size: 2560x1440 +20:23:15.332: [pipewire] Framerate: 0/1 +20:23:15.334: [pipewire] Stream 0x5f201d66a4f0 state: "streaming" (error: none) +20:23:15.731: adding 21 milliseconds of audio buffering, total audio buffering is now 21 milliseconds (source: Desktop Audio) +20:23:15.731: +20:23:15.752: adding 21 milliseconds of audio buffering, total audio buffering is now 42 milliseconds (source: 桌面音频 2) +20:23:15.752: +20:23:15.796: adding 21 milliseconds of audio buffering, total audio buffering is now 64 milliseconds (source: Mic/Aux) +20:23:15.796: +20:23:16.542: adding 64 milliseconds of audio buffering, total audio buffering is now 128 milliseconds (source: 麦克风/Aux 2) +20:23:16.542: +20:24:03.987: adding 42 milliseconds of audio buffering, total audio buffering is now 170 milliseconds (source: 麦克风/Aux 2) +20:24:03.987: +20:24:50.025: adding 21 milliseconds of audio buffering, total audio buffering is now 192 milliseconds (source: 麦克风/Aux 2) +20:24:50.025: +20:25:28.979: adding 21 milliseconds of audio buffering, total audio buffering is now 213 milliseconds (source: 麦克风/Aux 2) +20:25:28.979: +20:57:37.644: ==== Shutting down ================================================== +20:57:37.647: pulse-input: Stopped recording from 'alsa_output.pci-0000_05_00.6.analog-stereo.monitor' +20:57:37.647: pulse-input: Got 82509 packets with 99010800 frames +20:57:37.647: pulse-input: Stopped recording from 'alsa_output.pci-0000_05_00.1.hdmi-stereo-extra1.monitor' +20:57:37.647: pulse-input: Got 82508 packets with 99009600 frames +20:57:37.647: pulse-input: Stopped recording from 'alsa_input.pci-0000_05_00.6.analog-stereo' +20:57:37.647: pulse-input: Got 82509 packets with 99010800 frames +20:57:37.648: pulse-input: Stopped recording from 'alsa_input.pci-0000_05_00.6.analog-stereo' +20:57:37.648: pulse-input: Got 82507 packets with 99008400 frames +20:57:37.648: [pipewire] Stream 0x5f201d66a4f0 state: "paused" (error: none) +20:57:37.649: [pipewire] Stream 0x5f201d66a4f0 state: "unconnected" (error: none) +20:57:37.687: All scene data cleared +20:57:37.687: ------------------------------------------------ +20:57:37.755: [Scripting] Total detached callbacks: 0 +20:57:37.755: Freeing OBS context data +20:57:37.773: == Profiler Results ============================= +20:57:37.773: run_program_init: 4305.37 ms +20:57:37.773: ┣OBSApp::AppInit: 8.589 ms +20:57:37.774: ┃ ┗OBSApp::InitLocale: 0.751 ms +20:57:37.774: ┗OBSApp::OBSInit: 450.538 ms +20:57:37.774: ┣obs_startup: 2.041 ms +20:57:37.774: ┗OBSBasic::OBSInit: 432.989 ms +20:57:37.774: ┣OBSBasic::InitBasicConfig: 0.395 ms +20:57:37.774: ┣OBSBasic::ResetAudio: 0.208 ms +20:57:37.774: ┣OBSBasic::ResetVideo: 42.825 ms +20:57:37.774: ┃ ┗obs_init_graphics: 40.729 ms +20:57:37.774: ┃ ┗shader compilation: 20.683 ms +20:57:37.774: ┣OBSBasic::InitOBSCallbacks: 0.006 ms +20:57:37.774: ┣OBSBasic::InitHotkeys: 0.023 ms +20:57:37.774: ┣obs_load_all_modules2: 301.842 ms +20:57:37.774: ┃ ┣obs_init_module(decklink-captions.so): 0 ms +20:57:37.774: ┃ ┣obs_init_module(decklink-output-ui.so): 0 ms +20:57:37.774: ┃ ┣obs_init_module(decklink.so): 0.11 ms +20:57:37.774: ┃ ┣obs_init_module(frontend-tools.so): 54.231 ms +20:57:37.774: ┃ ┣obs_init_module(image-source.so): 0.009 ms +20:57:37.774: ┃ ┣obs_init_module(linux-alsa.so): 0.001 ms +20:57:37.774: ┃ ┣obs_init_module(linux-capture.so): 0 ms +20:57:37.774: ┃ ┣obs_init_module(linux-jack.so): 0.002 ms +20:57:37.774: ┃ ┣obs_init_module(linux-pipewire.so): 11.606 ms +20:57:37.774: ┃ ┣obs_init_module(linux-pulseaudio.so): 0.006 ms +20:57:37.774: ┃ ┣obs_init_module(linux-v4l2.so): 3.388 ms +20:57:37.774: ┃ ┣obs_init_module(obs-ffmpeg.so): 12.691 ms +20:57:37.774: ┃ ┣obs_init_module(obs-filters.so): 0.016 ms +20:57:37.774: ┃ ┣obs_init_module(obs-libfdk.so): 0.003 ms +20:57:37.774: ┃ ┣obs_init_module(obs-nvenc.so): 0.129 ms +20:57:37.774: ┃ ┃ ┗nvenc_check: 0.108 ms +20:57:37.774: ┃ ┣obs_init_module(obs-outputs.so): 0.008 ms +20:57:37.774: ┃ ┣obs_init_module(obs-qsv11.so): 6.997 ms +20:57:37.774: ┃ ┣obs_init_module(obs-transitions.so): 0.008 ms +20:57:37.774: ┃ ┣obs_init_module(obs-vst.so): 0.005 ms +20:57:37.774: ┃ ┣obs_init_module(obs-webrtc.so): 0.003 ms +20:57:37.774: ┃ ┣obs_init_module(obs-x264.so): 0.007 ms +20:57:37.774: ┃ ┣obs_init_module(rtmp-services.so): 0.709 ms +20:57:37.774: ┃ ┗obs_init_module(text-freetype2.so): 0.011 ms +20:57:37.774: ┣OBSBasic::InitService: 1.051 ms +20:57:37.774: ┣OBSBasic::ResetOutputs: 0.134 ms +20:57:37.774: ┣OBSBasic::CreateHotkeys: 0.022 ms +20:57:37.774: ┣OBSBasic::InitPrimitives: 0.238 ms +20:57:37.774: ┗OBSBasic::Load: 46.595 ms +20:57:37.774: obs_hotkey_thread(25 ms): min=0 ms, median=0 ms, max=0.088 ms, 99th percentile=0.002 ms, 100% below 25 ms +20:57:37.774: audio_thread(Audio): min=0.006 ms, median=0.099 ms, max=1.093 ms, 99th percentile=0.293 ms +20:57:37.774: obs_graphics_thread(33.3333 ms): min=0.14 ms, median=0.559 ms, max=219.468 ms, 99th percentile=1.181 ms, 99.9984% below 33.333 ms +20:57:37.774: ┣tick_sources: min=0 ms, median=0.009 ms, max=0.14 ms, 99th percentile=0.028 ms +20:57:37.774: ┣output_frame: min=0.077 ms, median=0.301 ms, max=2.161 ms, 99th percentile=0.796 ms +20:57:37.774: ┃ ┗gs_context(video->graphics): min=0.077 ms, median=0.301 ms, max=2.16 ms, 99th percentile=0.795 ms +20:57:37.774: ┃ ┣render_video: min=0.017 ms, median=0.088 ms, max=0.639 ms, 99th percentile=0.212 ms +20:57:37.774: ┃ ┃ ┗render_main_texture: min=0.012 ms, median=0.083 ms, max=0.633 ms, 99th percentile=0.201 ms +20:57:37.774: ┃ ┗gs_flush: min=0.003 ms, median=0.196 ms, max=1.997 ms, 99th percentile=0.701 ms +20:57:37.774: ┗render_displays: min=0.002 ms, median=0.221 ms, max=219.16 ms, 99th percentile=0.451 ms +20:57:37.774: ================================================= +20:57:37.774: == Profiler Time Between Calls ================== +20:57:37.774: obs_hotkey_thread(25 ms): min=25.008 ms, median=25.069 ms, max=27.171 ms, 98.689% within ±2% of 25 ms (0% lower, 1.31102% higher) +20:57:37.774: obs_graphics_thread(33.3333 ms): min=13.865 ms, median=33.333 ms, max=219.475 ms, 98.3759% within ±2% of 33.333 ms (0.803154% lower, 0.82093% higher) +20:57:37.774: ================================================= +20:57:37.779: Number of memory leaks: 0 diff --git a/obs-studio/logs/2025-04-08 16-04-53.txt b/obs-studio/logs/2025-04-08 16-04-53.txt new file mode 100644 index 0000000..884f703 --- /dev/null +++ b/obs-studio/logs/2025-04-08 16-04-53.txt @@ -0,0 +1,581 @@ +16:04:53.071: Platform: Wayland +16:04:53.071: CPU Name: AMD Ryzen 7 8845HS w/ Radeon 780M Graphics +16:04:53.071: CPU Speed: 2908.593MHz +16:04:53.072: Physical Cores: 8, Logical Cores: 16 +16:04:53.072: Physical Memory: 31266MB Total, 24115MB Free +16:04:53.072: Kernel Version: Linux 6.14.1-2-cachyos +16:04:53.072: Distribution: "CachyOS Linux" Unknown +16:04:53.072: Desktop Environment: KDE (KDE) +16:04:53.072: Session Type: wayland +16:04:53.073: Qt Version: 6.9.0 (runtime), 6.8.3 (compiled) +16:04:53.073: Portable mode: false +16:04:53.104: OBS 31.0.3 (linux) +16:04:53.104: --------------------------------- +16:04:53.105: --------------------------------- +16:04:53.105: audio settings reset: +16:04:53.105: samples per sec: 48000 +16:04:53.105: speakers: 2 +16:04:53.105: max buffering: 960 milliseconds +16:04:53.105: buffering type: dynamically increasing +16:04:53.106: --------------------------------- +16:04:53.106: Initializing OpenGL... +16:04:53.106: Using EGL/Wayland +16:04:53.112: Initialized EGL 1.5 +16:04:53.123: Loading up OpenGL on adapter AMD AMD Radeon Graphics (radeonsi, phoenix, LLVM 19.1.7, DRM 3.61, 6.14.1-2-cachyos) +16:04:53.123: OpenGL loaded successfully, version 4.6 (Core Profile) Mesa 25.0.3-cachyos1.2, shading language 4.60 +16:04:53.146: --------------------------------- +16:04:53.146: video settings reset: +16:04:53.146: base resolution: 1920x1080 +16:04:53.146: output resolution: 1280x720 +16:04:53.146: downscale filter: Bicubic +16:04:53.146: fps: 30/1 +16:04:53.146: format: NV12 +16:04:53.146: YUV mode: Rec. 709/Partial +16:04:53.146: NV12 texture support enabled +16:04:53.146: P010 texture support not available +16:04:53.148: Audio monitoring device: +16:04:53.148: name: Family 17h/19h/1ah HD Audio Controller Analog Stereo +16:04:53.148: id: alsa_output.pci-0000_05_00.6.analog-stereo +16:04:53.149: --------------------------------- +16:04:53.158: Failed to load 'en-US' text for module: 'decklink-captions.so' +16:04:53.167: Failed to load 'en-US' text for module: 'decklink-output-ui.so' +16:04:53.173: A DeckLink iterator could not be created. The DeckLink drivers may not be installed +16:04:53.173: Failed to initialize module 'decklink.so' +16:04:53.293: [pipewire] Available capture sources: +16:04:53.293: [pipewire] - Monitor source +16:04:53.293: [pipewire] - Window source +16:04:53.356: VAAPI: API version 1.22 +16:04:53.357: FFmpeg VAAPI H264 encoding supported +16:04:53.361: FFmpeg VAAPI AV1 encoding supported +16:04:53.363: FFmpeg VAAPI HEVC encoding supported +16:04:53.389: os_dlopen(libnvidia-encode.so.1->libnvidia-encode.so.1): libnvidia-encode.so.1: cannot open shared object file: No such file or directory +16:04:53.389: +16:04:53.389: NVENC not supported +16:04:53.389: Failed to initialize module 'obs-nvenc.so' +16:04:53.454: os_dlopen(/usr/lib/obs-plugins/obs-websocket.so->/usr/lib/obs-plugins/obs-websocket.so): libqrcodegencpp.so.1: cannot open shared object file: No such file or directory +16:04:53.454: +16:04:53.455: os_dlopen(/usr/lib/obs-plugins/obs-websocket.so->/usr/lib/obs-plugins/obs-websocket.so): libqrcodegencpp.so.1: cannot open shared object file: No such file or directory +16:04:53.455: +16:04:53.455: Module '/usr/lib/obs-plugins/obs-websocket.so' not loaded +16:04:53.476: --------------------------------- +16:04:53.476: Loaded Modules: +16:04:53.476: text-freetype2.so +16:04:53.476: rtmp-services.so +16:04:53.476: obs-x264.so +16:04:53.476: obs-webrtc.so +16:04:53.476: obs-vst.so +16:04:53.476: obs-transitions.so +16:04:53.476: obs-qsv11.so +16:04:53.476: obs-outputs.so +16:04:53.476: obs-libfdk.so +16:04:53.476: obs-filters.so +16:04:53.476: obs-ffmpeg.so +16:04:53.476: linux-v4l2.so +16:04:53.476: linux-pulseaudio.so +16:04:53.476: linux-pipewire.so +16:04:53.476: linux-jack.so +16:04:53.476: linux-capture.so +16:04:53.476: linux-alsa.so +16:04:53.476: image-source.so +16:04:53.476: frontend-tools.so +16:04:53.477: decklink-output-ui.so +16:04:53.477: decklink-captions.so +16:04:53.477: --------------------------------- +16:04:53.477: --------------------------------- +16:04:53.477: Available Encoders: +16:04:53.477: Video Encoders: +16:04:53.477: - ffmpeg_svt_av1 (SVT-AV1) +16:04:53.477: - ffmpeg_aom_av1 (AOM AV1) +16:04:53.477: - ffmpeg_vaapi_tex (FFmpeg VAAPI H.264) +16:04:53.477: - av1_ffmpeg_vaapi_tex (FFmpeg VAAPI AV1) +16:04:53.477: - hevc_ffmpeg_vaapi_tex (FFmpeg VAAPI HEVC) +16:04:53.477: - obs_x264 (x264) +16:04:53.477: Audio Encoders: +16:04:53.477: - ffmpeg_aac (FFmpeg AAC) +16:04:53.477: - ffmpeg_opus (FFmpeg Opus) +16:04:53.477: - ffmpeg_pcm_s16le (FFmpeg PCM (16位)) +16:04:53.477: - ffmpeg_pcm_s24le (FFmpeg PCM (24位)) +16:04:53.477: - ffmpeg_pcm_f32le (FFmpeg PCM (32位浮点)) +16:04:53.477: - ffmpeg_alac (FFmpeg ALAC (24位)) +16:04:53.477: - ffmpeg_flac (FFmpeg FLAC (16位)) +16:04:53.477: - libfdk_aac (libfdk AAC) +16:04:53.477: ==== Startup complete =============================================== +16:04:53.534: All scene data cleared +16:04:53.534: ------------------------------------------------ +16:04:53.537: pulse-input: Server name: 'PulseAudio (on PipeWire 1.4.1) 15.0.0' +16:04:53.537: pulse-input: Audio format: s32le, 48000 Hz, 2 channels +16:04:53.537: pulse-input: Started recording from 'alsa_output.pci-0000_05_00.6.analog-stereo.monitor' +16:04:53.537: [Loaded global audio device]: 'Desktop Audio' +16:04:53.538: pulse-input: Server name: 'PulseAudio (on PipeWire 1.4.1) 15.0.0' +16:04:53.538: pulse-input: Audio format: s32le, 48000 Hz, 2 channels +16:04:53.538: pulse-input: Started recording from 'alsa_output.pci-0000_05_00.1.hdmi-stereo-extra1.monitor' +16:04:53.538: [Loaded global audio device]: '桌面音频 2' +16:04:53.538: pulse-input: Server name: 'PulseAudio (on PipeWire 1.4.1) 15.0.0' +16:04:53.538: pulse-input: Audio format: s32le, 48000 Hz, 2 channels +16:04:53.538: pulse-input: Started recording from 'alsa_input.pci-0000_05_00.6.analog-stereo' +16:04:53.539: [Loaded global audio device]: 'Mic/Aux' +16:04:53.539: - filter: '噪声抑制' (noise_suppress_filter_v2) +16:04:53.539: pulse-input: Server name: 'PulseAudio (on PipeWire 1.4.1) 15.0.0' +16:04:53.539: pulse-input: Audio format: s32le, 48000 Hz, 2 channels +16:04:53.539: pulse-input: Started recording from 'alsa_input.pci-0000_05_00.6.analog-stereo' (default) +16:04:53.539: [Loaded global audio device]: '麦克风/Aux 2' +16:04:53.539: - filter: '噪声抑制' (noise_suppress_filter_v2) +16:04:53.539: PipeWire initialized +16:04:53.540: Switched to scene 'Scene' +16:04:53.540: ------------------------------------------------ +16:04:53.540: Loaded scenes: +16:04:53.540: - scene 'Scene': +16:04:53.540: - source: 'Screen Capture (PipeWire)' (pipewire-screen-capture-source) +16:04:53.540: ------------------------------------------------ +16:04:53.580: [pipewire] Screencast session created +16:04:53.626: [pipewire] Asking for monitor and window +16:04:53.734: [pipewire] source selected, setting up screencast +16:04:53.757: [pipewire] Server version: 1.4.1 +16:04:53.757: [pipewire] Library version: 1.4.1 +16:04:53.757: [pipewire] Header version: 1.4.1 +16:04:53.757: [pipewire] Created stream 0x6101dd37a270 +16:04:53.757: [pipewire] Stream 0x6101dd37a270 state: "connecting" (error: none) +16:04:53.757: [pipewire] Playing stream 0x6101dd37a270 +16:04:53.762: [pipewire] Stream 0x6101dd37a270 state: "paused" (error: none) +16:04:53.772: [pipewire] Negotiated format: +16:04:53.772: [pipewire] Format: 12 (Spa:Enum:VideoFormat:BGRA) +16:04:53.772: [pipewire] Modifier: 0x0 +16:04:53.772: [pipewire] Size: 2560x1440 +16:04:53.772: [pipewire] Framerate: 0/1 +16:04:53.773: [pipewire] Negotiated format: +16:04:53.773: [pipewire] Format: 12 (Spa:Enum:VideoFormat:BGRA) +16:04:53.773: [pipewire] Modifier: 0x20000001046bb04 +16:04:53.773: [pipewire] Size: 2560x1440 +16:04:53.773: [pipewire] Framerate: 0/1 +16:04:53.780: [pipewire] Stream 0x6101dd37a270 state: "streaming" (error: none) +16:04:54.278: adding 21 milliseconds of audio buffering, total audio buffering is now 21 milliseconds (source: Desktop Audio) +16:04:54.278: +16:04:54.342: adding 21 milliseconds of audio buffering, total audio buffering is now 42 milliseconds (source: Mic/Aux) +16:04:54.342: +16:04:55.089: adding 128 milliseconds of audio buffering, total audio buffering is now 170 milliseconds (source: 麦克风/Aux 2) +16:04:55.089: +16:04:58.562: --------------------------------- +16:04:58.562: [x264 encoder: 'simple_video_stream'] preset: veryfast +16:04:58.562: [x264 encoder: 'simple_video_stream'] settings: +16:04:58.562: rate_control: CBR +16:04:58.562: bitrate: 2500 +16:04:58.562: buffer size: 2500 +16:04:58.562: crf: 23 +16:04:58.562: fps_num: 30 +16:04:58.562: fps_den: 1 +16:04:58.562: width: 1280 +16:04:58.562: height: 720 +16:04:58.562: keyint: 250 +16:04:58.562: +16:04:58.569: libfdk_aac encoder created +16:04:58.569: libfdk_aac bitrate: 160, channels: 2 +16:04:58.573: ==== Recording Start =============================================== +16:04:58.573: [ffmpeg muxer: 'simple_file_output'] Writing file '/home/dich/2025-04-08 16-04-58.mp4'... +16:05:14.314: [ffmpeg muxer: 'simple_file_output'] Output of file '/home/dich/2025-04-08 16-04-58.mp4' stopped +16:05:14.314: Output 'simple_file_output': stopping +16:05:14.314: Output 'simple_file_output': Total frames output: 436 +16:05:14.314: Output 'simple_file_output': Total drawn frames: 472 +16:05:14.314: ==== Recording Stop ================================================ +16:05:14.321: libfdk_aac encoder destroyed +16:05:31.249: adding 42 milliseconds of audio buffering, total audio buffering is now 213 milliseconds (source: 麦克风/Aux 2) +16:05:31.249: +16:07:01.006: --------------------------------- +16:07:01.006: [x264 encoder: 'simple_video_stream'] preset: veryfast +16:07:01.006: [x264 encoder: 'simple_video_stream'] settings: +16:07:01.006: rate_control: CBR +16:07:01.006: bitrate: 2500 +16:07:01.006: buffer size: 2500 +16:07:01.006: crf: 23 +16:07:01.006: fps_num: 30 +16:07:01.006: fps_den: 1 +16:07:01.006: width: 1280 +16:07:01.006: height: 720 +16:07:01.006: keyint: 250 +16:07:01.006: +16:07:01.012: libfdk_aac encoder created +16:07:01.012: libfdk_aac bitrate: 160, channels: 2 +16:07:01.014: ==== Recording Start =============================================== +16:07:01.014: [ffmpeg muxer: 'simple_file_output'] Writing file '/home/dich/2025-04-08 16-07-01.mp4'... +16:07:03.753: [ffmpeg muxer: 'simple_file_output'] Output of file '/home/dich/2025-04-08 16-07-01.mp4' stopped +16:07:03.753: Output 'simple_file_output': stopping +16:07:03.753: Output 'simple_file_output': Total frames output: 46 +16:07:03.753: Output 'simple_file_output': Total drawn frames: 83 +16:07:03.754: ==== Recording Stop ================================================ +16:07:03.762: libfdk_aac encoder destroyed +16:07:23.610: --------------------------------- +16:07:23.610: [x264 encoder: 'simple_video_stream'] preset: veryfast +16:07:23.610: [x264 encoder: 'simple_video_stream'] settings: +16:07:23.610: rate_control: CBR +16:07:23.610: bitrate: 2500 +16:07:23.610: buffer size: 2500 +16:07:23.610: crf: 23 +16:07:23.610: fps_num: 30 +16:07:23.610: fps_den: 1 +16:07:23.610: width: 1280 +16:07:23.610: height: 720 +16:07:23.610: keyint: 250 +16:07:23.610: +16:07:23.619: libfdk_aac encoder created +16:07:23.619: libfdk_aac bitrate: 160, channels: 2 +16:07:23.620: ==== Recording Start =============================================== +16:07:23.620: [ffmpeg muxer: 'simple_file_output'] Writing file '/home/dich/2025-04-08 16-07-23.mp4'... +16:07:44.221: [ffmpeg muxer: 'simple_file_output'] Output of file '/home/dich/2025-04-08 16-07-23.mp4' stopped +16:07:44.221: Output 'simple_file_output': stopping +16:07:44.221: Output 'simple_file_output': Total frames output: 581 +16:07:44.221: Output 'simple_file_output': Total drawn frames: 618 +16:07:44.221: ==== Recording Stop ================================================ +16:07:44.227: libfdk_aac encoder destroyed +16:07:50.966: ReadOne on org.freedesktop.portal.Settings returned an invalid reply +16:07:50.967: ReadOne on org.freedesktop.portal.Settings returned an invalid reply +16:08:59.578: --------------------------------- +16:08:59.578: [x264 encoder: 'simple_video_stream'] preset: veryfast +16:08:59.578: [x264 encoder: 'simple_video_stream'] settings: +16:08:59.578: rate_control: CBR +16:08:59.578: bitrate: 2500 +16:08:59.578: buffer size: 2500 +16:08:59.578: crf: 23 +16:08:59.578: fps_num: 30 +16:08:59.578: fps_den: 1 +16:08:59.578: width: 1280 +16:08:59.578: height: 720 +16:08:59.578: keyint: 250 +16:08:59.578: +16:08:59.584: libfdk_aac encoder created +16:08:59.584: libfdk_aac bitrate: 160, channels: 2 +16:08:59.585: ==== Recording Start =============================================== +16:08:59.585: [ffmpeg muxer: 'simple_file_output'] Writing file '/home/dich/2025-04-08 16-08-59.mp4'... +16:09:15.520: [ffmpeg muxer: 'simple_file_output'] Output of file '/home/dich/2025-04-08 16-08-59.mp4' stopped +16:09:15.520: Output 'simple_file_output': stopping +16:09:15.520: Output 'simple_file_output': Total frames output: 441 +16:09:15.520: Output 'simple_file_output': Total drawn frames: 478 +16:09:15.520: ==== Recording Stop ================================================ +16:09:15.524: libfdk_aac encoder destroyed +16:09:52.082: ReadOne on org.freedesktop.portal.Settings returned an invalid reply +16:09:52.082: ReadOne on org.freedesktop.portal.Settings returned an invalid reply +16:10:04.503: Settings changed (audio) +16:10:04.504: ------------------------------------------------ +16:10:04.516: pulse-input: Stopped recording from 'alsa_output.pci-0000_05_00.1.hdmi-stereo-extra1.monitor' +16:10:04.516: pulse-input: Got 12435 packets with 14922000 frames +16:10:06.444: --------------------------------- +16:10:06.444: [x264 encoder: 'simple_video_stream'] preset: veryfast +16:10:06.444: [x264 encoder: 'simple_video_stream'] settings: +16:10:06.444: rate_control: CBR +16:10:06.444: bitrate: 2500 +16:10:06.444: buffer size: 2500 +16:10:06.444: crf: 23 +16:10:06.444: fps_num: 30 +16:10:06.444: fps_den: 1 +16:10:06.444: width: 1280 +16:10:06.444: height: 720 +16:10:06.444: keyint: 250 +16:10:06.444: +16:10:06.451: libfdk_aac encoder created +16:10:06.451: libfdk_aac bitrate: 160, channels: 2 +16:10:06.452: ==== Recording Start =============================================== +16:10:06.452: [ffmpeg muxer: 'simple_file_output'] Writing file '/home/dich/2025-04-08 16-10-06.mp4'... +16:10:22.580: [ffmpeg muxer: 'simple_file_output'] Output of file '/home/dich/2025-04-08 16-10-06.mp4' stopped +16:10:22.580: Output 'simple_file_output': stopping +16:10:22.580: Output 'simple_file_output': Total frames output: 447 +16:10:22.580: Output 'simple_file_output': Total drawn frames: 483 +16:10:22.581: ==== Recording Stop ================================================ +16:10:22.588: libfdk_aac encoder destroyed +16:10:42.599: ReadOne on org.freedesktop.portal.Settings returned an invalid reply +16:10:42.599: ReadOne on org.freedesktop.portal.Settings returned an invalid reply +16:11:09.408: Settings changed (audio) +16:11:09.408: ------------------------------------------------ +16:11:09.416: pulse-input: Stopped recording from 'alsa_input.pci-0000_05_00.6.analog-stereo' +16:11:09.416: pulse-input: Got 15028 packets with 18033600 frames +16:11:12.107: --------------------------------- +16:11:12.107: [x264 encoder: 'simple_video_stream'] preset: veryfast +16:11:12.107: [x264 encoder: 'simple_video_stream'] settings: +16:11:12.107: rate_control: CBR +16:11:12.107: bitrate: 2500 +16:11:12.107: buffer size: 2500 +16:11:12.107: crf: 23 +16:11:12.107: fps_num: 30 +16:11:12.107: fps_den: 1 +16:11:12.107: width: 1280 +16:11:12.107: height: 720 +16:11:12.107: keyint: 250 +16:11:12.107: +16:11:12.115: libfdk_aac encoder created +16:11:12.115: libfdk_aac bitrate: 160, channels: 2 +16:11:12.117: ==== Recording Start =============================================== +16:11:12.117: [ffmpeg muxer: 'simple_file_output'] Writing file '/home/dich/2025-04-08 16-11-12.mp4'... +16:11:25.152: [ffmpeg muxer: 'simple_file_output'] Output of file '/home/dich/2025-04-08 16-11-12.mp4' stopped +16:11:25.152: Output 'simple_file_output': stopping +16:11:25.152: Output 'simple_file_output': Total frames output: 354 +16:11:25.152: Output 'simple_file_output': Total drawn frames: 391 +16:11:25.152: ==== Recording Stop ================================================ +16:11:25.160: libfdk_aac encoder destroyed +16:12:06.543: --------------------------------- +16:12:06.543: [x264 encoder: 'simple_video_stream'] preset: veryfast +16:12:06.543: [x264 encoder: 'simple_video_stream'] settings: +16:12:06.543: rate_control: CBR +16:12:06.543: bitrate: 2500 +16:12:06.543: buffer size: 2500 +16:12:06.543: crf: 23 +16:12:06.543: fps_num: 30 +16:12:06.543: fps_den: 1 +16:12:06.543: width: 1280 +16:12:06.543: height: 720 +16:12:06.543: keyint: 250 +16:12:06.543: +16:12:06.548: libfdk_aac encoder created +16:12:06.548: libfdk_aac bitrate: 160, channels: 2 +16:12:06.549: ==== Recording Start =============================================== +16:12:06.549: [ffmpeg muxer: 'simple_file_output'] Writing file '/home/dich/2025-04-08 16-12-06.mp4'... +16:14:25.844: [ffmpeg muxer: 'simple_file_output'] Output of file '/home/dich/2025-04-08 16-12-06.mp4' stopped +16:14:25.844: Output 'simple_file_output': stopping +16:14:25.844: Output 'simple_file_output': Total frames output: 4143 +16:14:25.844: Output 'simple_file_output': Total drawn frames: 4178 +16:14:25.845: ==== Recording Stop ================================================ +16:14:25.851: libfdk_aac encoder destroyed +16:18:11.618: --------------------------------- +16:18:11.618: [x264 encoder: 'simple_video_stream'] preset: veryfast +16:18:11.618: [x264 encoder: 'simple_video_stream'] settings: +16:18:11.618: rate_control: CBR +16:18:11.618: bitrate: 2500 +16:18:11.618: buffer size: 2500 +16:18:11.618: crf: 23 +16:18:11.618: fps_num: 30 +16:18:11.618: fps_den: 1 +16:18:11.618: width: 1280 +16:18:11.618: height: 720 +16:18:11.618: keyint: 250 +16:18:11.618: +16:18:11.620: libfdk_aac encoder created +16:18:11.620: libfdk_aac bitrate: 160, channels: 2 +16:18:11.621: ==== Recording Start =============================================== +16:18:11.621: [ffmpeg muxer: 'simple_file_output'] Writing file '/home/dich/2025-04-08 16-18-11.mp4'... +16:18:13.812: [ffmpeg muxer: 'simple_file_output'] Output of file '/home/dich/2025-04-08 16-18-11.mp4' stopped +16:18:13.812: Output 'simple_file_output': stopping +16:18:13.812: Output 'simple_file_output': Total frames output: 29 +16:18:13.812: Output 'simple_file_output': Total drawn frames: 65 +16:18:13.812: ==== Recording Stop ================================================ +16:18:13.818: libfdk_aac encoder destroyed +16:19:23.023: --------------------------------- +16:19:23.023: [x264 encoder: 'simple_video_stream'] preset: veryfast +16:19:23.023: [x264 encoder: 'simple_video_stream'] settings: +16:19:23.023: rate_control: CBR +16:19:23.023: bitrate: 2500 +16:19:23.023: buffer size: 2500 +16:19:23.023: crf: 23 +16:19:23.023: fps_num: 30 +16:19:23.023: fps_den: 1 +16:19:23.023: width: 1280 +16:19:23.023: height: 720 +16:19:23.023: keyint: 250 +16:19:23.023: +16:19:23.025: libfdk_aac encoder created +16:19:23.025: libfdk_aac bitrate: 160, channels: 2 +16:19:23.025: ==== Recording Start =============================================== +16:19:23.025: [ffmpeg muxer: 'simple_file_output'] Writing file '/home/dich/2025-04-08 16-19-23.mp4'... +16:19:51.710: [ffmpeg muxer: 'simple_file_output'] Output of file '/home/dich/2025-04-08 16-19-23.mp4' stopped +16:19:51.710: Output 'simple_file_output': stopping +16:19:51.710: Output 'simple_file_output': Total frames output: 824 +16:19:51.710: Output 'simple_file_output': Total drawn frames: 860 +16:19:51.710: ==== Recording Stop ================================================ +16:19:51.716: libfdk_aac encoder destroyed +16:21:01.770: --------------------------------- +16:21:01.770: [x264 encoder: 'simple_video_stream'] preset: veryfast +16:21:01.770: [x264 encoder: 'simple_video_stream'] settings: +16:21:01.770: rate_control: CBR +16:21:01.770: bitrate: 2500 +16:21:01.770: buffer size: 2500 +16:21:01.770: crf: 23 +16:21:01.770: fps_num: 30 +16:21:01.770: fps_den: 1 +16:21:01.770: width: 1280 +16:21:01.770: height: 720 +16:21:01.770: keyint: 250 +16:21:01.770: +16:21:01.773: libfdk_aac encoder created +16:21:01.773: libfdk_aac bitrate: 160, channels: 2 +16:21:01.773: ==== Recording Start =============================================== +16:21:01.773: [ffmpeg muxer: 'simple_file_output'] Writing file '/home/dich/2025-04-08 16-21-01.mp4'... +16:21:07.955: [ffmpeg muxer: 'simple_file_output'] Output of file '/home/dich/2025-04-08 16-21-01.mp4' stopped +16:21:07.955: Output 'simple_file_output': stopping +16:21:07.955: Output 'simple_file_output': Total frames output: 149 +16:21:07.955: Output 'simple_file_output': Total drawn frames: 186 +16:21:07.955: ==== Recording Stop ================================================ +16:21:07.961: libfdk_aac encoder destroyed +16:21:09.487: --------------------------------- +16:21:09.487: [x264 encoder: 'simple_video_stream'] preset: veryfast +16:21:09.487: [x264 encoder: 'simple_video_stream'] settings: +16:21:09.487: rate_control: CBR +16:21:09.487: bitrate: 2500 +16:21:09.487: buffer size: 2500 +16:21:09.487: crf: 23 +16:21:09.487: fps_num: 30 +16:21:09.487: fps_den: 1 +16:21:09.487: width: 1280 +16:21:09.487: height: 720 +16:21:09.487: keyint: 250 +16:21:09.487: +16:21:09.489: libfdk_aac encoder created +16:21:09.489: libfdk_aac bitrate: 160, channels: 2 +16:21:09.490: ==== Recording Start =============================================== +16:21:09.490: [ffmpeg muxer: 'simple_file_output'] Writing file '/home/dich/2025-04-08 16-21-09.mp4'... +16:21:56.221: [ffmpeg muxer: 'simple_file_output'] Output of file '/home/dich/2025-04-08 16-21-09.mp4' stopped +16:21:56.221: Output 'simple_file_output': stopping +16:21:56.221: Output 'simple_file_output': Total frames output: 1365 +16:21:56.221: Output 'simple_file_output': Total drawn frames: 1402 +16:21:56.221: ==== Recording Stop ================================================ +16:21:56.228: libfdk_aac encoder destroyed +16:22:19.148: --------------------------------- +16:22:19.148: [x264 encoder: 'simple_video_stream'] preset: veryfast +16:22:19.148: [x264 encoder: 'simple_video_stream'] settings: +16:22:19.148: rate_control: CBR +16:22:19.148: bitrate: 2500 +16:22:19.148: buffer size: 2500 +16:22:19.148: crf: 23 +16:22:19.148: fps_num: 30 +16:22:19.148: fps_den: 1 +16:22:19.148: width: 1280 +16:22:19.148: height: 720 +16:22:19.148: keyint: 250 +16:22:19.148: +16:22:19.154: libfdk_aac encoder created +16:22:19.154: libfdk_aac bitrate: 160, channels: 2 +16:22:19.154: ==== Recording Start =============================================== +16:22:19.154: [ffmpeg muxer: 'simple_file_output'] Writing file '/home/dich/2025-04-08 16-22-19.mp4'... +16:26:17.548: [ffmpeg muxer: 'simple_file_output'] Output of file '/home/dich/2025-04-08 16-22-19.mp4' stopped +16:26:17.548: Output 'simple_file_output': stopping +16:26:17.548: Output 'simple_file_output': Total frames output: 7115 +16:26:17.548: Output 'simple_file_output': Total drawn frames: 7151 +16:26:17.548: ==== Recording Stop ================================================ +16:26:17.555: libfdk_aac encoder destroyed +16:32:14.527: --------------------------------- +16:32:14.527: [x264 encoder: 'simple_video_stream'] preset: veryfast +16:32:14.527: [x264 encoder: 'simple_video_stream'] settings: +16:32:14.527: rate_control: CBR +16:32:14.527: bitrate: 2500 +16:32:14.527: buffer size: 2500 +16:32:14.527: crf: 23 +16:32:14.527: fps_num: 30 +16:32:14.527: fps_den: 1 +16:32:14.527: width: 1280 +16:32:14.527: height: 720 +16:32:14.527: keyint: 250 +16:32:14.527: +16:32:14.530: libfdk_aac encoder created +16:32:14.530: libfdk_aac bitrate: 160, channels: 2 +16:32:14.530: ==== Recording Start =============================================== +16:32:14.530: [ffmpeg muxer: 'simple_file_output'] Writing file '/home/dich/2025-04-08 16-32-14.mp4'... +16:33:01.385: [ffmpeg muxer: 'simple_file_output'] Output of file '/home/dich/2025-04-08 16-32-14.mp4' stopped +16:33:01.385: Output 'simple_file_output': stopping +16:33:01.385: Output 'simple_file_output': Total frames output: 1369 +16:33:01.385: Output 'simple_file_output': Total drawn frames: 1406 +16:33:01.386: ==== Recording Stop ================================================ +16:33:01.392: libfdk_aac encoder destroyed +16:33:10.331: --------------------------------- +16:33:10.331: [x264 encoder: 'simple_video_stream'] preset: veryfast +16:33:10.331: [x264 encoder: 'simple_video_stream'] settings: +16:33:10.331: rate_control: CBR +16:33:10.331: bitrate: 2500 +16:33:10.331: buffer size: 2500 +16:33:10.331: crf: 23 +16:33:10.331: fps_num: 30 +16:33:10.331: fps_den: 1 +16:33:10.331: width: 1280 +16:33:10.331: height: 720 +16:33:10.331: keyint: 250 +16:33:10.331: +16:33:10.333: libfdk_aac encoder created +16:33:10.333: libfdk_aac bitrate: 160, channels: 2 +16:33:10.333: ==== Recording Start =============================================== +16:33:10.333: [ffmpeg muxer: 'simple_file_output'] Writing file '/home/dich/2025-04-08 16-33-10.mp4'... +16:37:57.619: [ffmpeg muxer: 'simple_file_output'] Output of file '/home/dich/2025-04-08 16-33-10.mp4' stopped +16:37:57.619: Output 'simple_file_output': stopping +16:37:57.619: Output 'simple_file_output': Total frames output: 8582 +16:37:57.619: Output 'simple_file_output': Total drawn frames: 8619 +16:37:57.620: ==== Recording Stop ================================================ +16:37:57.626: libfdk_aac encoder destroyed +16:42:48.670: ==== Shutting down ================================================== +16:42:48.676: pulse-input: Stopped recording from 'alsa_output.pci-0000_05_00.6.analog-stereo.monitor' +16:42:48.676: pulse-input: Got 90995 packets with 109194000 frames +16:42:48.676: pulse-input: Stopped recording from 'alsa_input.pci-0000_05_00.6.analog-stereo' +16:42:48.676: pulse-input: Got 91001 packets with 109201200 frames +16:42:48.676: [pipewire] Stream 0x6101dd37a270 state: "paused" (error: none) +16:42:48.676: [pipewire] Stream 0x6101dd37a270 state: "unconnected" (error: none) +16:42:48.736: All scene data cleared +16:42:48.736: ------------------------------------------------ +16:42:48.801: [Scripting] Total detached callbacks: 0 +16:42:48.802: Freeing OBS context data +16:42:48.815: == Profiler Results ============================= +16:42:48.815: run_program_init: 609.548 ms +16:42:48.815: ┣OBSApp::AppInit: 15.421 ms +16:42:48.815: ┃ ┗OBSApp::InitLocale: 2.683 ms +16:42:48.815: ┗OBSApp::OBSInit: 503.441 ms +16:42:48.815: ┣obs_startup: 2.095 ms +16:42:48.815: ┗OBSBasic::OBSInit: 470.517 ms +16:42:48.815: ┣OBSBasic::InitBasicConfig: 0.651 ms +16:42:48.815: ┣OBSBasic::ResetAudio: 0.14 ms +16:42:48.815: ┣OBSBasic::ResetVideo: 43.592 ms +16:42:48.815: ┃ ┗obs_init_graphics: 41.195 ms +16:42:48.815: ┃ ┗shader compilation: 22.102 ms +16:42:48.815: ┣OBSBasic::InitOBSCallbacks: 0.004 ms +16:42:48.815: ┣OBSBasic::InitHotkeys: 0.026 ms +16:42:48.815: ┣obs_load_all_modules2: 327.25 ms +16:42:48.815: ┃ ┣obs_init_module(decklink-captions.so): 0 ms +16:42:48.815: ┃ ┣obs_init_module(decklink-output-ui.so): 0 ms +16:42:48.815: ┃ ┣obs_init_module(decklink.so): 0.085 ms +16:42:48.815: ┃ ┣obs_init_module(frontend-tools.so): 54.438 ms +16:42:48.815: ┃ ┣obs_init_module(image-source.so): 0.014 ms +16:42:48.815: ┃ ┣obs_init_module(linux-alsa.so): 0.002 ms +16:42:48.816: ┃ ┣obs_init_module(linux-capture.so): 0 ms +16:42:48.816: ┃ ┣obs_init_module(linux-jack.so): 0.003 ms +16:42:48.816: ┃ ┣obs_init_module(linux-pipewire.so): 12.415 ms +16:42:48.816: ┃ ┣obs_init_module(linux-pulseaudio.so): 0.007 ms +16:42:48.816: ┃ ┣obs_init_module(linux-v4l2.so): 4.601 ms +16:42:48.816: ┃ ┣obs_init_module(obs-ffmpeg.so): 11.059 ms +16:42:48.816: ┃ ┣obs_init_module(obs-filters.so): 0.028 ms +16:42:48.816: ┃ ┣obs_init_module(obs-libfdk.so): 0.001 ms +16:42:48.816: ┃ ┣obs_init_module(obs-nvenc.so): 0.126 ms +16:42:48.816: ┃ ┃ ┗nvenc_check: 0.105 ms +16:42:48.816: ┃ ┣obs_init_module(obs-outputs.so): 0.006 ms +16:42:48.816: ┃ ┣obs_init_module(obs-qsv11.so): 7.614 ms +16:42:48.816: ┃ ┣obs_init_module(obs-transitions.so): 0.009 ms +16:42:48.816: ┃ ┣obs_init_module(obs-vst.so): 0.003 ms +16:42:48.816: ┃ ┣obs_init_module(obs-webrtc.so): 0.002 ms +16:42:48.816: ┃ ┣obs_init_module(obs-x264.so): 0.008 ms +16:42:48.816: ┃ ┣obs_init_module(rtmp-services.so): 1.428 ms +16:42:48.816: ┃ ┗obs_init_module(text-freetype2.so): 0.02 ms +16:42:48.816: ┣OBSBasic::InitService: 1.777 ms +16:42:48.816: ┣OBSBasic::ResetOutputs: 0.167 ms +16:42:48.816: ┣OBSBasic::CreateHotkeys: 0.037 ms +16:42:48.816: ┣OBSBasic::InitPrimitives: 0.396 ms +16:42:48.816: ┗OBSBasic::Load: 60.744 ms +16:42:48.816: obs_hotkey_thread(25 ms): min=0 ms, median=0 ms, max=0.135 ms, 99th percentile=0.002 ms, 100% below 25 ms +16:42:48.816: audio_thread(Audio): min=0.01 ms, median=0.087 ms, max=5.747 ms, 99th percentile=0.891 ms +16:42:48.816: ┗receive_audio: min=0.001 ms, median=0.351 ms, max=5.689 ms, 99th percentile=0.746 ms, 0.38664 calls per parent call +16:42:48.816: ┣buffer_audio: min=0 ms, median=0.001 ms, max=0.057 ms, 99th percentile=0.005 ms +16:42:48.816: ┗do_encode: min=0.037 ms, median=0.349 ms, max=5.687 ms, 99th percentile=0.742 ms +16:42:48.816: ┣encode(simple_aac): min=0.034 ms, median=0.338 ms, max=1.343 ms, 99th percentile=0.718 ms +16:42:48.816: ┗send_packet: min=0 ms, median=0.007 ms, max=5.574 ms, 99th percentile=0.054 ms +16:42:48.816: obs_graphics_thread(33.3333 ms): min=0.131 ms, median=0.722 ms, max=215.835 ms, 99th percentile=1.942 ms, 99.9722% below 33.333 ms +16:42:48.816: ┣tick_sources: min=0 ms, median=0.009 ms, max=0.958 ms, 99th percentile=0.032 ms +16:42:48.816: ┣output_frame: min=0.062 ms, median=0.397 ms, max=3.904 ms, 99th percentile=1.487 ms +16:42:48.816: ┃ ┣gs_context(video->graphics): min=0.062 ms, median=0.366 ms, max=3.903 ms, 99th percentile=1.116 ms +16:42:48.816: ┃ ┃ ┣render_video: min=0.016 ms, median=0.092 ms, max=1.178 ms, 99th percentile=0.371 ms +16:42:48.816: ┃ ┃ ┃ ┣render_main_texture: min=0.015 ms, median=0.076 ms, max=0.662 ms, 99th percentile=0.236 ms +16:42:48.816: ┃ ┃ ┃ ┣render_output_texture: min=0.012 ms, median=0.032 ms, max=0.974 ms, 99th percentile=0.079 ms, 0.386767 calls per parent call +16:42:48.816: ┃ ┃ ┃ ┣render_convert_texture: min=0.011 ms, median=0.034 ms, max=0.36 ms, 99th percentile=0.087 ms, 0.386767 calls per parent call +16:42:48.816: ┃ ┃ ┃ ┗stage_output_texture: min=0.006 ms, median=0.02 ms, max=0.18 ms, 99th percentile=0.056 ms, 0.386767 calls per parent call +16:42:48.816: ┃ ┃ ┣gs_flush: min=0.002 ms, median=0.215 ms, max=2.853 ms, 99th percentile=0.929 ms +16:42:48.816: ┃ ┃ ┗download_frame: min=0 ms, median=0.076 ms, max=0.849 ms, 99th percentile=0.17 ms, 0.386767 calls per parent call +16:42:48.816: ┃ ┗output_video_data: min=0.074 ms, median=0.21 ms, max=2.626 ms, 99th percentile=0.656 ms, 0.386562 calls per parent call +16:42:48.816: ┗render_displays: min=0.002 ms, median=0.259 ms, max=215.563 ms, 99th percentile=0.539 ms +16:42:48.816: video_thread(video): min=0.34 ms, median=0.914 ms, max=5.345 ms, 99th percentile=2.087 ms +16:42:48.816: ┗receive_video: min=0.339 ms, median=0.913 ms, max=5.343 ms, 99th percentile=2.085 ms +16:42:48.816: ┗do_encode: min=0.338 ms, median=0.912 ms, max=5.342 ms, 99th percentile=2.082 ms +16:42:48.816: ┣encode(simple_video_stream): min=0.329 ms, median=0.889 ms, max=4.471 ms, 99th percentile=2.037 ms +16:42:48.816: ┗send_packet: min=0.002 ms, median=0.012 ms, max=4.142 ms, 99th percentile=0.073 ms +16:42:48.816: OBSBasicSettings::LoadThemeList: min=0.033 ms, median=0.034 ms, max=0.037 ms, 99th percentile=0.037 ms +16:42:48.816: ================================================= +16:42:48.816: == Profiler Time Between Calls ================== +16:42:48.816: obs_hotkey_thread(25 ms): min=25.007 ms, median=25.079 ms, max=27.055 ms, 97.84% within ±2% of 25 ms (0% lower, 2.16% higher) +16:42:48.816: obs_graphics_thread(33.3333 ms): min=2.988 ms, median=33.333 ms, max=215.894 ms, 96.6559% within ±2% of 33.333 ms (1.66913% lower, 1.675% higher) +16:42:48.816: ================================================= +16:42:48.828: Number of memory leaks: 0 diff --git a/obs-studio/logs/2025-04-12 21-20-31.txt b/obs-studio/logs/2025-04-12 21-20-31.txt new file mode 100644 index 0000000..9e4e8ee --- /dev/null +++ b/obs-studio/logs/2025-04-12 21-20-31.txt @@ -0,0 +1,216 @@ +21:20:31.116: Platform: Wayland +21:20:31.116: CPU Name: AMD Ryzen 7 8845HS w/ Radeon 780M Graphics +21:20:31.116: CPU Speed: 1100.980MHz +21:20:31.116: Physical Cores: 8, Logical Cores: 16 +21:20:31.116: Physical Memory: 31266MB Total, 23548MB Free +21:20:31.116: Kernel Version: Linux 6.14.2-2-cachyos +21:20:31.116: Distribution: "CachyOS Linux" Unknown +21:20:31.116: Desktop Environment: KDE (KDE) +21:20:31.116: Session Type: wayland +21:20:31.118: Qt Version: 6.9.0 (runtime), 6.8.3 (compiled) +21:20:31.118: Portable mode: false +21:20:31.148: OBS 31.0.3 (linux) +21:20:31.148: --------------------------------- +21:20:31.149: --------------------------------- +21:20:31.149: audio settings reset: +21:20:31.149: samples per sec: 48000 +21:20:31.149: speakers: 2 +21:20:31.149: max buffering: 960 milliseconds +21:20:31.149: buffering type: dynamically increasing +21:20:31.150: --------------------------------- +21:20:31.150: Initializing OpenGL... +21:20:31.150: Using EGL/Wayland +21:20:31.156: Initialized EGL 1.5 +21:20:31.168: Loading up OpenGL on adapter AMD AMD Radeon Graphics (radeonsi, phoenix, LLVM 19.1.7, DRM 3.61, 6.14.2-2-cachyos) +21:20:31.168: OpenGL loaded successfully, version 4.6 (Core Profile) Mesa 25.0.3-cachyos1.2, shading language 4.60 +21:20:31.191: --------------------------------- +21:20:31.191: video settings reset: +21:20:31.191: base resolution: 1920x1080 +21:20:31.191: output resolution: 1280x720 +21:20:31.191: downscale filter: Bicubic +21:20:31.191: fps: 30/1 +21:20:31.191: format: NV12 +21:20:31.191: YUV mode: Rec. 709/Partial +21:20:31.192: NV12 texture support enabled +21:20:31.192: P010 texture support not available +21:20:31.195: Audio monitoring device: +21:20:31.195: name: Family 17h/19h/1ah HD Audio Controller Analog Stereo +21:20:31.195: id: alsa_output.pci-0000_05_00.6.analog-stereo +21:20:31.196: --------------------------------- +21:20:31.205: Failed to load 'en-US' text for module: 'decklink-captions.so' +21:20:31.212: Failed to load 'en-US' text for module: 'decklink-output-ui.so' +21:20:31.217: A DeckLink iterator could not be created. The DeckLink drivers may not be installed +21:20:31.217: Failed to initialize module 'decklink.so' +21:20:31.331: [pipewire] Available capture sources: +21:20:31.331: [pipewire] - Monitor source +21:20:31.331: [pipewire] - Window source +21:20:31.413: VAAPI: API version 1.22 +21:20:31.414: FFmpeg VAAPI H264 encoding supported +21:20:31.417: FFmpeg VAAPI AV1 encoding supported +21:20:31.420: FFmpeg VAAPI HEVC encoding supported +21:20:31.444: os_dlopen(libnvidia-encode.so.1->libnvidia-encode.so.1): libnvidia-encode.so.1: cannot open shared object file: No such file or directory +21:20:31.444: +21:20:31.444: NVENC not supported +21:20:31.444: Failed to initialize module 'obs-nvenc.so' +21:20:31.512: os_dlopen(/usr/lib/obs-plugins/obs-websocket.so->/usr/lib/obs-plugins/obs-websocket.so): libqrcodegencpp.so.1: cannot open shared object file: No such file or directory +21:20:31.512: +21:20:31.514: os_dlopen(/usr/lib/obs-plugins/obs-websocket.so->/usr/lib/obs-plugins/obs-websocket.so): libqrcodegencpp.so.1: cannot open shared object file: No such file or directory +21:20:31.514: +21:20:31.514: Module '/usr/lib/obs-plugins/obs-websocket.so' not loaded +21:20:31.533: --------------------------------- +21:20:31.533: Loaded Modules: +21:20:31.533: text-freetype2.so +21:20:31.533: rtmp-services.so +21:20:31.533: obs-x264.so +21:20:31.533: obs-webrtc.so +21:20:31.533: obs-vst.so +21:20:31.533: obs-transitions.so +21:20:31.533: obs-qsv11.so +21:20:31.533: obs-outputs.so +21:20:31.533: obs-libfdk.so +21:20:31.533: obs-filters.so +21:20:31.533: obs-ffmpeg.so +21:20:31.533: linux-v4l2.so +21:20:31.533: linux-pulseaudio.so +21:20:31.533: linux-pipewire.so +21:20:31.533: linux-jack.so +21:20:31.533: linux-capture.so +21:20:31.533: linux-alsa.so +21:20:31.533: image-source.so +21:20:31.533: frontend-tools.so +21:20:31.533: decklink-output-ui.so +21:20:31.533: decklink-captions.so +21:20:31.533: --------------------------------- +21:20:31.533: --------------------------------- +21:20:31.533: Available Encoders: +21:20:31.533: Video Encoders: +21:20:31.533: - ffmpeg_svt_av1 (SVT-AV1) +21:20:31.533: - ffmpeg_aom_av1 (AOM AV1) +21:20:31.533: - ffmpeg_vaapi_tex (FFmpeg VAAPI H.264) +21:20:31.533: - av1_ffmpeg_vaapi_tex (FFmpeg VAAPI AV1) +21:20:31.533: - hevc_ffmpeg_vaapi_tex (FFmpeg VAAPI HEVC) +21:20:31.533: - obs_x264 (x264) +21:20:31.533: Audio Encoders: +21:20:31.533: - ffmpeg_aac (FFmpeg AAC) +21:20:31.533: - ffmpeg_opus (FFmpeg Opus) +21:20:31.533: - ffmpeg_pcm_s16le (FFmpeg PCM (16位)) +21:20:31.533: - ffmpeg_pcm_s24le (FFmpeg PCM (24位)) +21:20:31.533: - ffmpeg_pcm_f32le (FFmpeg PCM (32位浮点)) +21:20:31.533: - ffmpeg_alac (FFmpeg ALAC (24位)) +21:20:31.533: - ffmpeg_flac (FFmpeg FLAC (16位)) +21:20:31.533: - libfdk_aac (libfdk AAC) +21:20:31.533: ==== Startup complete =============================================== +21:20:31.578: All scene data cleared +21:20:31.578: ------------------------------------------------ +21:20:31.581: pulse-input: Server name: 'PulseAudio (on PipeWire 1.4.1) 15.0.0' +21:20:31.581: pulse-input: Audio format: s32le, 48000 Hz, 2 channels +21:20:31.581: pulse-input: Started recording from 'alsa_output.pci-0000_05_00.6.analog-stereo.monitor' +21:20:31.581: [Loaded global audio device]: 'Desktop Audio' +21:20:31.582: pulse-input: Server name: 'PulseAudio (on PipeWire 1.4.1) 15.0.0' +21:20:31.582: pulse-input: Audio format: s32le, 48000 Hz, 2 channels +21:20:31.582: pulse-input: Started recording from 'alsa_input.pci-0000_05_00.6.analog-stereo' +21:20:31.582: [Loaded global audio device]: 'Mic/Aux' +21:20:31.582: - filter: '噪声抑制' (noise_suppress_filter_v2) +21:20:31.582: PipeWire initialized +21:20:31.583: Switched to scene 'Scene' +21:20:31.583: ------------------------------------------------ +21:20:31.583: Loaded scenes: +21:20:31.583: - scene 'Scene': +21:20:31.583: - source: 'Screen Capture (PipeWire)' (pipewire-screen-capture-source) +21:20:31.583: ------------------------------------------------ +21:20:31.624: [pipewire] Screencast session created +21:20:31.628: [pipewire] Asking for monitor and window +21:20:32.323: adding 42 milliseconds of audio buffering, total audio buffering is now 42 milliseconds (source: Desktop Audio) +21:20:32.323: +21:20:32.365: adding 21 milliseconds of audio buffering, total audio buffering is now 64 milliseconds (source: Mic/Aux) +21:20:32.365: +21:20:35.220: [pipewire] source selected, setting up screencast +21:20:35.224: [pipewire] Server version: 1.4.1 +21:20:35.224: [pipewire] Library version: 1.4.1 +21:20:35.224: [pipewire] Header version: 1.4.1 +21:20:35.224: [pipewire] Created stream 0x63c55733e070 +21:20:35.224: [pipewire] Stream 0x63c55733e070 state: "connecting" (error: none) +21:20:35.224: [pipewire] Playing stream 0x63c55733e070 +21:20:35.225: [pipewire] Stream 0x63c55733e070 state: "paused" (error: none) +21:20:35.230: [pipewire] Negotiated format: +21:20:35.230: [pipewire] Format: 12 (Spa:Enum:VideoFormat:BGRA) +21:20:35.230: [pipewire] Modifier: 0x0 +21:20:35.230: [pipewire] Size: 2560x1440 +21:20:35.230: [pipewire] Framerate: 0/1 +21:20:35.231: [pipewire] Negotiated format: +21:20:35.231: [pipewire] Format: 12 (Spa:Enum:VideoFormat:BGRA) +21:20:35.231: [pipewire] Modifier: 0x20000001046bb04 +21:20:35.231: [pipewire] Size: 2560x1440 +21:20:35.231: [pipewire] Framerate: 0/1 +21:20:35.240: [pipewire] Stream 0x63c55733e070 state: "streaming" (error: none) +21:20:40.202: ==== Shutting down ================================================== +21:20:40.205: pulse-input: Stopped recording from 'alsa_output.pci-0000_05_00.6.analog-stereo.monitor' +21:20:40.205: pulse-input: Got 337 packets with 404400 frames +21:20:40.205: pulse-input: Stopped recording from 'alsa_input.pci-0000_05_00.6.analog-stereo' +21:20:40.205: pulse-input: Got 337 packets with 404400 frames +21:20:40.206: [pipewire] Stream 0x63c55733e070 state: "paused" (error: none) +21:20:40.206: [pipewire] Stream 0x63c55733e070 state: "unconnected" (error: none) +21:20:40.241: All scene data cleared +21:20:40.241: ------------------------------------------------ +21:20:40.309: [Scripting] Total detached callbacks: 0 +21:20:40.309: Freeing OBS context data +21:20:40.331: == Profiler Results ============================= +21:20:40.331: run_program_init: 604.944 ms +21:20:40.331: ┣OBSApp::AppInit: 16.092 ms +21:20:40.331: ┃ ┗OBSApp::InitLocale: 2.276 ms +21:20:40.331: ┗OBSApp::OBSInit: 502.6 ms +21:20:40.331: ┣obs_startup: 2.038 ms +21:20:40.331: ┗OBSBasic::OBSInit: 469.802 ms +21:20:40.331: ┣OBSBasic::InitBasicConfig: 0.494 ms +21:20:40.331: ┣OBSBasic::ResetAudio: 0.097 ms +21:20:40.331: ┣OBSBasic::ResetVideo: 46.066 ms +21:20:40.331: ┃ ┗obs_init_graphics: 42.28 ms +21:20:40.331: ┃ ┗shader compilation: 22.518 ms +21:20:40.331: ┣OBSBasic::InitOBSCallbacks: 0.008 ms +21:20:40.331: ┣OBSBasic::InitHotkeys: 0.05 ms +21:20:40.331: ┣obs_load_all_modules2: 336.707 ms +21:20:40.331: ┃ ┣obs_init_module(decklink-captions.so): 0 ms +21:20:40.331: ┃ ┣obs_init_module(decklink-output-ui.so): 0 ms +21:20:40.331: ┃ ┣obs_init_module(decklink.so): 0.083 ms +21:20:40.331: ┃ ┣obs_init_module(frontend-tools.so): 50.143 ms +21:20:40.331: ┃ ┣obs_init_module(image-source.so): 0.006 ms +21:20:40.331: ┃ ┣obs_init_module(linux-alsa.so): 0.001 ms +21:20:40.331: ┃ ┣obs_init_module(linux-capture.so): 0 ms +21:20:40.331: ┃ ┣obs_init_module(linux-jack.so): 0.007 ms +21:20:40.331: ┃ ┣obs_init_module(linux-pipewire.so): 11.447 ms +21:20:40.331: ┃ ┣obs_init_module(linux-pulseaudio.so): 0.012 ms +21:20:40.331: ┃ ┣obs_init_module(linux-v4l2.so): 4.77 ms +21:20:40.331: ┃ ┣obs_init_module(obs-ffmpeg.so): 11.889 ms +21:20:40.331: ┃ ┣obs_init_module(obs-filters.so): 0.016 ms +21:20:40.331: ┃ ┣obs_init_module(obs-libfdk.so): 0.002 ms +21:20:40.331: ┃ ┣obs_init_module(obs-nvenc.so): 0.085 ms +21:20:40.331: ┃ ┃ ┗nvenc_check: 0.074 ms +21:20:40.331: ┃ ┣obs_init_module(obs-outputs.so): 0.005 ms +21:20:40.331: ┃ ┣obs_init_module(obs-qsv11.so): 8.456 ms +21:20:40.331: ┃ ┣obs_init_module(obs-transitions.so): 0.01 ms +21:20:40.331: ┃ ┣obs_init_module(obs-vst.so): 0.003 ms +21:20:40.331: ┃ ┣obs_init_module(obs-webrtc.so): 0.002 ms +21:20:40.331: ┃ ┣obs_init_module(obs-x264.so): 0.002 ms +21:20:40.331: ┃ ┣obs_init_module(rtmp-services.so): 0.994 ms +21:20:40.331: ┃ ┗obs_init_module(text-freetype2.so): 0.013 ms +21:20:40.331: ┣OBSBasic::InitService: 1.326 ms +21:20:40.331: ┣OBSBasic::ResetOutputs: 0.132 ms +21:20:40.331: ┣OBSBasic::CreateHotkeys: 0.02 ms +21:20:40.331: ┣OBSBasic::InitPrimitives: 0.201 ms +21:20:40.331: ┗OBSBasic::Load: 48.497 ms +21:20:40.331: obs_hotkey_thread(25 ms): min=0 ms, median=0 ms, max=0.002 ms, 99th percentile=0.001 ms, 100% below 25 ms +21:20:40.331: audio_thread(Audio): min=0.006 ms, median=0.053 ms, max=2.477 ms, 99th percentile=0.211 ms +21:20:40.331: obs_graphics_thread(33.3333 ms): min=0.127 ms, median=0.479 ms, max=92.221 ms, 99th percentile=6.453 ms, 99.6324% below 33.333 ms +21:20:40.331: ┣tick_sources: min=0 ms, median=0.006 ms, max=0.033 ms, 99th percentile=0.028 ms +21:20:40.331: ┣output_frame: min=0.063 ms, median=0.227 ms, max=3.063 ms, 99th percentile=0.619 ms +21:20:40.331: ┃ ┗gs_context(video->graphics): min=0.063 ms, median=0.226 ms, max=3.063 ms, 99th percentile=0.615 ms +21:20:40.331: ┃ ┣render_video: min=0.009 ms, median=0.052 ms, max=2.827 ms, 99th percentile=0.197 ms +21:20:40.331: ┃ ┃ ┗render_main_texture: min=0.008 ms, median=0.048 ms, max=2.789 ms, 99th percentile=0.188 ms +21:20:40.331: ┃ ┗gs_flush: min=0.001 ms, median=0.105 ms, max=0.411 ms, 99th percentile=0.343 ms +21:20:40.331: ┗render_displays: min=0.001 ms, median=0.24 ms, max=91.944 ms, 99th percentile=1.508 ms +21:20:40.331: ================================================= +21:20:40.331: == Profiler Time Between Calls ================== +21:20:40.331: obs_hotkey_thread(25 ms): min=25.01 ms, median=25.064 ms, max=27.223 ms, 97.8022% within ±2% of 25 ms (0% lower, 2.1978% higher) +21:20:40.331: obs_graphics_thread(33.3333 ms): min=7.779 ms, median=33.333 ms, max=92.235 ms, 99.262% within ±2% of 33.333 ms (0.369004% lower, 0.369004% higher) +21:20:40.331: ================================================= +21:20:40.332: Number of memory leaks: 0 diff --git a/obs-studio/plugin_config/rtmp-services/amazon_ivs_ingests.json b/obs-studio/plugin_config/rtmp-services/amazon_ivs_ingests.json new file mode 100644 index 0000000..2cb31e4 --- /dev/null +++ b/obs-studio/plugin_config/rtmp-services/amazon_ivs_ingests.json @@ -0,0 +1,625 @@ +{ + "ingests": [ + { + "_id": 0, + "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": 0 + }, + { + "_id": 1, + "availability": 1.0, + "default": false, + "name": "Asia: Japan, Tokyo (3)", + "url_template": "rtmp://tyo03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://tyo03.contribute.live-video.net/app/{stream_key}", + "priority": 1 + }, + { + "_id": 2, + "availability": 1.0, + "default": false, + "name": "Asia: Japan, Tokyo (5)", + "url_template": "rtmp://tyo05.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://tyo05.contribute.live-video.net/app/{stream_key}", + "priority": 2 + }, + { + "_id": 3, + "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": 3 + }, + { + "_id": 4, + "availability": 1.0, + "default": false, + "name": "Asia: South Korea, Seoul (3)", + "url_template": "rtmp://sel03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://sel03.contribute.live-video.net/app/{stream_key}", + "priority": 4 + }, + { + "_id": 5, + "availability": 1.0, + "default": false, + "name": "Asia: South Korea, Seoul (4)", + "url_template": "rtmp://sel04.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://sel04.contribute.live-video.net/app/{stream_key}", + "priority": 5 + }, + { + "_id": 6, + "availability": 1.0, + "default": false, + "name": "Asia: Taiwan, Taipei (3)", + "url_template": "rtmp://tpe03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://tpe03.contribute.live-video.net/app/{stream_key}", + "priority": 6 + }, + { + "_id": 7, + "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": 7 + }, + { + "_id": 8, + "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": 8 + }, + { + "_id": 9, + "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": 9 + }, + { + "_id": 10, + "availability": 1.0, + "default": false, + "name": "Asia: Thailand, Bangkok (2)", + "url_template": "rtmp://bkk02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://bkk02.contribute.live-video.net/app/{stream_key}", + "priority": 10 + }, + { + "_id": 11, + "availability": 1.0, + "default": false, + "name": "Asia: Singapore (1)", + "url_template": "rtmp://sin01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://sin01.contribute.live-video.net/app/{stream_key}", + "priority": 11 + }, + { + "_id": 12, + "availability": 1.0, + "default": false, + "name": "Asia: Indonesia, Jakarta (2)", + "url_template": "rtmp://jkt02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://jkt02.contribute.live-video.net/app/{stream_key}", + "priority": 12 + }, + { + "_id": 13, + "availability": 1.0, + "default": false, + "name": "Asia: India, Hyderabad (1)", + "url_template": "rtmp://hyd01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://hyd01.contribute.live-video.net/app/{stream_key}", + "priority": 13 + }, + { + "_id": 14, + "availability": 1.0, + "default": false, + "name": "Asia: India, Chennai (1)", + "url_template": "rtmp://maa01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://maa01.contribute.live-video.net/app/{stream_key}", + "priority": 14 + }, + { + "_id": 15, + "availability": 1.0, + "default": false, + "name": "Asia: India, New Delhi (1)", + "url_template": "rtmp://del01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://del01.contribute.live-video.net/app/{stream_key}", + "priority": 15 + }, + { + "_id": 16, + "availability": 1.0, + "default": false, + "name": "Asia: India, Bangalore (1)", + "url_template": "rtmp://blr01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://blr01.contribute.live-video.net/app/{stream_key}", + "priority": 16 + }, + { + "_id": 17, + "availability": 1.0, + "default": false, + "name": "Asia: India, Mumbai", + "url_template": "rtmp://bom01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://bom01.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": "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": 19 + }, + { + "_id": 20, + "availability": 1.0, + "default": false, + "name": "Oceania: Australia, Sydney (2)", + "url_template": "rtmp://syd02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://syd02.contribute.live-video.net/app/{stream_key}", + "priority": 20 + }, + { + "_id": 21, + "availability": 1.0, + "default": false, + "name": "Oceania: Australia, Sydney (3)", + "url_template": "rtmp://syd03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://syd03.contribute.live-video.net/app/{stream_key}", + "priority": 21 + }, + { + "_id": 22, + "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": 22 + }, + { + "_id": 23, + "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": 23 + }, + { + "_id": 24, + "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": 24 + }, + { + "_id": 25, + "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": 25 + }, + { + "_id": 26, + "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": 26 + }, + { + "_id": 27, + "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": 27 + }, + { + "_id": 28, + "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": 28 + }, + { + "_id": 29, + "availability": 1.0, + "default": false, + "name": "Europe: Czech Republic, Prague", + "url_template": "rtmp://prg03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://prg03.contribute.live-video.net/app/{stream_key}", + "priority": 29 + }, + { + "_id": 30, + "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": 30 + }, + { + "_id": 31, + "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": 31 + }, + { + "_id": 32, + "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": 32 + }, + { + "_id": 33, + "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": 33 + }, + { + "_id": 34, + "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": 34 + }, + { + "_id": 35, + "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": 35 + }, + { + "_id": 36, + "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": 36 + }, + { + "_id": 37, + "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": 37 + }, + { + "_id": 38, + "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": 38 + }, + { + "_id": 39, + "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": 39 + }, + { + "_id": 40, + "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": 40 + }, + { + "_id": 41, + "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": 41 + }, + { + "_id": 42, + "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": 42 + }, + { + "_id": 43, + "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": 43 + }, + { + "_id": 44, + "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": 44 + }, + { + "_id": 45, + "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": 45 + }, + { + "_id": 46, + "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": 46 + }, + { + "_id": 47, + "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": 47 + }, + { + "_id": 48, + "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": 48 + }, + { + "_id": 49, + "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": 49 + }, + { + "_id": 50, + "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": 50 + }, + { + "_id": 51, + "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": 51 + }, + { + "_id": 52, + "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": 52 + }, + { + "_id": 53, + "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": 53 + }, + { + "_id": 54, + "availability": 1.0, + "default": false, + "name": "US East: New York, NY (50)", + "url_template": "rtmp://jfk50.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://jfk50.contribute.live-video.net/app/{stream_key}", + "priority": 54 + }, + { + "_id": 55, + "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": 55 + }, + { + "_id": 56, + "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": 56 + }, + { + "_id": 57, + "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": 57 + }, + { + "_id": 58, + "availability": 1.0, + "default": false, + "name": "NA: Mexico, Queretaro (4)", + "url_template": "rtmp://qro04.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://qro04.contribute.live-video.net/app/{stream_key}", + "priority": 58 + }, + { + "_id": 59, + "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": 59 + }, + { + "_id": 60, + "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": 60 + }, + { + "_id": 61, + "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": 61 + }, + { + "_id": 62, + "availability": 1.0, + "default": false, + "name": "South America: Brazil, Fortaleza (1)", + "url_template": "rtmp://for01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://for01.contribute.live-video.net/app/{stream_key}", + "priority": 62 + }, + { + "_id": 63, + "availability": 1.0, + "default": false, + "name": "South America : chile, Santiago (1)", + "url_template": "rtmp://scl01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://scl01.contribute.live-video.net/app/{stream_key}", + "priority": 63 + }, + { + "_id": 64, + "availability": 1.0, + "default": false, + "name": "South America: Buenos Aires, Argentina (1)", + "url_template": "rtmp://bue01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://bue01.contribute.live-video.net/app/{stream_key}", + "priority": 64 + }, + { + "_id": 65, + "availability": 1.0, + "default": false, + "name": "South America: Brazil, Sao Paulo (5)", + "url_template": "rtmp://sao05.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://sao05.contribute.live-video.net/app/{stream_key}", + "priority": 65 + }, + { + "_id": 66, + "availability": 1.0, + "default": false, + "name": "South America: Brazil, Sao Paulo", + "url_template": "rtmp://sao03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://sao03.contribute.live-video.net/app/{stream_key}", + "priority": 66 + }, + { + "_id": 67, + "availability": 1.0, + "default": false, + "name": "South America: Brazil, Rio de Janeiro (4)", + "url_template": "rtmp://rio04.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://rio04.contribute.live-video.net/app/{stream_key}", + "priority": 67 + }, + { + "_id": 68, + "availability": 1.0, + "default": false, + "name": "South America: Brazil, Rio de Janeiro (3)", + "url_template": "rtmp://rio03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://rio03.contribute.live-video.net/app/{stream_key}", + "priority": 68 + } + ] +} diff --git a/obs-studio/plugin_config/rtmp-services/package.json b/obs-studio/plugin_config/rtmp-services/package.json new file mode 100644 index 0000000..7a60fe0 --- /dev/null +++ b/obs-studio/plugin_config/rtmp-services/package.json @@ -0,0 +1,11 @@ +{ + "$schema": "schema/package-schema.json", + "url": "https://obsproject.com/obs2_update/rtmp-services/v5", + "version": 268, + "files": [ + { + "name": "services.json", + "version": 268 + } + ] +} diff --git a/obs-studio/plugin_config/rtmp-services/services.json b/obs-studio/plugin_config/rtmp-services/services.json new file mode 100644 index 0000000..3ddd184 --- /dev/null +++ b/obs-studio/plugin_config/rtmp-services/services.json @@ -0,0 +1,3586 @@ +{ + "$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": "LOCO", + "servers": [ + { + "name": "Default", + "url": "rtmp://ivory-ingest.getloconow.com:1935/stream" + } + ], + "recommended": { + "keyint": 2 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "niconico, premium member (ニコニコ生放送 プレミアム会員)", + "servers": [ + { + "name": "Default", + "url": "rtmp://aliveorigin.dmc.nico/named_input" + } + ], + "recommended": { + "keyint": 2, + "profile": "high", + "max audio bitrate": 192, + "max video bitrate": 5808, + "x264opts": "tune=zerolatency" + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "niconico, free member (ニコニコ生放送 一般会員)", + "servers": [ + { + "name": "Default", + "url": "rtmp://aliveorigin.dmc.nico/named_input" + } + ], + "recommended": { + "keyint": 2, + "profile": "high", + "max audio bitrate": 96, + "max video bitrate": 904, + "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" + ] + }, + { + "name": "Volume.com", + "stream_key_link": "https://volume.com/b?show_key=1&webrtc=0", + "servers": [ + { + "name": "Default - Recommended", + "url": "rtmp://live.volume.com/live-origin" + }, + { + "name": "US - West", + "url": "rtmp://live-pdx.volume.com/live-origin" + }, + { + "name": "US - East", + "url": "rtmp://live-ash.volume.com/live-origin" + } + ], + "recommended": { + "keyint": 2, + "max video bitrate": 20000, + "max fps": 60 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "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": "Default (Auto Detect)", + "url": "rtmp://stream.shareplay.tv" + }, + { + "name": "Miami, Florida, USA", + "url": "rtmp://live-us-mia-stream.shareplay.tv" + }, + { + "name": "Chicago, Illinois, USA", + "url": "rtmp://live-us-ord-stream.shareplay.tv" + }, + { + "name": "Washington D.C., USA", + "url": "rtmp://live-us-iad-stream.shareplay.tv" + }, + { + "name": "Los Angeles, California, USA", + "url": "rtmp://live-us-lax-stream.shareplay.tv" + }, + { + "name": "Milan, Italy", + "url": "rtmp://live-it-mil-stream.shareplay.tv" + }, + { + "name": "Toronto, Canada", + "url": "rtmp://live-ca-yyz-stream.shareplay.tv" + }, + { + "name": "London, UK", + "url": "rtmp://live-uk-lhr-stream.shareplay.tv" + }, + { + "name": "Atlanta, Georgia, USA", + "url": "rtmp://live-us-atl-stream.shareplay.tv" + }, + { + "name": "Dallas, Texas, USA", + "url": "rtmp://live-us-dfw-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.dolby.io/streaming-apis/docs/using-obs", + "stream_key_link": "https://streaming.dolby.io", + "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/obs-studio/plugin_config/rtmp-services/twitch_ingests.json b/obs-studio/plugin_config/rtmp-services/twitch_ingests.json new file mode 100644 index 0000000..2cb31e4 --- /dev/null +++ b/obs-studio/plugin_config/rtmp-services/twitch_ingests.json @@ -0,0 +1,625 @@ +{ + "ingests": [ + { + "_id": 0, + "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": 0 + }, + { + "_id": 1, + "availability": 1.0, + "default": false, + "name": "Asia: Japan, Tokyo (3)", + "url_template": "rtmp://tyo03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://tyo03.contribute.live-video.net/app/{stream_key}", + "priority": 1 + }, + { + "_id": 2, + "availability": 1.0, + "default": false, + "name": "Asia: Japan, Tokyo (5)", + "url_template": "rtmp://tyo05.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://tyo05.contribute.live-video.net/app/{stream_key}", + "priority": 2 + }, + { + "_id": 3, + "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": 3 + }, + { + "_id": 4, + "availability": 1.0, + "default": false, + "name": "Asia: South Korea, Seoul (3)", + "url_template": "rtmp://sel03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://sel03.contribute.live-video.net/app/{stream_key}", + "priority": 4 + }, + { + "_id": 5, + "availability": 1.0, + "default": false, + "name": "Asia: South Korea, Seoul (4)", + "url_template": "rtmp://sel04.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://sel04.contribute.live-video.net/app/{stream_key}", + "priority": 5 + }, + { + "_id": 6, + "availability": 1.0, + "default": false, + "name": "Asia: Taiwan, Taipei (3)", + "url_template": "rtmp://tpe03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://tpe03.contribute.live-video.net/app/{stream_key}", + "priority": 6 + }, + { + "_id": 7, + "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": 7 + }, + { + "_id": 8, + "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": 8 + }, + { + "_id": 9, + "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": 9 + }, + { + "_id": 10, + "availability": 1.0, + "default": false, + "name": "Asia: Thailand, Bangkok (2)", + "url_template": "rtmp://bkk02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://bkk02.contribute.live-video.net/app/{stream_key}", + "priority": 10 + }, + { + "_id": 11, + "availability": 1.0, + "default": false, + "name": "Asia: Singapore (1)", + "url_template": "rtmp://sin01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://sin01.contribute.live-video.net/app/{stream_key}", + "priority": 11 + }, + { + "_id": 12, + "availability": 1.0, + "default": false, + "name": "Asia: Indonesia, Jakarta (2)", + "url_template": "rtmp://jkt02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://jkt02.contribute.live-video.net/app/{stream_key}", + "priority": 12 + }, + { + "_id": 13, + "availability": 1.0, + "default": false, + "name": "Asia: India, Hyderabad (1)", + "url_template": "rtmp://hyd01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://hyd01.contribute.live-video.net/app/{stream_key}", + "priority": 13 + }, + { + "_id": 14, + "availability": 1.0, + "default": false, + "name": "Asia: India, Chennai (1)", + "url_template": "rtmp://maa01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://maa01.contribute.live-video.net/app/{stream_key}", + "priority": 14 + }, + { + "_id": 15, + "availability": 1.0, + "default": false, + "name": "Asia: India, New Delhi (1)", + "url_template": "rtmp://del01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://del01.contribute.live-video.net/app/{stream_key}", + "priority": 15 + }, + { + "_id": 16, + "availability": 1.0, + "default": false, + "name": "Asia: India, Bangalore (1)", + "url_template": "rtmp://blr01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://blr01.contribute.live-video.net/app/{stream_key}", + "priority": 16 + }, + { + "_id": 17, + "availability": 1.0, + "default": false, + "name": "Asia: India, Mumbai", + "url_template": "rtmp://bom01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://bom01.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": "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": 19 + }, + { + "_id": 20, + "availability": 1.0, + "default": false, + "name": "Oceania: Australia, Sydney (2)", + "url_template": "rtmp://syd02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://syd02.contribute.live-video.net/app/{stream_key}", + "priority": 20 + }, + { + "_id": 21, + "availability": 1.0, + "default": false, + "name": "Oceania: Australia, Sydney (3)", + "url_template": "rtmp://syd03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://syd03.contribute.live-video.net/app/{stream_key}", + "priority": 21 + }, + { + "_id": 22, + "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": 22 + }, + { + "_id": 23, + "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": 23 + }, + { + "_id": 24, + "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": 24 + }, + { + "_id": 25, + "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": 25 + }, + { + "_id": 26, + "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": 26 + }, + { + "_id": 27, + "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": 27 + }, + { + "_id": 28, + "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": 28 + }, + { + "_id": 29, + "availability": 1.0, + "default": false, + "name": "Europe: Czech Republic, Prague", + "url_template": "rtmp://prg03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://prg03.contribute.live-video.net/app/{stream_key}", + "priority": 29 + }, + { + "_id": 30, + "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": 30 + }, + { + "_id": 31, + "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": 31 + }, + { + "_id": 32, + "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": 32 + }, + { + "_id": 33, + "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": 33 + }, + { + "_id": 34, + "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": 34 + }, + { + "_id": 35, + "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": 35 + }, + { + "_id": 36, + "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": 36 + }, + { + "_id": 37, + "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": 37 + }, + { + "_id": 38, + "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": 38 + }, + { + "_id": 39, + "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": 39 + }, + { + "_id": 40, + "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": 40 + }, + { + "_id": 41, + "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": 41 + }, + { + "_id": 42, + "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": 42 + }, + { + "_id": 43, + "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": 43 + }, + { + "_id": 44, + "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": 44 + }, + { + "_id": 45, + "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": 45 + }, + { + "_id": 46, + "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": 46 + }, + { + "_id": 47, + "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": 47 + }, + { + "_id": 48, + "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": 48 + }, + { + "_id": 49, + "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": 49 + }, + { + "_id": 50, + "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": 50 + }, + { + "_id": 51, + "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": 51 + }, + { + "_id": 52, + "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": 52 + }, + { + "_id": 53, + "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": 53 + }, + { + "_id": 54, + "availability": 1.0, + "default": false, + "name": "US East: New York, NY (50)", + "url_template": "rtmp://jfk50.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://jfk50.contribute.live-video.net/app/{stream_key}", + "priority": 54 + }, + { + "_id": 55, + "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": 55 + }, + { + "_id": 56, + "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": 56 + }, + { + "_id": 57, + "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": 57 + }, + { + "_id": 58, + "availability": 1.0, + "default": false, + "name": "NA: Mexico, Queretaro (4)", + "url_template": "rtmp://qro04.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://qro04.contribute.live-video.net/app/{stream_key}", + "priority": 58 + }, + { + "_id": 59, + "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": 59 + }, + { + "_id": 60, + "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": 60 + }, + { + "_id": 61, + "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": 61 + }, + { + "_id": 62, + "availability": 1.0, + "default": false, + "name": "South America: Brazil, Fortaleza (1)", + "url_template": "rtmp://for01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://for01.contribute.live-video.net/app/{stream_key}", + "priority": 62 + }, + { + "_id": 63, + "availability": 1.0, + "default": false, + "name": "South America : chile, Santiago (1)", + "url_template": "rtmp://scl01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://scl01.contribute.live-video.net/app/{stream_key}", + "priority": 63 + }, + { + "_id": 64, + "availability": 1.0, + "default": false, + "name": "South America: Buenos Aires, Argentina (1)", + "url_template": "rtmp://bue01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://bue01.contribute.live-video.net/app/{stream_key}", + "priority": 64 + }, + { + "_id": 65, + "availability": 1.0, + "default": false, + "name": "South America: Brazil, Sao Paulo (5)", + "url_template": "rtmp://sao05.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://sao05.contribute.live-video.net/app/{stream_key}", + "priority": 65 + }, + { + "_id": 66, + "availability": 1.0, + "default": false, + "name": "South America: Brazil, Sao Paulo", + "url_template": "rtmp://sao03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://sao03.contribute.live-video.net/app/{stream_key}", + "priority": 66 + }, + { + "_id": 67, + "availability": 1.0, + "default": false, + "name": "South America: Brazil, Rio de Janeiro (4)", + "url_template": "rtmp://rio04.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://rio04.contribute.live-video.net/app/{stream_key}", + "priority": 67 + }, + { + "_id": 68, + "availability": 1.0, + "default": false, + "name": "South America: Brazil, Rio de Janeiro (3)", + "url_template": "rtmp://rio03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://rio03.contribute.live-video.net/app/{stream_key}", + "priority": 68 + } + ] +} diff --git a/obs-studio/profiler_data/2025-04-07 19-27-24.csv.gz b/obs-studio/profiler_data/2025-04-07 19-27-24.csv.gz new file mode 100644 index 0000000000000000000000000000000000000000..ab92780189e3dcd84e49838b0150cf749e96ed94 GIT binary patch literal 41124 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 a$Thp&8<|*etj3w&{ztZka>sL}#QQ(u?mNo> literal 0 HcmV?d00001 diff --git a/obs-studio/profiler_data/2025-04-07 20-23-11.csv.gz b/obs-studio/profiler_data/2025-04-07 20-23-11.csv.gz new file mode 100644 index 0000000000000000000000000000000000000000..0874d60e89b413e5f2f2dff36cf2bff67f639318 GIT binary patch literal 38657 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

W>7F;_6X)3UmMa=eI{s@OldD?sh- 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 HH_!YZ&cbzQ literal 0 HcmV?d00001 diff --git a/obs-studio/profiler_data/2025-04-12 21-20-31.csv.gz b/obs-studio/profiler_data/2025-04-12 21-20-31.csv.gz new file mode 100644 index 0000000000000000000000000000000000000000..cda1a2eacc7ca8eac1474632c99b55feaebdd9df GIT binary patch literal 6486 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\xca\xd1\xf3?\xa5\xdd\x19\xddH\x18\x8d\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0?\xa5/\x9a\xe2_\xec\xc3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0?\xa4z\xe1G\xae\x14{\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0)" +state_version=1 +warn_close_playlist=true +write_metadata=false + +[Qobuz] +albums_group_by1=1 +albums_group_by2=4 +albums_group_by3=0 +albums_group_by_version=1 +albums_separate_albums_by_grouping=false +artists_group_by1=1 +artists_group_by2=4 +artists_group_by3=0 +artists_group_by_version=1 +artists_separate_albums_by_grouping=false +search_group_by1=1 +search_group_by2=4 +search_group_by3=0 +search_group_by_version=1 +songs_group_by1=1 +songs_group_by2=4 +songs_group_by3=0 +songs_group_by_version=1 +songs_separate_albums_by_grouping=false +tab=artists + +[Scrobbler] +albumartist=false +enabled=false +love_button=false +offline=false +scrobble_button=false +show_error_dialog=true +sources=collection, file, cd, device, subsonic, tidal, qobuz, spotify, stream, somafm, radioparadise, unknown +strip_remastered=true +submit=0 + +[SerializedSmartPlaylists] +songs\1\data=@ByteArray(\0\0\0\0\x2\x11\0\0\0\x14\x2\0) +songs\1\name=Newest tracks +songs\1\type=1 +songs\10\data=@ByteArray(\0\0\0\0\0\x3\0\0\0\x14\x2\x1) +songs\10\name=Dynamic random mix +songs\10\type=1 +songs\2\data=@ByteArray(\0\0\0\0\0\x3\0\0\0\x32\x2\0) +songs\2\name=50 random tracks +songs\2\type=1 +songs\3\data=@ByteArray(\0\0\0\x1\x13\x4\0\0\0\x2\0\0\0\0\0\0\0\0\0\x1\0\0\x3\0\0\0\x14\0\0) +songs\3\name=Ever played +songs\3\type=1 +songs\4\data=@ByteArray(\0\0\0\x1\x13\x6\0\0\0\x2\0\0\0\0\0\0\0\0\0\x1\0\0\x3\0\0\0\x14\0\0) +songs\4\name=Never played +songs\4\type=1 +songs\5\data=@ByteArray(\0\0\0\0\x2\x15\0\0\0\x14\x2\0) +songs\5\name=Last played +songs\5\type=1 +songs\6\data=@ByteArray(\0\0\0\0\x2\x13\0\0\0\x14\x2\0) +songs\6\name=Most played +songs\6\type=1 +songs\7\data=@ByteArray(\0\0\0\0\x2\x16\0\0\0\x14\x2\0) +songs\7\name=Favourite tracks +songs\7\type=1 +songs\8\data=@ByteArray(\0\0\0\x2\x16\x5\0\0\0\x6\0?\xe0\0\0\0\0\0\0\0\0\0\0\x1\0\x14\x4\0\0\0\x2\0\0\0\0\x4\0\0\0\0\x1\0\x2\x14\0\0\0\x14\x1\0) +songs\8\name=Least favourite tracks +songs\8\type=1 +songs\9\data=@ByteArray(\0\0\0\0\x1\x1\xff\xff\xff\xff\x2\0) +songs\9\name=All tracks +songs\9\type=1 +songs\size=10 +songs_version=3 + +[SettingsDialog] +geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\x2\x16\0\0\0\x96\0\0\x5P\0\0\x3\x95\0\0\x2\x16\0\0\0\x96\0\0\x5P\0\0\x3\x95\0\0\0\0\0\0\0\0\ah\0\0\x2\x16\0\0\0\x96\0\0\x5P\0\0\x3\x95) + +[Spotify] +albums_group_by1=1 +albums_group_by2=4 +albums_group_by3=0 +albums_group_by_version=1 +albums_separate_albums_by_grouping=false +artists_group_by1=1 +artists_group_by2=4 +artists_group_by3=0 +artists_group_by_version=1 +artists_separate_albums_by_grouping=false +search_group_by1=1 +search_group_by2=4 +search_group_by3=0 +search_group_by_version=1 +songs_group_by1=1 +songs_group_by2=4 +songs_group_by3=0 +songs_group_by_version=1 +songs_separate_albums_by_grouping=false +tab=artists + +[Subsonic] +group_by1=1 +group_by2=4 +group_by3=0 +group_by_version=1 +separate_albums_by_grouping=false + +[Tidal] +albums_group_by1=1 +albums_group_by2=4 +albums_group_by3=0 +albums_group_by_version=1 +albums_separate_albums_by_grouping=false +artists_group_by1=1 +artists_group_by2=4 +artists_group_by3=0 +artists_group_by_version=1 +artists_separate_albums_by_grouping=false +search_group_by1=1 +search_group_by2=4 +search_group_by3=0 +search_group_by_version=1 +songs_group_by1=1 +songs_group_by2=4 +songs_group_by3=0 +songs_group_by_version=1 +songs_separate_albums_by_grouping=false +tab=artists