An automation tool for OBS Studio
Go to file
WarmUpTill d9dfc1913d Fix previous scene not working for some sequences
If a duration for a transition is used that is longer than the scene
switcher check interval it could happen that the "incorrect" previous
scene could be chosen for uninterruptible scene sequences, as at the
time the sequence check was preformed the "previous scene" variable
was not yet updated as the transition was still ongoing.
2021-05-04 11:32:45 -07:00
.github/workflows CI: Fix macOS build by disabling browser build (#163) 2021-04-09 20:57:35 +02:00
CI added Flatpak paths for Ubuntu (#172) 2021-04-27 18:35:04 +02:00
cmake Add version info log (#61) 2020-11-15 20:34:11 +01:00
data/locale Add option to set transition duration (#171) 2021-05-01 00:20:25 +02:00
deps Resolve asio network crashes on macOS (#157) 2021-04-03 22:02:42 +02:00
external external/: Add OBS helper cmake files 2019-02-09 01:35:46 -06:00
forms Add option to use transition overrides for transition changes (#164) 2021-04-10 19:58:17 +02:00
src Fix previous scene not working for some sequences 2021-05-04 11:32:45 -07:00
.clang-format Add .clang-format and apply to src/ files 2020-06-08 14:58:44 -04:00
.gitignore .gitignore: Let's start by adding a normal set of ignores. 2018-12-27 01:14:37 -06:00
.gitmodules Add network tab (#149) 2021-03-24 20:51:22 +01:00
CMakeLists.txt Add network tab (#149) 2021-03-24 20:51:22 +01:00
LICENSE Added GPL2 2017-06-02 15:23:52 +02:00
README.md clean up build and build instructions (#92) 2020-12-31 15:45:08 +01:00

SceneSwitcher

An automated scene switcher for OBS Studio

More information can be found on https://obsproject.com/forum/resources/automatic-scene-switching.395/

Add the "SceneSwitcher" source directory to your obs-studio source directory under obs-studio/UI/frontend-plugins/:

cd obs-studio/UI/frontend-plugins/
git clone https://github.com/WarmUpTill/SceneSwitcher.git

Then modify the obs-studio/UI/frontend-plugins/CMakeLists.txt file and add an entry for the scene switcher: add_subdirectory(SceneSwitcher)

Compiling out of tree

Prerequisites

You'll need CMake and a working development environment for OBS Studio installed on your computer. Once you've done that, do the following:

git clone https://github.com/WarmUpTill/SceneSwitcher.git
cd SceneSwitcher
mkdir build && cd build

Windows

In cmake-gui, you'll have to set these CMake variables :

  • BUILD_OUT_OF_TREE (bool) : true
  • LIBOBS_INCLUDE_DIR (path) : location of the libobs subfolder in the source code of OBS Studio, located at [source_directory]/libobs/.
  • LIBOBS_LIB (filepath) : location of the obs.dll file (usually set to C:\Program Files\obs-studio\bin\64bit\obs.dll)

Assuming that you installed Qt via the regular Qt App way:

  • Qt5Core_DIR (path) : C:/Qt/5.10.1/msvc2017_64/lib/cmake/Qt5Core

  • Qt5Gui_DIR (path): C:/Qt/5.10.1/msvc2017_64/lib/cmake/Qt5Gui

  • Qt5Widgets_DIR (path) : C:/Qt/5.10.1/msvc2017_64/lib/cmake/Qt5Widgets

  • LIBOBS_FRONTEND_API_LIB (filepath) : location of the libobs-frontend-api.dll file, usually C:/Program Files/obs-studio/bin/64bit/obs-frontend-api.dll (usually in the same place as LIBOBS_LIB)

  • LIBOBS_FRONTEND_INCLUDE_DIR (path) : location of the obs-frontend-api subfolder in the source code of OBS Studio, located at [source_directory]/UI/obs-frontend-api.

Just keep hitting configure until all the vars are filled out. Then hit generate.

Linux

Most versions of Linux you can use cmake-gui or the command line.

For the command line:

cmake -DBUILD_OUT_OF_TREE=1 -DLIBOBS_INCLUDE_DIR="<path to the libobs/ sub-folder in obs-studio's source code>" \
-DLIBOBS_FRONTEND_INCLUDE_DIR="<path to the UI/obs-frontend-api/ sub-folder in obs-studio's source code>" \
-DLIBOBS_LIB="<path to the libobs.so file>" \
-DLIBOBS_FRONTEND_API_LIB="<path to the libobs-frontend-api.so file (usually in the same place as LIBOBS_LIB)>" \
-DCMAKE_INSTALL_PREFIX=/usr ..
make -j4
sudo make install

For cmake-gui you'll have to set the following variables:

  • BUILD_OUT_OF_TREE (bool) : true
  • LIBOBS_INCLUDE_DIR (path) : location of the libobs subfolder in the source code of OBS Studio, located at [source_directory]/libobs/.
  • LIBOBS_LIB (filepath) : location of the libobs.so file (usually CMake finds this, but if not it'll usually be in /usr/lib/libobs.so)

Assuming that you installed Qt via your system package manager, it should be found automatically. If not, then usually you'll find it in something like:

  • Qt5Core_DIR (path) : /usr/lib64/cmake/Qt5Core

  • Qt5Gui_DIR (path): /usr/lib64/cmake/Qt5Gui

  • Qt5Widgets_DIR (path) : /usr/lib64/cmake/Qt5Widgets

  • LIBOBS_FRONTEND_API_LIB (filepath) : location of the libobs-frontend-api.so file (usually in the same place as LIBOBS_LIB)

  • LIBOBS_FRONTEND_INCLUDE_DIR (path) : location of the obs-frontend-api subfolder in the source code of OBS Studio, located at [source_directory]/UI/obs-frontend-api.

Just keep hitting configure until all the vars are filled out. Then hit generate.

Then open a terminal in the build folder and type:

make -j4
sudo make install

NOTE: The Linux version of this plugin is dependent on libXScrnSaver.

OS X

In cmake-gui, you'll have to set these CMake variables :

  • BUILD_OUT_OF_TREE (bool) : true
  • LIBOBS_INCLUDE_DIR (path) : location of the libobs subfolder in the source code of OBS Studio, located at [source_directory]/libobs/.
  • LIBOBS_LIB (filepath) : location of the libobs.0.dylib file (usually in /Applications/OBS.app/Contents/Resources/bin/libobs.0.dylib)

Assuming that you installed Qt via the regular Qt App way:

  • Qt5Core_DIR (path) : Usually /Applications/Qt/5.10.1/clang_64/lib/cmake/Qt5Core

  • Qt5Widgets_DIR (path) : Usually /Applications/Qt/5.10.1/clang_64/lib/cmake/Qt5Widgets

  • Qt5MacExtras_DIR (path) : Usually /Applications/Qt/5.10.1/clang_64/lib/cmake/Qt5MacExtras

  • LIBOBS_FRONTEND_API_LIB (filepath) : location of the libobs-frontend-api.0.dylib file (usually in usually in /Applications/OBS.app/Contents/Resources/bin/libobs-frontend-api.0.dylib)

  • LIBOBS_FRONTEND_INCLUDE_DIR (path) : location of the obs-frontend-api subfolder in the source code of OBS Studio, located at [source_directory]/UI/obs-frontend-api.

Just keep hitting configure until all the vars are filled out. Then hit generate.

Open xcode (or a terminal, depending on the build type you chose), build and copy the advanced-scene-switcher.so file to /Applications/OBS.app/Contents/PlugIns

Note that you might have to adjust the library search paths using the install_name_tool if you want the plugin to run on machines other than your build machine:

install_name_tool -change @rpath/libobs-frontend-api.dylib @executable_path/../Frameworks/libobs-frontend-api.dylib UI/frontend-plugins/SceneSwitcher/advanced-scene-switcher.so
install_name_tool -change @rpath/libobs.0.dylib @executable_path/../Frameworks/libobs.0.dylib UI/frontend-plugins/SceneSwitcher/advanced-scene-switcher.so
install_name_tool -change /usr/local/opt/qt5/lib/QtWidgets.framework/Versions/5/QtWidgets @executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets UI/frontend-plugins/SceneSwitcher/advanced-scene-switcher.so
install_name_tool -change /usr/local/opt/qt5/lib/QtGui.framework/Versions/5/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui UI/frontend-plugins/SceneSwitcher/advanced-scene-switcher.so
install_name_tool -change /usr/local/opt/qt5/lib/QtCore.framework/Versions/5/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore UI/frontend-plugins/SceneSwitcher/advanced-scene-switcher.so