vMix Forums
»
General
»
General Discussion
»
Trying to get consistent screen content across virtual sets
Rank: Member
Groups: Registered
Joined: 10/6/2020(UTC) Posts: 10 Location: New York Thanks: 4 times
|
So in my scene I have 7 different virtual sets all showing "ScreenA" (left / red), and/or "ScreenB" (right / green). Throughout my show I wanna update the content across all virtual sets for ScreenA and ScreenB respectively. The content ranges from camera inputs, video inputs, browser inputs, ect. I thought I would be able to achieve this with 2 mini mixes, one assigned to ScreenA and one assigned to ScreenB, but mini mixes do not support auto play video or auto mix audio which means they cant really be used in this case. My next line of thinking is trying to get an overlay(s) to output onto blank inputs 8 and 9, that way I can toggle overlay 1 on an input to trigger it to appear on ScreenA, and output2 to appear on ScreenB. Is this possible to do? Or is there a simpler way to achieve what I am trying to do? virtualset.PNG (1,022kb) downloaded 11 time(s).
|
|
|
|
Rank: Advanced Member
Groups: Registered
Joined: 10/6/2020(UTC) Posts: 98 Was thanked: 21 time(s) in 21 post(s)
|
Hi, I think using mixes is a simpler approach than using overlays, and will be more flexible if you need to reposition things.
To get around the missing auto-play when using a mix, have you tried adding a trigger to your sources?
|
1 user thanked matkeane for this useful post.
|
|
|
Rank: Member
Groups: Registered
Joined: 10/6/2020(UTC) Posts: 10 Location: New York Thanks: 4 times
|
Hi Matkean, I just tried to drive into triggers to make this happen, but I cant seem to get them to work. From what I know about triggers they need to be on the input that is being outputted, so I tested the following triggers on all of my virtual set inputs. Mix 2 - OnTranstionIn | Play | Active | 500 | 0 | Mix 3 - OnTranstionIn | Play | Active | 500 | 0 | I also tested OnCountdownComplete instead of TranstionIn. My hope was that by transitioning from one scene virtual set to the other it would start playing the input that was active in Mix2/3, but this doesn't seem to be the case, and if this did work I would always need to transition to another angle to start playing the next clip. I've uploaded my proof of concept work so far, with some sample video clips here: https://drive.google.com...JCiWUoz/view?usp=sharing if anyone knows a better way to set up these triggers.
|
|
|
|
Rank: Advanced Member
Groups: Registered
Joined: 3/7/2012(UTC) Posts: 2,642 Location: Canada Thanks: 33 times Was thanked: 506 time(s) in 475 post(s)
|
@ HoverJackal
You need to "Play" the desired Video Input, not the "Active" Input, the mini "Mix" Inputs are not relevant in that respect. As per your google drive preset, I am not sure I fully understand your requirements, but on Input #1, try the following Triggers: OnTransitionIn | Play | 7 Bear6.mp4 OnTransitionIn | Play | 10 Triangles_1_1.mp4
Ice
|
1 user thanked IceStream for this useful post.
|
|
|
Rank: Member
Groups: Registered
Joined: 10/6/2020(UTC) Posts: 10 Location: New York Thanks: 4 times
|
The things is I do not want to just play those specific clips, I want whatever is shown as Output in Mini Mix 1 and 2 to be autoplayed when the mini mixes are transitioned.
Inputs 1-4 are all my "camera views" showing different angles of my virtual set. All of the content needs to be synced across all the "camera views" and I want use mini mixes 2 and 3 to easily transition what is on the screens. If I did
OnTransitionIn | Play | 7 Bear6.mp4 trigger
it will only play that one video, not what is active in Mix 2 or 3, and if I do this for every single clip that I plan on having which will be many it will play all X clips simultaneously and only when I transition to a different virtual set camera angle, not when I transition a mini mix.
|
|
|
|
Rank: Newbie
Groups: Registered
Joined: 10/13/2020(UTC) Posts: 2 Location: Munich Was thanked: 1 time(s) in 1 post(s)
|
Hey there! Im exactly in the same Situation. A mini Mix looks like the most elegant Solution for Virtual Studio Screens. But i also didn't find a simple way to launch Videos and enable Audio automatically yet. Also videos should be easily exchangeable. Best regards Toby
|
1 user thanked quadjojo for this useful post.
|
|
|
Rank: Member
Groups: Registered
Joined: 10/6/2020(UTC) Posts: 10 Location: New York Thanks: 4 times
|
The only other solution that seems usable is running 3 instances of vMix and using NDI output to output to each screen, but this seems so cumbersome and when I have live callers they will only be able to appear on one screen not both. There has to be a better way to implement this.
|
|
|
|
Rank: Advanced Member
Groups: Registered
Joined: 2/23/2019(UTC) Posts: 561
Thanks: 62 times Was thanked: 131 time(s) in 119 post(s)
|
Ok, I tried to put that into a script. The following script has to run constantly in the background. It checks for the active input of Mix 2. If it is a video, it will turn its audio on, play it, wait for the duration of the video and then cut Mix2 to preview of Mix2. (Warning: If you manually cut or change the active input of Mix2 while the video is playing, it will still cut to preview after the duration.) Disclaimer: I'm a Scripting Dummy, not a programmer. ;-) So, this is probably not the most elegant solution. If anyone sees a problem in the script, feedback is always welcome. Code:dim mix2active as string = ""
dim mix2newactive as string = ""
dim type as string = ""
dim duration as string = ""
do while true
dim xml as string = API.XML()
dim x as new system.xml.xmldocument
x.loadxml(xml)
' Get original active input
mix2active = (x.SelectSingleNode("//mix[@number='2']//active").InnerText)
' Check if original active input is still active
Do
dim yml as string = API.XML()
dim y as new system.xml.xmldocument
y.loadxml(yml)
' Get current active input
mix2newactive = (y.SelectSingleNode("//mix[@number='2']//active").InnerText)
sleep(50)
Loop while mix2newactive = mix2active
' Check if new active input is video
type = (x.SelectSingleNode("//input[@number='"& mix2newactive &"']/@type").Value)
if type = "Video"
API.Function("AudioOn",Input:=mix2newactive) 'Turn Audio On
API.Function("Play",Input:=mix2newactive) 'Play Video
' Get duration of video and wait
duration = (x.SelectSingleNode("//input[@number='"& mix2newactive &"']/@duration").Value)
Sleep(duration)
API.Function("Cut",Mix:=1) 'Cut to Preview of Mix 2
API.Function("AudioOff",Input:=mix2newactive) 'Turn off Audio
API.Function("Restart",Input:=mix2newactive) 'Restart Video
End If
Loop
|
1 user thanked dmwkr for this useful post.
|
|
|
Rank: Member
Groups: Registered
Joined: 10/6/2020(UTC) Posts: 10 Location: New York Thanks: 4 times
|
Thank you so much dmwkr! This seems to be exactly what I needed. I have no experience in scripting or programming but this solution seems great. I owe you a beer or a coffee :)
|
|
|
|
vMix Forums
»
General
»
General Discussion
»
Trying to get consistent screen content across virtual sets
Forum Jump
You cannot post new topics in this forum.
You cannot reply to topics in this forum.
You cannot delete your posts in this forum.
You cannot edit your posts in this forum.
You cannot create polls in this forum.
You cannot vote in polls in this forum.
Important Information:
The vMix Forums uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close