Aitum Stream Suite

Aitum Stream Suite 1.2.4

Aitum

Member
Aitum submitted a new resource:

Aitum Stream Suite - All your streaming needs in ONE place with ease.

View attachment 118198
Customise your environments going between our live and build tabs.

Aitum Stream Suite allows you to stream to multiple services at one time combining our multi and vertical OBS plugins into an all in one package.

No need for any other multi chat, stream information or activity feed elsewhere.

Aitum Stream Suite is everything that is familiar to you.
Expand you streaming horizons today!

Read more about this resource...
 
I played with a test setup of Aitum Stream Suite a few nights ago and have since deployed it to one of my systems here. I'm also gauging the suitability for my other systems in my streaming cluster as I'm already finding uses for the sub-tools within.

Particularly, I really like the "Live Scenes" panel item. I'm curious, can you create additional user-configurable lists of scenes they can select from? I do pre-flight operations to look at all my sources and having a "pre-flight scene check" list like this.

Also, are things like adding output canvases (in my case, I gutted the vertical stuff out of my setup) saved as part of a Profile? Enquiring minds want to know!

Is any of the functionality like starting one or more streams controllable via Websockets? That would be useful for my setup via Bitfocus Companion and Advanced Scene Changer as well as those who use various plugins for the Elgato Stream Deck software.

And finally, calling the ability to create multiple workspaces a "game-changer" or something that "hits it out of the ballpark" fall woefully short.

I imagine there are likely improvements waiting in the wings, but dear $DEITY, this is insane right now.

Definitely a keeper.

--Katt. =^.^=

P.S. Just sent Aitum and you in particular, @Exeldro, a few clams. I figure that's the least I could do for all you do.
 
Last edited:
Aitum updated Aitum Stream Suite with a new update entry:

Version 1.1.0

  • Add Transform dock
  • Add stats dock
  • Add vod track option
  • Add srt and rist multi track support
  • Add icons to docks
  • Add icons to fixed tabs
  • Add output timers
  • Add dock layout on creating canvas
  • Add clone canvas scene and transition cache
  • Add source type to properties dock
  • Add theme to mac build
  • Add save and restore disabled preview and lock preview
  • Add pause recording hotkeys
  • Add Brazilian Portuguese translation (lucasromanomr)
  • Add custom stream...

Read the rest of this update entry...
 
I installed Aitum on OBS, but the problem is that when I try to stream live on Instagram, there's a major issue—even though I've adjusted the settings, the preview just shows a black screen.
 
I can happily report that everything I was reporting has now been fixed!

The "Favorite Scenes" pane is such a nice QoL addition despite the fact I use Stream Decks with Bitfocus Companion for my normal operations. it allows me to have a little additional granularity when I don't see a need to create a new button in my Decks.

--Katt. =^.^=
 
I'm actually finding this plugin super super useful, however my two gripes right now are probably really simple things I am overlooking, the first is the bar that gets added to the top of the window can only be moved to the far edges of the OBS window, instead of sub-docked to other parts, and the second is the "Automatic File Splitting" option does not stay active. That is, when I click on it and hit save settings, the second I go back into those settings, its already disabled.
Upon further inspection, it only saves if the split time or split size are increased above 0, which by setting to 0, I'd assume means its unrestricted. When I set the split time to any duration, obs crashes after that point.
I am currently on the latest version, 1.1.2.
 
Two reproducible crashes with Aitum Stream Suite on Linux (ScenesDock + CEF)

Environment: OBS Studio 32.1.2 (native RPM build, not Flatpak), Nobara Linux 44, Aitum Stream Suite 1.2.0 (built from source with BUILD_OUT_OF_TREE=On against the same OBS build), Qt 6.11.1, AMD Radeon 780M / Mesa 26.1.4, Wayland/KDE.


Bug 1 — SIGSEGV in ScenesDock when switching to a specific scene collection


100% reproducible: switching to one particular scene collection (contains a game capture, a V4L2 webcam with crop/luma-key/mask/color filters, PipeWire audio input and app-audio capture) crashes OBS immediately, every time.


Ruled out as causes: source name duplicates (checked — none in this collection), a broken ALSA microphone device (fixed a separate ALSA→PipeWire issue, crash persisted identically afterward).


Stack trace (crashing thread):
#0 QMetaObject::cast(QObject*) const (aitum-stream-suite.so)
#1 ScenesDock::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (aitum-stream-suite.so)
#2 QMetaMethodInvoker::invokeImpl(...) (libQt6Core.so.6)
#3 QMetaObject::invokeMethodImpl(...) (libQt6Core.so.6)
#4 QMetaObject::invokeMethod<void, QMetaMethodArgument>(...) (aitum-stream-suite.so)
#5 operator() (aitum-stream-suite.so)
#6 QObject::event(QEvent*) (libQt6Core.so.6)
#7 QApplicationPrivate::notify_helper(...) (libQt6Widgets.so.6)

Looks like a queued QMetaObject::invokeMethod firing on a ScenesDock (or something it references) after it's already been destroyed during the scene-collection switch — confirmed identical (same binary offsets) across three separate crash attempts.


Bug 2 — SIGTRAP / CEF fatal error when going Live with the Vertical canvas


Separate crash, also 100% reproducible: switching from the "Build" tab to "Live" (to start the vertical canvas output) crashes OBS with a CEF fatal error, even with no Browser Source added by me anywhere in the scene.


Log line right before the crash:
[FATAL:cef/libcef_dll/ctocpp/task_ctocpp.cc:37] CefTask_0_CToCpp called with invalid version -1

Stack trace (crashing thread):

#0 logging::LogMessage::HandleFatal(...) (libcef.so)
#1 logging::LogMessage::Flush() (libcef.so)
#2 logging::LogMessageFatal::~LogMessageFatal() (libcef.so)
#3 CefTask_0_CToCpp::CefTask_0_CToCpp() (libcef.so)
#4 CefCToCppRefCounted<...>::Wrap(...) (libcef.so)
#5 cef_post_task (libcef.so)
#6 QueueCEFTask(std::function<void()>) (obs-browser.so)
#7 QCefWidgetInternal::Resize() (obs-browser.so)
#8 QWidget::event(QEvent*) (libQt6Widgets.so.6)

This points to Aitum's internal browser dock trying to show/resize a CEF widget before the CEF browser thread has finished initializing — consistent with repeated Failed to create cookie manager: Browser thread not initialized warnings also seen in the log at OBS startup.


Happy to provide full coredumps, debug symbols, or test further if it helps narrow these down.
 
Aitum updated Aitum Stream Suite with a new update entry:

Version 1.2.1

  • Make main canvas a dock
  • Add scenes dock
  • Add sources dock
  • Add transitions dock
  • Add Copy Paste for OBS 32.2+
  • Add undo
    • removing scene item
    • remove filter
    • scene item order in sources panel
    • transform menu
    • blending mode
  • Add FFmpeg output
  • Add option to reorder outputs
  • Add remove confirmation for canvas and output
  • Add color format, color space and color range options to custom encoder
  • Add update question dialog
  • Add logging of...

Read the rest of this update entry...
 
Thanks for the suggestion, I'll look into that. That said, I'll keep digging into the OBS/Aitum side too and will post a new report here if I find anything else.

Update: Bug 1 (ScenesDock crash) still present in 1.2.1 — and not collection-specific

Tested with 1.2.1 (rebuilt from source, tag 1.2.1). Same environment as before: OBS Studio 32.1.2 native RPM build, Nobara Linux 44, Qt 6.11.1.

Result: the crash still happens, but this time it triggered on a different scene collection switch than before (previously: my "IterGames/Into the Dead" collection; this time: switching away from a "Genral/Zoom" collection into a "Sin Título" podcast collection). The collection that crashed last time loaded fine this time.

This suggests the bug isn't tied to a specific collection's contents — it looks like a timing-dependent race condition in ScenesDock that can fire on any scene-collection switch, which is a bit more concerning since it's not consistently avoidable by staying away from one particular collection.

Updated stack trace (identical call path to before, just new offsets from the 1.2.1 rebuild):

#0 QMetaObject::cast(QObject*) const (aitum-stream-suite.so)
#1 ScenesDock::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (aitum-stream-suite.so)
#2 QMetaMethodInvoker::invokeImpl(...) (libQt6Core.so.6)
#3 QMetaObject::invokeMethodImpl(...) (libQt6Core.so.6)
#4 QMetaObject::invokeMethod<void, QMetaMethodArgument>(...) (aitum-stream-suite.so)
#5 operator() (aitum-stream-suite.so)
#6 QObject::event(QEvent*) (libQt6Core.so.6)
#7 QApplicationPrivate::notify_helper(...) (libQt6Widgets.so.6)
#8 QCoreApplication::notifyInternal2(...) (libQt6Core.so.6)
#9 QCoreApplicationPrivate::sendPostedEvents(...) (libQt6Core.so.6)
...

Same signature as the original report: a queued QMetaObject::invokeMethod targeting ScenesDock firing after something it references has been destroyed during a scene-collection switch — just apparently able to trigger on more than one specific collection.

For reference, Bug 2 (CEF/SIGTRAP crash going Live with the Vertical canvas) hasn't been retested yet on 1.2.1 — will follow up separately once I get a chance to test that path again.

Happy to share the new coredump/stack trace in full if useful, or test any debug build / patch.
 
Minor bug:
"Group" source in the "Add Source" drop-down menu doesn't have a sub-menu (where the "New..." button is supposed to be), making it impossible to create groups.
 
Majorly annoying bug:
My dock layouts keep duplicating between "Live" and "Build" depending on which was opened first after system restart. For example if "Build" was opened first — it's gonna dupe itself onto "Live". Annoying isn't it?
Upd. Did I say "after system restart"? I meant "whenever". It seems to do it whenever it wants. Or NOT do it.
Oh, do I love this software.
 

Linked Canvases​

One thing I feel is currently missing from Aitum Stream Suite is a way to link canvases together.

With multiple canvases, for example a 16:9 main canvas and a 9:16 vertical canvas, I would like to be able to switch scenes on the main canvas and have the corresponding scene automatically switch on the linked canvas.

For example:

Main Canvas<br> ├── Starting Soon<br> ├── Gameplay<br> ├── Just Chatting<br> └── Ending<br><br>Vertical Canvas<br> ├── Starting Soon<br> ├── Gameplay<br> ├── Just Chatting<br> └── Ending<br>
If the Main Canvas switches to Gameplay, the linked Vertical Canvas would automatically switch to its own Gameplay scene.

The important part is that the scenes don't have to be identical. Each canvas can have a completely different layout, while scenes with the same name represent the same "state".

I think this would be especially useful for multistreaming between platforms like Twitch and TikTok. You could have completely independent layouts for each platform, while only having to control the main canvas.

I built a workaround for this​

I actually ended up implementing this myself:

https://github.com/nicolas-meilan/aitum-obs-canvas-synq

My solution mirrors the scenes between the different canvases and uses the scene name to determine which scene should be activated on the other canvas.

This gives me a lot of freedom. I can completely redesign the vertical scenes without having to manually synchronize scene changes every time.

I also use it together with my Twitch bot:

https://github.com/nicolas-meilan/twitchBot

This allows my bot to trigger scene changes on the main canvas, while the other canvases automatically follow.

The downside is that my implementation has to rely on OBS WebSocket to monitor the scene changes and synchronize them.

That's where I think this could fit really nicely into Stream Suite itself. Since Stream Suite already manages multiple canvases, implementing the synchronization natively could be much more robust and reliable than having users rely on an external Python script and OBS WebSocket.

Something as simple as being able to define:

Main Canvas<br> ↓ linked to<br>Vertical Canvas<br>
and synchronize scenes based on their names would already solve the problem.

I think this is one of those things that becomes increasingly important as you start using multiple canvases for different platforms. The ability to have independent layouts while treating them as a single stream from a scene-management perspective would make multistreaming considerably easier.

Just wanted to share the idea since I couldn't find a native way to do this currently, and I thought the workaround might also demonstrate why having this functionality directly in Stream Suite could be useful.
 
So there is a major flaw with this after trying to install it today. It will totally mess up all of your audio sources to make them all appear and be heard on every scene. I do not use Desktop audio. I have individual audio sources for everything. With this installed All audio sources are in the audio mixer and can be heard on stream and recording.

Example: I have a Scene-Closed which is the last scene before we shut the stream down. It has no audio sources. It only has an image. However with this installed all audio sources are visible in the audio mixer and are able to be heard both in recording and stream.

My Opening scene now has the Mic available and hearable with this installed when normally it should not be.

I'm going to assume its the vertical portion of this that is causing it, since when I use Atium multistream by itself (which has its own problems with borking up connection speeds) I do not have this issue with audio sources.

This basically makes this unusable to anyone that has an advanced audio setup with different audio sources in use on different scenes.

Just to add as soon as I remove the suite from it, and just use multistream it goes back to normal correct behavior.
 
Aitum updated Aitum Stream Suite with a new update entry:

Version 1.2.4

  • Add rename hotkey to scenes dock
  • Add support for custom source icons
  • Add option to only show tab icon
  • Add group menu items
  • Fix scene order in scenes dock
  • Fix browser on first start
  • Fix moving main scenes in scenes dock
  • Fix adding audio filters
  • Fix resize maximised window
  • Fix active scene for studio mode
  • Fix selected transition when switching to extra canvas

Read the rest of this update entry...
 
The latest linux installer deb version still is broken and will not install on the latest OBS supported Ubuntu 26.04 LTS:
1790098698787.png
 
Title: [Bug] Scene order in an additional canvas is not preserved after restarting OBS (v1.2.4)

Description​

Hello,

I've encountered an issue with Aitum Stream Suite where the scene order in an additional canvas changes unexpectedly every time OBS Studio is restarted.

This issue persists in Aitum Stream Suite 1.2.4, even though this version includes fixes related to scene ordering.

I've investigated the issue and found a possible workaround involving the scene collection JSON file. I hope the findings below will help identify the cause.

Environment​

  • Aitum Stream Suite: 1.2.4
  • OBS Studio: 32.2.2
  • Operating System: Windows
  • Affected canvas: Aitum Stream Suite Canvas (1920×1080)
  • Number of scenes: 28
The default OBS main canvas is not affected.

Steps to Reproduce​

  1. Open OBS Studio with an additional canvas containing multiple scenes.
  2. Arrange the scenes in the desired order using the scene list inside the additional canvas.
  3. Close OBS Studio normally.
  4. Restart OBS Studio.
  5. Check the scene order in the additional canvas.

Expected Behavior​

The scene order should remain exactly as configured before closing OBS Studio.

Actual Behavior​

The scene order changes unexpectedly after restarting OBS Studio.

Reordering the scenes through the common "Scenes" dock provided by Aitum Stream Suite does not resolve the issue either.

The default OBS main canvas preserves its scene order correctly.

Investigation and Findings​

I exported the affected OBS scene collection as a JSON file and examined its structure.

I found that:

  1. All 28 scenes in the affected additional canvas had valid settings.order values ranging from 0 to 27, without duplicates or missing values.
  2. However, the actual positions of these scene objects within the JSON sources array did not match their settings.order values.
  3. I created a test copy of the JSON file and rearranged only the 28 scene objects belonging to the affected additional canvas so that their positions within sources matched the ascending settings.order values.
  4. The scene settings and identifiers were preserved. The test copy was imported as a separate scene collection.
  5. After switching to the modified scene collection and restarting OBS Studio, the scene order was preserved correctly.
This suggests that the scene restoration process may depend on the enumeration order of scene objects, rather than reliably restoring their saved order values.

Possible Cause​

I also examined the source code for version 1.2.4.

In src/docks/canvas-dock.cpp, the CanvasDock::LoadScenes() function appears to reorder the scene list by removing and reinserting items while iterating through the same list by index.

In particular, the loop using sceneList-&gt;takeItem(idx) and sceneList-&gt;insertItem(order, item) may be worth investigating.

Since removing and inserting items changes their positions within the list, this approach might produce incorrect ordering depending on the initial scene enumeration order.

This is only a hypothesis based on the source code and my observations, not a confirmed diagnosis.

Additional Notes​

Some scenes in the additional canvas are linked to scenes in the default OBS canvas for synchronized scene switching.

Scene switching itself works correctly. The problem appears to be limited to the order displayed in the scene list.

The JSON rearrangement described above worked in my test, but I would prefer not to rely on manually editing the scene collection JSON, especially since I frequently add and modify scenes for livestreaming.

It would be greatly appreciated if the scene ordering could be restored reliably regardless of the order of scene objects within the JSON file.

Thank you for developing and maintaining Aitum Stream Suite!
 
Back
Top