Open steveseguin opened 4 years ago
@jrotenstein Would you want to make GROUPs then? or is just ordering enough? ordering is something I could add quickly, while groups would need to be next month or two.
Changing the order would be sufficient to do this. I hadn't even thought of "grouping".
Yeah, the ability to have a query parameter like ?participantIndex=1
or something would be great, because it would mean I could create sources using those URLs to display the individual participant feeds, and then use the control room on the obs.ninja side to reorder participants and switch them around without having to change anything inside OBS itself.
Similarly, it would be great for keeping kind of a dynamic scene where participants come and go -- if you had four participants being displayed this way using those individual feeds as four sources in an OBS scene, and participant three leaves, participant four would become participant three, so there would not be a visible gap in the OBS scene.
Added some features here
&order=N, where N is the order priority you want to give a video.
I also added a way for the director to dynamically adjust the value remotely.
Hopefully this is a decent start on this feature.
This seems to now be partially possible with &slotmode
in the director view and (optionally?) &slots
on the ?scene(=n)&room=name but requires extra steps, such as setting up a &api=roomendpoint
(without password!?) on the director and then issuing a request to api.vdo.ninja/roomendpoint/layout/[{<mycustomlayoutJSON>}]
. to retrigger the set slots in the director view when new feeds get added/moved between slots.
What I would like to do is define a layout with the slots in the positions I want with a 0-indexed slot numbering in a &layout defined parameter on a &scene(=n)&room, e.g.:
https://vdo.ninja/
?scene=1&room=My2x2Grid&password=changeme
&style=4&animate=0&transparent&cover
&slots=4&layout=[{"x":0,"y":0,"w":50,"h":50,"cover":true,"slot":0},
{"x":50,"y":0,"w":50,"h":50,"cover":true,"slot":1},
{"x":0,"y":50,"w":50,"h":50,"cover":true,"slot":3},
{"x":50,"y":50,"w":50,"h":50,"cover":true,"slot":4}]
In the director view: https://vdo.ninja/?director=My2x2Grid&password=changeme&slotmode
(optionally: &api=GridTest
) I would then simply assign any available feed to a slot, and in the default &scene it should automatically show up and move to the desired slot in the position of the defined scene &layout, and only become visible in the above provided example &scene=1 when 'add to scene 1' in the director view is set.
At the moment this works for 90%, because currently I now need to issue that api request with again the full &layout json, from the example scene, to the director/scene view to force the feeds to load in and move to the correct positions, instead of automatically updating when I change slot and/or receive an extra feed. (Mixer also requires re-setting the desired layout when new feeds become available you want to assign to slots or after changing slots, similar to the api layout set request)
This would reduce the need for /mixer (which currently does not really work if you use more than 2 rooms during production, or forces you to make groups (which isn't tamper proof as stated in the docs.
Not defining a &layout on a scene but using &slots=n
instead should behave similarly in the above example when using &slotmode, where a layout is a more complex way of positioning and sizing any slots created/required.
Example: Always wanting the hosts shown together, and the guests grouped together.