Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Filtering Audio Items by Scenes #299

Unanswered
undeadbot asked this question in Q&A
Discussion options

is there a way to filter Audio items by Scene? As you can see in the screenshots, in OBS Studio there is 2 items in the audio mixer, and in the other, there is 7. I am creating a remote control app, here is my code:

`function obsStudioConnect() {

$('#obsScenes').empty();
$('#obsSources').empty();
$('#OBSConnecting').show();
$('#OBSNotConnected').hide();
obs.connect(url = 'ws://127.0.0.1:4455', obsStudioToken, identificationParams = {})
 .then(() => {
 obsStudioConnected = true;
 $('#OBSConnecting').hide();
 $('#OBSNotConnected').hide();
 $("#obs-connect-btn").removeClass("btn-info");
 $("#obs-connect-btn").addClass("btn-transparent-info");
 $("#obs-connect-btn").removeClass("spinner");
 $("#obs-connect-btn").addClass("pulse");
 $("#obs-connect-btn").prop("disabled", false);
 $("#obs-connect-btn").prop('title', 'connected to <br> OBS Studio');
 $('#obs-connect-btn').tooltip('dispose');
 $('#obs-connect-btn').tooltip();
 })
 .then(() => {
 return obs.call('GetSceneList');
 })
 .then(data => {
 var index = 0;
 var currentSceneIndex = 0;
 data.scenes.forEach(scene => {
 if (data.currentProgramSceneName == scene.sceneName) {
 currentSceneIndex = index;
 }
 $('#obsScenes').prepend(`<li class="nav-item mb-2" style="margin:0 !important;padding:0 !important;">
 <a id="scene_` + index + `" class="nav-link obstab btn btn-hover-transparent-info text-left sceneSwitch ` + ((data.currentProgramSceneName == scene.sceneName) ? 'active' : '') + `" data-scene="scene_` + index + `" data-toggle="tab" href="#sourcetab_` + index + `">
 <span class="nav-icon"></span>
 <span class="nav-text text-muted"><i class="la la-files-o"></i> ` + scene.sceneName + `</span>
 </a>
 </li>`);
 $('#obsSources').prepend(`<div id="sourcetab_` + index + `" class="tab-pane fade ` + ((data.currentProgramSceneName == scene.sceneName) ? 'active show' : '') + ` scene_` + index + ` obstabpane" role="tabpanel" aria-labelledby="scene_` + index + `">
 <div class="row">
 <div id="source_` + index + `" class="col-6 scroll undeadbot-scroll obsSourceScroll" data-height="500">
 <div class="card card-custom sources">
 <div id="sources_` + index + `" class="card-body sourcelist" style="padding-top:0 !important;">
 
 </div>
 </div>
 </div>
 <div id="device_` + index + `" class="col-6 scroll undeadbot-scroll obsDeviceScroll" data-height="500">
 <div class="card card-custom sources">
 <div id="devices_` + index + `" class="card-body devicelist" style="padding-top:0 !important;">
 
 </div>
 </div>
 </div>
 </div>
 </div>`);
 index += 1;
 });
 obs.call('GetSceneItemList', { sceneName: data.currentProgramSceneName }).then(data => {
 index = 0;
 data.sceneItems.forEach(source => {
 if (source.sceneItemEnabled) {
 $('#sources_' + currentSceneIndex).prepend(`<div class="d-flex align-items-center pt-3 pb-3">
 <div class="d-flex flex-column flex-grow-1 m-0 mx-4">
 <span class="text-muted mb-1"><i class="text-info la la-file-o"></i> ` + source.sourceName + `</span>
 </div>
 <button id="visable_` + source.sceneItemId + `" type="button" class="btn btn-icon btn-hover-transparent-info" data-resourceid='` + source.sceneItemId + `' style="min-width:38px;">
 <i class="font-size-h1 la la-eye visable` + source.sceneItemId + `"></i>
 </button>
 </div>`);
 } else {
 $('#sources_' + currentSceneIndex).prepend(`<div class="d-flex align-items-center pt-3 pb-3">
 <div class="d-flex flex-column flex-grow-1 m-0 mx-4">
 <span class="text-muted mb-1"><i class="text-info la la-file-o"></i> ` + source.sourceName + `</span>
 </div>
 <button id="visable_` + source.sceneItemId + `" type="button" class="btn btn-icon btn-hover-transparent-info" data-resourceid='` + source.sceneItemId + `' style="min-width:38px;">
 <i class="font-size-h1 la la-eye-slash visable` + source.sceneItemId + `"></i>
 </button>
 </div>`);
 }
 index += 1;
 });
 })
 obs.call('GetInputList', {}).then(data => {
 index = 0;
 data.inputs.forEach(input => {
 $('#devices_' + currentSceneIndex).append(`<div class="d-flex align-items-center">
 <div class="d-flex flex-column flex-grow-1 m-0 mx-4">
 <span class="text-muted mb-1"><i class="text-info la la-volume-up"></i> ` + input.inputName + `</span>
 </div>
 <button id="mute` + 0 + `" type="button" class="btn btn-icon btn-hover-transparent-info" data-id="` + index + `" style="min-width:38px;">
 <i class="font-size-h1 la la-volume-up mute` + index + `"></i>
 </button>
 </div>`);
 index += 1;
 });
 })
 })
 .catch(err => { // Promise convention dicates you have a catch on every chain.
 console.log(err);
 $("#obs-connect-btn").removeClass("btn-info");
 $("#obs-connect-btn").addClass("btn-transparent-info");
 $("#obs-connect-btn").removeClass("spinner");
 $("#obs-connect-btn").prop("disabled", false);
 $("#obs-connect-btn").prop('title', 'cannot connect to <br> OBS Studio <br>' + err.error);
 $('#obs-connect-btn').tooltip('dispose');
 $('#obs-connect-btn').tooltip();
 });
obs.on('SwitchScenes', data => {
 console.log(data);
});
// You must add this handler to avoid uncaught exceptions.
obs.on('error', err => {
 console.error('socket error:', err);
});

}`

In Streamlabs you can call streamlabsObsRequest('AudioService', 'getSourcesForCurrentScene', activeScene.resourceId).then(devices => { }) to get only the audio items in 'activeScene'

Screenshots:
remote control app

obs studio

You must be logged in to vote

Replies: 0 comments

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
1 participant

AltStyle によって変換されたページ (->オリジナル) /