Giter VIP home page Giter VIP logo

web_remote_for_obs's People

Contributors

dvangennip avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

web_remote_for_obs's Issues

Add SourceItem transform editing ability

  • Would require some way of selecting an item from a list.
  • Edit pane UI (see GetSceneItemProperties for a range of options to edit)
  • Set and get settings from OBS

Consider modular UI and functionality

Example: Camera Control Unit elements are not useful to most users. So instead of always showing this, let users enable CCU. When enabled, use a pane below the main UI dedicated to CCU elements.

For other additions, a similar approach may work. Scene switching and audio could be considered examples of such modules. Settings panes are perhaps another, always-there instance as well.

In terms of overall UI, there must be a way to make managing and moving between them easy. Perhaps status bar has to become a fixed bar to the side for quick access. Needs visual mock-ups.

Implement audio volume meters

Depends on that functionality becoming available in obs-websocket plugin (planned for v5)

  • Create UI that incorporates actual volume next to volume fader.
  • Register to listen for input volume events
  • Show volume in UI

Audio: Visibility does not update properly

Not updating properly as it's tied to per-scene visibility, and some (audio) elements can go across scenes.

  • Needs refresh on any scene changed event
  • active state may adjust after visibility changes, so needs to be checked as well

Improve use on mobile devices

  • Enable use of Fader, Slider, Knob elements (see #11 )
  • Improve layout of status bar on smaller screens
  • Make scene preview size adjustable (see #35 )

Split classes into separate scripts

  • Adopt modern JS import and module export approach
  • Split classes into their own module files
  • Makes it easier to integrate CCU branch into main as it can be a separate module (see #15 )
  • See also #22 (would benefit from doing this)
  • Update README.md to reflect need for running a (localhost) webserver as modules bring CORS requirements

Implement Audio VU meters

I'm connecting to my OBS instance through an NGINX server and don't see anything in the VU section of the audio devices.
I tried multiple sources on different volumes but it always stays blank.

Reimplement audio filters

  • Update SourceFilter class to work with v3
  • Include default settings into SourceFilter class
  • Filters are added when this happens in OBS (event-based)
  • Filters are removed when this happens in OBS (event-based)
  • Filters are reordered when this happens in OBS (event-based)
  • Filter visibility changes when this happens in OBS (event-based)
  • Ensure filter settings are updated whenever OBS updates (no suitable events, so must do polling)

CCU: separate module/script

Not needed by default so best separated.

  • Consider CCU/preset interface for NDI cameras

Related projects and thoughts

PTZoptics python examples look really simple:

 s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, 0)
 s.connect(('192.168.100.81', 1259))
 data = bytes.fromhex('8101043F0201FF')
 s.send(data)
 s.close()

Tasks

  • build proof of concept UI
  • build working code around websocket server connection in JS because VISCA can't be used over websocket directly, so it needs a proxy

Audio: delete and create, following OBS events

Currently, audio inputs deleted or created in OBS are not handled properly, so UI goes out of sync.

  • Subscribe to events
  • Remove audio elements if destroyed
  • Add audio elements if added

Make scene preview size adjustable

  • Add a slider to this effect in the status bar?
  • Work out reasonable min and max sizes.
  • Double-click to reset to default?
  • Store this so it's available on page refresh

Also, implement reasonable defaults on smaller devices:

  • on mobile
  • on tablet

Pause updates/polling when changing SceneCollection or Profile

Leads to undefined behaviour and very likely wrong outcomes, so obs-websocket recommends halting updates until changeover is complete.

  • Listen for collection changing and changed events
  • Listen for profile changing and changed events
  • Implement variable to track state, like this.is_changing_x
  • Ensure requests and polling are halted until tracking variables are all false

Add status info on outputs

Get data from ListOutputs command.

Typical outputs:

  1. name: adv_stream, type: rtmp_output => Streaming output (may only be listed when streaming is set up)
  2. name: adv_file_output, type: ffmpeg_muxer` => Recording output (always available)
  3. name: virtualcam_output, type: virtualcam_output => Virtual camera
  4. name: NDI Preview Output, type: ndi_output => NDI output
  5. name: NDI Program Output, type: ndi_output => NDI output
  • First two outputs are already covered in status bar (using dedicated info requests and events).
  • Add virtual cam to status bar as well (using its own info requests and events).
  • NDI outputs cannot be started reliably from a remote connection, so only list their status?

Indicate stream (starting) errors in UI

Currently, failure to start a stream isn't made clear in any way.

It looks like obs-websocket v4.9.1 does not return any info from which errors can be deduced (other than knowing if we're steaming or not), so this one will have to wait until more info is available. v5 will give a outputActive response on ToggleStream request.

Audio sliders only go to 0dB max

In the webinterface you can only set a max of 0dB gain while in the advanced audio properties it goes way beyond would be great to implement this. Also if a gain is above 0 the sliders actually go out of their box while still showing 0dB as their value.

When setting Program scene directly, Preview scene should remain fixed

Current behaviour sets the old Program scene as Preview and desired scene as Program, so the old Preview assignment is lost.

Proposed implementation is to send the SetCurrentScene request wrapped in a batch:

  1. Set desired scene as Program
  2. Wait for a bit
  3. Set old Preview scene as Preview once again

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.