Using Scripting to Control Timed Actions in vMix

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
hello everyone welcome back to streaming alchemy i'm john mahoney and on today's show we're going to be looking at ways to use scripting to basically control timed actions inside of vmix so before we get to that i want to thank everybody for joining and please welcome you if you have any comments any questions any feedback just put them in the comments below also we would definitely like if you want to call in we have a website you can just connect to give us a call join us on air and we can have a conversation together here so with that uh let's get started here so when i started this out i wanted to figure out a way that we could demonstrate using some of the scripting capabilities in gmx to actually drive automation on its own and the model we came up with was really something that in its simplest form would let you switch between different input sources and uh also forward or go forward or backwards in a slide deck so it's it's fairly basic but for illustrative purposes i think it can work pretty well so let me just show you what that would look like here on my vmix screen so i just have a button here on a stream deck so i'm gonna play one button press one button and hold my hands up so if i press this button you can see now that we actually have a set of events taking place that are automating the output from vmix so right now you can see it's moving through slides everything that large windows all slide based and it will i believe now zoom into the slide it can go back then it can zoom in to uh change slides and zoom into the video again and that's sort of where it ends but this was designed around using two tools one a recorder basically a way to mark every place that you want in this video to have some action take place and then the second is after all those marks are made to be able to just play this back and have all those actions that you marked triggered at the right times and play out so before we get into the details on that let me just take a quick look up at the comments and so rudy rudy says hi john and to all the other alchemists so absolutely rudy i i like that term i'll have to remember that we'll we'll sort of have that as the uh the group the group slang for all of us here so we also have james redmond james thank you very much for joining us again always great to see you here and we have tom eagle tom great to have you thank you and we have uh cese to say hello thank you for joining us here all right so let's jump in so probably the a good place to start with all of this would be looking at the xml that we're going to drive that automation with and so we have something that's that's really pretty basic here we have a root note in the xml this is just called slide times so that's was really we when we started we were thinking of just doing this with slides but expanded it so and then we have a set of elements inside this root under this root element that are trigger times like when do i want the event to take place and what is the event what action do i want to take have happen and if you remember when you saw that video we had slides we had the video playing and we had a combo box where you had the video in the upper left hand corner and the slide in a big space in the lower right hand corner and we were moving forward and backwards in the slides and that's exactly what we have set up here so if you look at this column in the middle here those are the actions and the actions are set up as an attribute of the element and the element is what's between trigger and slash trigger here uh that is the offset in time milliseconds specifically from the start of the video where this action should take place and so this basically was what drove everything after i pressed that play button it read this and then waited for certain times in the video to happen and triggered specific actions from that so let's actually look at now this is a a snapshot from earlier today but it will be useful for what we want to talk about here this is the vmix xml file this is what you get if you go to localhost colon 8088 slash api this is what you'll see if you do that when running on your vmix machine and so you can see what we have here starting at line seven so so let me highlight this here so this is the input for the video and what you'll notice in that is that there are lots of the typical elements that you'd have you know name number type title those types of elements we also have things like state we have position and duration so these three fields uh are really unique to video and the one that's important to us is this one right here called position so what position is telling us is where how far in from the beginning of the video are we so when we look at this position is the current playhead where's the playhead at in the video and duration is the full length of the video so we know this video that we played was just under 24 seconds 23.64 seconds so that was the length of the video and the position is going to tell us in milliseconds where the playhead is in that and that is the element that we are using to find out when to launch a trigger to take an action in the video so this is what we're getting from basically the vmix xml and we're doing that continuously in the loop refreshing that the other piece which i thought i would throw in because it's probably useful as well is if you look at this next input that we outlined here this is for the slides and so you can see that in the slides it has what's house current slide position and what's the duration so i believe slide position starts at zero so it would be there are five slides so zero one two three and four that zero index comes back again and it also and this is important because you may have wondered why this was in vmax it has two titles there's the main title which is what you have here so let me sort of click right here at the end this is the main title and that main title includes references to what slide number i'm currently at and there's another one called the short title and that just has the name of the input as i assigned it without any sort of embellishment or notation for what slide we're on and that's important because in order to do this automation we need to find what inputs uh the slides and the video are so we can manipulate them and so if i needed to know through name it would be a lot more complicated you could still do it but it'll be a lot more complicated finding the input if i had to sort of just parse down whatever that input the long title was to find just the thing that's called slides and that's what we're using we're using video to identify the input with the video that's playing we're using slides as the name to identify the slide input and we're using something called combo to identify the input with the layers in the combo box on that so that's how we have everything set up and so keep this in mind as we jump into the scripting for this next piece here so before we do that let me just jump back in again so uh we had john simon join us john from montreal great to have you here thank you we have uh samuel uh saying hello from norway samuel thank you for joining us i appreciate you doing this on a friday night so we have uh oh rob saffron rob's a good friend of ours from seattle rob great to have you here thank you so we have uh samurai intellectual joining us from hollywood so at the heart of it all there so uh samurai thank you very much and we have otis with a big howdy y'all from texas otis thank you so i guess the next step now is let's look at how we create that xml file using scripting so i'm going to switch over here let's see if i can go to the top so what we're going to do is we're going to use xml tools to manipulate what will essentially be a file to add all of these actions at specific times into xml so as we usually do when we start this up we go in and we load the vmix model which is important because that's going to give us everything we need to know internally about the inputs inside of vmix the next thing we're going to do is we're going to create three xml nodes that we need inside of the xml we're creating so the first one is the root node so that's basically the base node inside of xml so sort of in vmix that would be the vmix in angle brackets slash vmix at the bottom that's sort of giving you all of the things in a root that will then be captured inside of emix so for us we have a root node that we set up and then we have what we call the next offset node so any time we want to write at the offset this will be the next offset that the video player will be working again and so in order to write that as xml that's that trigger with the offset in milliseconds in it that's what we're putting there and then we have the action node which we use to manipulate the attribute inside of the element which is the offset node for setting up the action that we want to have happen and the way this will work is that we're going to press a button to trigger this script every time we want a specific action to happen and that will get recorded in this xml file so the we start by finding out the details about the video that the input that has the video we're going to be using so we start that out by just saying the name of the input is string and we're going to set up a place for keeping that as a as and as a number because that's how a lot of the functions inside vmix will work and so the thing we're doing now is here we're getting the xml model from vmix loading that in and we are finding the input with video and getting the number so that's what this block of code here is doing it we'll grab the xml node it will if it finds it it it's great uh and if it if it doesn't find it it will just output an error so this is basically asking vmix find the xml node inside vmix with the name uh video which is the video input name here and so we have that and it assigns that number now we set up the xml document next that we're going to use to write this information to so we know the input and so here we're going in and we're saying let's create a new document with the event offset times the offsets inside of this video that we're going to trigger this action against and we're saving that with this file path here uh and so this is just a xml file that i have locally on my system and so the first thing we're going to do is because if this is our first button press we may need to create this from scratch there is no file there if it isn't if i'm you know well into tracking the actions i want then this file will already exist and i just need to append to it so that's what we're doing in this next section of code right here so if you remember we talked about using try catch and then try what try will do is when you execute a command inside of try if it succeeds it will just end the try and if it fails uh it'll do whatever is in the catch segment of the try and so that's what we're doing here we're going and saying load up this file and if that fails that means the file doesn't exist so what we do then in the next piece is we actually create the file so we talked about we set up the root node and so we create that root element that we need here called slide times uh and then we're appending uh you know that root node to our event offset times which is the xml file that we opened up the xml document we opened up and then we're just turning around and saying save this so we have event offset times dot save and so we're just writing this file that we have out to the file system and what makes this so powerful is i do not have to do all the string manipulation here to make it into well-structured xml i just have a series of commands that let me append elements and attributes to this xml file that we've created and then just write it out again so this is what we're doing to all this makes it so much simpler to work with xml so now if the file existed uh we just skipped past all this if it didn't exist we now have that file created and so what we are doing as our next step here is we're just saying okay let's just grab because in case that root node uh was just uh was existing already we have to read it so we're just saying get the first child of event offset times which is that xml document we read that in and set up our root node and now we're starting to build that first element inside of this file so we're going into look at uh now we're back into the vmix xml so we're looking at saying look at in the video node what is the item named position what's the value of that remember position is the position of the playhead in milliseconds inside our video so we're pulling that in as a value and saving it to time offset that's the thing we need to store inside the element in the event offset now we are going and just doing a quick set of assignments the first is we're creating an element called trigger so that would be in the angled brackets trigger slash trigger and that tells us this in action so what is the action so we're creating another xml node called which is an attribute and this is called action and so we've created these two now we just to make assignments to them so for the uh offset the time offset we're going in and we're saying we need to assign that here and we've already saved that that's a string that we got right from vmix and then for the action we're assigning the value of next because we want in this case to just move to the next slide and that's all we're doing so in writing this now we have all these things set and we assign them now into sort of internally because i mentioned you don't have to do all the string manipulation but you have to tell the code in the code where you want to place these so you're saying okay set the name of the action node as an attribute inside of next offset node and we're going to take that now with all built with the time offset and the action we're going to append this as a child to the root node so now we've had that that root node and now we have something trigger with an action after that and we save this out so it looks a little looks a little complex but it's actually very very straightforward and it happens once i press a button and this is going to go and it's going to say what action at what time and write that out to an xml file so as long as this video is playing i can keep adding different actions that will be picked up at different times so if you actually just look at the stream deck that i have here what i can show you is that we have multiple buttons specifically for the different action so i have next and previous which is how we would control the slides going back and forth and then i also have what do i want to display as the output i want to display the combo box with both the video and the slides i just want to display the slide or i just want to display the video so this is what we did for this because it's a good example this could be something much different and we'll talk about some things in the post show that we were originally thinking of using this for but this i think for illustrator purposes that's exactly what we do we have that same script assigned where we're either assigning the action next the action previous the action combo slide or video and that's the only difference in the code that we just did and all of this will let you record this out and again that is if you look back at the xml we have here this is exactly what we did here when we set this up that's what we were writing out with that script so now let's think though about how we want to work with this to play it back so i'm going to go to this script over here and we're doing a few more things in this script because we now now need to know the inputs for all three of the video uh slides and the combo box and we need to uh then be reading this file and trigger an event so let's talk a bit about what we're doing there so we start out again reading the xml document from vmix standard practice for all of us now now because we're using more than just the video input that we use when we recorded events we now need to have spaces set up for video slides and the combo box and we're still doing we still need to know where the video offset is as a string but now because we're doing some comparison work we're going to be doing this also as an integer so when we read that playhead position we're also going to have to know uh not just use it as a string what is the actual integral value so we can do numerical comparisons and so just like we did that for the time the position coming out of the video we're doing the same thing for the offset that we're reading from the xml file that's going to trigger the actions we're setting up so we have a string which we need because that's what the way we're reading from xml and then we're going to convert that to an integer as well and so these are just going to be the variables we're using as different counters so you know what's our current trigger count to the active trigger and the trigger action so these are just things that we're doing as either counters or placeholders for us to take actions in code so here's where we get into everything so again we're going to identify like we did in the first script we're going to identify where each one of these inputs are this is for finding the video make sure we can find the video input the next one is for finding the slide input and if you remember i mentioned short title versus title in this case we are looking at the short title with just the slide input name called slides so that makes it easier to find than worrying about parsing inside of the slides plus the slide number we're on uh and we're doing that here and then we're getting again the right here at the end we're getting the input for our combo box that has both the slides and the video displayed on it so the next thing we're going to do now is we're just identifying where we were writing this xml file with all the triggers set that up as our path and we're going to load that into an xml document called trigger times so once we do this load command that entire file now is sitting in memory and we're going to be able to use that so the first thing we're going to do is we're going to create what we've talked about in the past called an xml node list and so what a node list is is an in-memory indexable object that has all the xml nodes that match some type of criteria so in this case we're just looking for all of the nodes that have all the elements inside the root node that are triggers that are xml triggers and so we create a xml node list of those triggers and from that we can get a count and this count is going to tell us how many events are we going to need to worry about when we play back all of the actions and so that's what this count.count is and we write this out here that was something we were using for reference and now we're going to start to initialize things and actually get going to start playing this video and triggering all the events so we're going to set the video offset initially out the very where we track that playhead position we're just going to set that to zero and we're going to do things to reset all of these inputs so we're going to restart the slide number which brings the slides back to slide one we're going to reset the position number of the video input so that brings the playhead back to the beginning and then we're going to actually do a play of the video which will kick off this video plane and triggering the events and you notice we just put a sleep in there we found that if you didn't these things would not necessarily finish before the rest of the code starts runs so there could be occasions where it would sort of run on top of itself so we put the sleeps in there as extra i hate doing that from a coding point of view but there is no way really to know you know unless i sort of looped and read them to find if it went back to zero for the positions on these things but this was just an easier way to guarantee that we had enough buffer to make sure all of those resets happen and so now with the video started we're going to start triggering the event so this video is actively playing at this point in the script so we are doing a loop with finding what's the current what's the next trigger we're going to have to launch and taking that action and we're doing this by saying there's an active trigger the next one we're reading and it goes from zero to trigger count minus one so xml node list are zero index we've talked about zero index versus one index they are zero index so that's why we're doing it from zero and trigger count minus one that will cover all of the triggers that we need to handle in this so we are what we're doing is we're taking and reading from this trigger action list uh we're taking this first uh the inner text which is the active trigger and that's our trigger time so we're actually pulling that out here and then we're taking the trigger action so at this time this is the action that i need to take one of those five possible actions so inside this for loop which is for each trigger what we now have to do is we have to wait until the video has passed the time of that trigger to say okay this trigger should fire now because before that if that trigger happens at a later time the video hasn't gotten to the point where it needs to trigger the event so we're waiting until that the playhead is greater than or equal to the trigger time and that's basically what we're going to do in a while loop so inside this for loop we basically have this while loop which lets us wait and in this we need to keep asking vmix where is the playhead at in this video and is my currently selected trigger time uh less than that or equal to that and that's exactly what we do you have to reload the vmix xml each time in this loop when it does that that takes a snapshot and you can manipulate things in that snapshot but if you need to keep updating them you need to keep reloading that xml so we do the load xml for the vmix api and we are pulling out the video input with you know this is just belt and suspenders here making sure we're doing the right thing uh and so we now know the video input and we pull from that video input the position uh that it's at and we are converting it to an integer because i said we have to do a numerical comparison and that numerical comparison is what we're doing up here in the while loop so each time we pass through what we're doing is we're setting the up to say here's the playhead here's where i'm at wait a moment because that sleep is stops it from hammering background all the time we don't need that this is you know just uh 100 milliseconds so a tenth of a second and when we hit this end while it loops back up here and makes the test so it's basically within a hundred within 100 milliseconds of doing the test it comes here and says should i get out or not if not if it's still not there it'll keep going through the while loop and you'll see the position of the playhead move up if it is then it's going to fall out of this while loop and it's essentially going to go and do we there are different ways to do this we just have a set of if thens for what to do with different triggers so if the action which is the action we wanted to take at this time is an x then we go to the next slide if it's a previous or go to the previous slide and these are all standard vmix shortcut function calls so we're doing all this stuff for the slides and then we can also switch to the inputs so that lets us do a merge into the combo or the video or the slide input and we do whatever's there and then we loop back and wait for the next triggered event to happen so this has a as a sort of a flow here is is very simple but this is something with all of these you know actions you could have any code in here that you want it and create any sets of actions even very complex ones we just did simple things to sort of show how that would work off but this is now going to loop through until all of the trigger actions have completed its for loop has gone through the full count of triggers and then it's just going to end the script and the script will fall out so this will let this play out fully so i think you know as we as we went through this there's a couple of a couple of key points is first you don't want to create and manage the xml as strings you really want to use these xml functions in here because it will make your life so much easier setting this up also against the video was just a shortcut way of doing things which basically are going against some type of timer that is running in the background so when you think about this don't limit your thinking to just linking actions to a particular video this can be much more general than that and the other thing is that when we we do all this stuff you can get just get to manipulate the xml in code and then just write it out as a file and then it saves it as a text based xml file and what makes that great is if you wanted to do something where you wanted to tweak something a little bit you can just go in there into the code and say okay i'm going to move that time up a little bit it just it came in late and let me actually show you when we create this file exactly how this would work we have this over here and with the stream deck and so all we're doing let me sort of move this over here pop this up uh what i'm going to do is i'm going to delete this this file this is the file that we're using sa slide times i'm going to delete that so now we don't have any file there anymore and so if i go back in to vmix and let me do vmix and the stream deck over here so you can see the vmix interface what i'm going to do here uh let me yeah that works so i set this video up here and so what i'm going to do before i start is say i actually want this to start on the video so i'm just going to press this and so now i've added i've created the file and i've added a marker a trigger to say go into the video to start then i'm going to play this and so i give it a chance to start i'm going to say now let's switch to the combo box and what i'd like to do that combo box is a slide so we're going to go to the next slide now we're going to go to the next slide now we're going to wait again and go to the next slide now i want to go to the slide that's there i want to jump to the previous slide i want to go to the combo box and we're done so what i've done there is i have created all of those trigger points just by pressing buttons as the video play and that's how we built this uh and so you know there's there is you know lots of different ways this could be done but this type of approach means that this is something that you could use without a lot of attention so if you had somebody that was giving a large presentation that you were recording uh you could in theory just keep pressing uh a button to put times for each of the slide changes or other types of events and then use that you know later on to create a different end recorded video for a guest for a client that may want to see that for a guest that was talking so different ways to do that but if i come back over here now and let's open this you can see this is the new xml file that i just created and you have all the the offsets here and if i am if i want to go and play this back let me see if i can we'll just hit play now and let me actually if we go let's go to the vmix screen here and i'm just going to show we'll change things around and i'll i'll make it so that it's it's not set up the way it would normally start so if i press play it now jumps in to the video and goes through all of those steps that we set up so it's it's just like we did before but with different timing and and different transitions at different places so hopefully there's some different ideas this gives to everybody uh let me jump back before we uh before we uh leave here so uh so we have uh he's been jumping in asking uh what what's cooking and he does that surprise so there is you know there is a suitcase or a a select case he's put up different ways i i just use the the if thens because we were really just doing single things there and it i thought from a clarity point of view it would be just easier for people to see if this than that but absolutely i mean what a what a do case or select case will let you do is basically say uh take and say select and what type of action and then i can then basically for each one of these actions say if the action is this it will do all these things and then break out if the action is this it will do all these things and then break out so uh g is definitely right that would if i were writing this as sort of professional code for something i would deploy that would certainly be the way i would end up doing it uh and primarily because it becomes a lot more manageable and easier to expand and in some ways its readability is is better for somebody that's comfortable with that that construct uh probably you know we could have added that here as a as another part of what we're covering to to learn something new but i i appreciate key jumping on that because that is definitely uh you know a a better technical way to do what we were doing right at the end so hopefully everybody found this interesting uh we will you know wrap this up and then go to the post show but as i always i wanted to thank everyone for taking the time to join i know there's people coming to us from different parts of the world so for some of you this is late on a friday night so i appreciate that all of you choose to spend that time with us so uh if you can't hang around for the post show i'll see you next week uh if so i'll see you in a couple of seconds take care everyone bye hello everyone welcome back to the streaming alchemy pro show here so there there was a few things when we did this where we actually started with uh a different thought but then felt it it probably would be too complicated to do in aggregate and you know involved a lot more than the code that we showed here but what we were thinking uh was to use the same basic approach to create an edl file an edit decision list so an edit decision list basically is a structured file that has all the edit points that would take place inside something like final cut premier davinci resolve and so the thinking was you could set something up where during a show when you switched the show you just had these switches set on buttons so go to cameras go to multiboxes all of those things would write out sort of times and actions that we then have another script pull at the end and write out as a well-structured udl file and save all the elements that you need so all of the different assets that would be inside the production you'd be able to to capture that and save all that we just felt that was probably too much to do in a single show and involved a lot of different moving parts but as a construct as a concept this is something you could think of applying here so say you wanted to do something where every time the presenter swaps slides you uh you just recorded that that is something you could do and then use that later on if you needed to edit this to say now i have the offsets from the beginning of every slide transition that happened during the show and this could be something where you do like when i press record that creates the file and writes that initial uh and saves an initial time marker and then everybody else after that they go off that time marker and produce a delta so you could definitely do things like that where even if you had this as a camera that was running that offset because you know there's a file there you'd be able to line that up with that so i think lots of different ways to to work with this and more than anything else i think the things that we discussed regarding manipulating xml the concept that there are roots elements and attributes and that you can manipulate them using functions and methods inside of objects and methods inside of visual basic and net and then you know use write that out at the very end again this is things that are useful very generally and uh xml will definitely be your friend uh for some of these things uh i certainly would you know like to to do some more stuff with with json as well but the point i've made in the past the thing holding me back from sort of jumping in with that is that there aren't these tools in net 2.0 which is i think where vmix uh script support cuts off to to really manipulate json the way you can xml so in my mind you know i like json more as a structured language the tools to work with xml are much better right now in vmix so uh definitely stuff that we can we can hope improves in the future i would love to see broader support for uh net inside of vmix but uh there's there's always next year's version so we'll hopefully uh see some stuff that will supercharge some of the scripting we can do so let me jump back to the comments section here so i have uh so so i hope i'm saying your name oppa yeme uh opa yemi so uh thank you for joining us glad glad you're finding this useful uh i have uh jp uh greetings from south africa uh jp i uh i am very grateful that you're taking the time to join us here and uh you know hopefully this is this is giving you something that you can start to to work with in your own productions and the things you're doing uh and i also have uh tom eagle uh mentioning that he's currently using uh vmix for video projection of the silent sky community theater uh so the video the video we were using was appropriate for the play uh so yeah i mean these are these are interesting kinds of things so if you had certain things that you needed to trigger off of like a button push this would let you push a single button and time things out where you could have them happen across a multimedia type of production where i need certain things on screens on the side i need a rear projection to change and i may need to trigger sound effects or other things so you could do these things because once you are in that script i can just do http requests and trigger actions on another thing so i could use this to trigger actions on that tricaster uh and to do those actually against this video plane so this could be something where i have multiple videos and i'm controlling another switcher or another projector or midi controls you know down uh downstream outside of vmix itself so lots of different ways you can pull these things together once you once you sort of think of it in more general terms as sort of triggers actions and those actions can be anything that you can describe uh in in vb.net so so uh let's see so samurai was asking if you cut to a camera is there a timer running on that also so the way we did this is we were using vmix's own position offset that stored in the vmix xml but there are lots of different ways that we could do this so for instance if i were to start to record my vmix production i could set a time to save that as a dynamic value and every time i hit a trigger i don't have to be doing this against the video when i hit that trigger it can read the system time compare it to that initial time and just put an offset in there so you could actually be recording offsets against more general events so if i switch to a camera i could do that same thing whenever i bring this camera up it grabs that time and i use that to record offsets to what we did on that camera uh it could also do things like iso chord the camera so if i knew this i could use this to write create a file which said iso chord that camera as long as i'm on it start that up go and record these offsets and then as soon as i switch off that camera stop the recording so i believe there are shortcuts for for those uh i'd have to verify this is the type of stuff you could do uh so but there isn't there isn't a way you could do it directly there's no sort of native timer inside of vmix from doing this video as key was pointing that out there isn't a you know there isn't a something in there but if you do the cut through a script uh you have the ability to do a lot more so always there's always some way to get you know close to what you want uh and i think you know that's that's why i think as we look at what we're hoping for in you know scripting and shortcuts for the next uh for the next version of vmix that we see some of these things added uh and you know for for all of us i think it just makes the productions we can do a lot richer so so are there any questions because i i know i've i've been talking a lot in this post show just sort of going over some things in general but uh i want to make sure if there are other questions out there that we are covering them and that uh you know this is this is addressing things that you may actually want to be doing practically right now so while i give a chance because i know questions can take a while this is you know with the stream it can be delayed a bit uh we should be we should be on uh we we should be on for next week we're expecting to do a show the week after we're gonna be we'll be traveling so we may or may not it really depends on where we're up to uh but you know part of this part of our our trip is because we're going to be doing the initial betas for our new life to air 12 product which lets you bring in up to 12 remote guests in a single uh in a single system so uh that's something that uh we'll we'll definitely talk more about once once we we do the rollout and i'll share with with all of you guys but definitely something that is keep has been keeping us busy so uh let's see so uh samurai intellectual was asking are you in touch with the vmix guys with your suggestions uh i don't have any particular in uh i have i have shared uh a few things uh in the past this isn't something you know where i i think they know there's a lot of pens of demand for these things you could probably uh you know if you if you hit uh you know pour tim up at any point in the day you probably could rattle off the top five things that people have been asking them but uh yeah i mean it probably would make sense if i if i put this together is just a list of things that i found uh so thank you uh but i you know i do think that vmix does have uh does have a pretty good awareness but i also know they're a they're a lean company i mean there's you know there there's not a massive organization behind them so as another small company i i have a lot of sympathy for for trying to figure out what you need to prioritize and get in the product even though sometimes you know there are very good reasons for having new features in but you just can't prioritize them above other things that are more important to to being able to sell and support your community so so uh yeah so so he mentioned that i that that's a that's a good point because there's two things one of the things is when you when you make a suggestion uh people get a chance to sort of vote it up and that gives everybody in not just the you know not just the folks in vmix themselves but it gives other people in the broader vmix community the chance to sort of weigh in on their priorities for things so er you know to to gee's point if you you do submit it it would be something you know definitely to submit through the uh through the forums and the you know because they do have a features request section and people can can upvote it and you know you sort of can solicit that if you're in other groups i know people have posted things as suggestions and then uh asked people uh to to upvote that to see if they can get it to the level where you know martin and the team there at vmix would would say yeah there's there's enough of a demand that will focus resources there so so yeah and and you know the more detail you can put in there the better uh the vmix guys are very responsible let's you just mentioned that the more you know the how and the why you'd want something definitely uh definitely would help because it contextualizes it uh and you know it means that for all of us it means that we've thought through the real use case and how this would apply so so let's see so summer i just asked he says is my background as a td or a switcher it actually is neither so so my background is actually as a programmer and i have been part of the new york city startup scene for probably the last 30 plus years 35 years so i started multiple companies and i mostly focused on the financial space and so did a lot of things around information processing and doing information analysis and from there there was a lot of math involved in that but i always used to do some marketing using video and what i decided was i wanted to move into a space i really loved uh which is you know everything around video something that's always been close to my heart so in this next company i started neural net which we started about 10 years ago i decided to just go all into video and was i don't really program much anymore uh the there are there are much younger much smarter people in the company that do that now but what i focus more on is sort of product design and the user experience the workflow how people would want to interact with the product so i i tend to think more in the context of things people want to achieve and so that's why actually doing scripting is fun it sort of reconnects me with with code again and uh oh so let me i just started oprah yemi just put something up so that this is one of those uh what's the best uh there is no best i you know i'll i'll just i'll just start right there i think each production tool has advantages uh and you know they also all have disadvantages so we use vmix we use tricaster uh those are the two that you know for producing the show those are the two that we we definitely use all the time uh we also use obs obs drives all the signage that we have inside uh the the set when we when we do things with with signage and it's also sort of a good auxiliary tool uh we don't use wirecast but the design of wirecast is excellent for people that are less experienced and that really just need to have a simple way to uh switch between sources so it works good in the volunteer space whether it's yeah people that are doing things for for charities for religious organizations that have large volunteer groups that will actually run the production so they can definitely benefit the probably the two most robust options out there would be the tricaster and vmix vmix is far more technically flexible i can do things in vmix that i couldn't begin to do in the tricaster because i have access to things like scripting but the tricaster is much easier to use if you have people that crew your productions where they sit down and they have a physical switcher you know a control surface to do the physical switching and everything is sort of laid out in pre-configured blocks that way i can sit anybody down there sort of do a quick walk through and they can do that i could emulate that in vmix but as a general rule vmix tends to be something that works excellently for personal switching where i have everything set up exactly the way i want to use it uh and you know it's i know where it all is and that's really all that matters because i'm not going to have somebody in here next tuesday switching my show and then somebody the following week that's different switching the show it's something i would typically run so uh this is a uh this is one of those things where you you have to really play with them take time today uh and make sure you you know what's going on so uh summer i was asking uh how many people are involved in the production so we have myself onset and i have two other people one is doing switching and that's uh that's done on the tricaster so everything that's sort of going out the stream uh i have a second person who's doing all of the social media and the lower thirds so that's all being handled on vmix and using vmix and vmix social to do that so uh so that's how how we set we we set up here and operate it can be run by sort of one person over there and myself here uh if i had to do this all myself and talk it would depend on the subject matter uh if i had to get this down to a solo production uh it can be difficult where you're trying to think about something in more depth like when i'm going through code uh and then think about switching or tracking what people are saying in the comments that so it's i think it's still a small production but you know it's something where we're sort of going from what we knew best when we started which was tricaster we've expanded with vmix and that's we're really happy with with both of those uh and it's funny because people have asked me they said you know if i could pick one like and this was all i could use going forward uh what would it that pick be and as a personal choice i would pick vmix and i know it sounds funny uh because i really do love the tricaster but vmix as software means that i can keep upping my hardware and they help keep doing updates for the software so i know i have better hardware to run it on and i can get a uh better software over the years as i continue working with them with the tricaster they continually evolve harder and softer but you sort of buy in at any given point to a snapshot of that so you you get the hardware and they'll continue to upgrade the software for that version of hardware that you have and so when they come out with new capabilities you wouldn't necessarily expect to get those in older hardware that would go into the new hardware so that's sort of giving a a personal balance uh between the two and why i would do that and opa yemi uh asked another important point says why do you still use obs when you have vmix well the first thing is you know in vmix you know we have multiple vmix licenses so we have we have three 4k licenses that we use here uh but the thing about obs is it does some things that vmix doesn't in different ways so obs is scene driven so if you want to do signage scenes working with scenes can be really nice i can just say go to cna cnbc and it can do everything i need to cut up the other thing is obs is free so uh it it has a lot of capability for a free offering it has a lot of nice features in it as well so part of working with obs is that it's the tool that sits on everybody's system because we don't need individual licenses for it and it's easy to put to use for a lot of little niche roles where it isn't worth using like dedicating a vmix license to something but for obs it would be perfect so that's really it i mean i think you know when you deal with people especially smaller companies that produce software you you want to be very conscious conscientious when it comes to respecting their licenses and what you do so you know we we have the number of licenses we need for the things we would use vmix for and everything else uh you know we we sort of take a step down from there so summer is asking about have you tested vmix in the in the cloud uh absolutely yes uh and it works exceptionally well in the cloud if you're going to use vmix in the cloud i would definitely look at uh joe dimax has central control that would make your entire life so much easier because it will let you basically tie in everything you want to do to stream decks locally driving vmix in the cloud so we've you know we have a lot of people that have been setting up our live air product and using it with vmix in the cloud for deployment uh but also i mean there is a there is a software only version of the tricaster which is a software license it's not from new tech now it's from viz rt i think it's this vector they have two versions there's that a higher end one that also works very nicely for cloud deployments uh so you know that's another thing that if you are in the tricaster universe and want to use you know something deployed at aws you could go with the vis vector line and sort of move in that same direction for both of those so joe demac central uh central control excellent uh uh excellent product uh we use it here and definitely would uh be be looking to to add that to the mix so that's how i said yeah yeah he has it already yeah i mean it's it's great price and uh great capability and joe's a great guy you need help with it you know you can get on and joe will respond so so uh so opioid is asking how does it work vmix in the cloud so it's this is more than i could probably do in a uh a a quick overview there is actually documentation that amazon provides about deployment uh vmix in the cloud so it basically you have to get your instance configured correctly and uh you then need to make sure that you can connect to it remotely uh using something like like teradici or you know parsec or you know other tools that they give you that sort of remote desktop in remote desktop is not something you're supposed to use like microsoft's remote desktop so don't use that because it'll cause all sorts of problems with vmix but this gives you uh you know so there are some options there and then you're using things like your stream deck uh to control it but you can also use sort of a mouse and keyboard uh you you're connected and then you know i forget the exact term uh in the cloud but basically you can set a group of instances to all work together sort of like a local cloud that you would set up there and that's where you'd set up other boxes that you needed vmix to talk to uh part of doing this would also be using something like srt if you're bringing in cameras so that's that's another thing but you know uh samurai was asking you know could we do a show on that and i i think that would probably be a very good show to do to sort of show people how to get that that's set up and all the different moving pieces it might actually be more than a single show because there are a lot of different parts both to deployment and then how you'd actually run a production but we'll definitely look into that uh we do this as a sideline so we we write code as our main uh as our main way to make a living so uh setting this up would be something we we definitely would need to to carve out enough time to do it justice but thank you for uh you know for for suggesting that because it would be it is something we definitely would consider adding as a show so yeah so a month-long series uh some of these some of the things we have planned i mean we've had things that we've had out there uh uh we uh we had the initial kernel of it you know months ago and some of them are just they're more complicated and it's just taking us longer so we don't get to do every show you know as soon as we'd love to but uh we're always looking for for show ideas and that's that is a great one so uh so opa yummy says i will really be expecting for sure so opioid thank you you know we'll we'll try to get to this in in the mix of things we do have some other things that we have scheduled uh before that but this is definitely something that uh we'll try to squeeze in before the end of the year if we can because uh you know we definitely would like to like to to cover this and given the interest i think it's a good fit with everything we talk about here so uh so jp was asking has anybody figured out how to bring google doc into vmix as opposed to a google sheet i have not yet uh i'm not sure how that would work because i i know that google doc will the underlying structure of google doc i believe is xml or an xml like structure so i do not know if it would be possible to read that and bring that in uh that would be interesting uh so i i have to research that but uh give us something else i i love the suggestions here guys this is this is excellent but uh okay i think we're probably just about ready to to wrap up here so again thanks everybody for hanging around for the pro show here uh definitely uh yeah so just just key is saying that google sheets is to be used for data source yeah so i i don't you know that's correct and we you know we we looked at a couple of things with that i just don't know yet if there would be any way to to pull that in because google does have their own api so i'd have to see if there's a way to talk with that through scripting basically.net on the vmix side and pull those in and write those out as that's where so gee that's that's where my head was at as as soon as he said that not so much that i could pull it in as a data source but that i could read it from a script that if i i knew enough about how to do that that connection uh i would be able to pull that in and if it's underlined structures xml might be some interesting things to do there so uh if if you can figure out anything please let me know because you you are truly the the the wizard of all of these things here with scripting so uh i would would uh would love to see if that that could be a possibility but uh all right everyone uh why don't we give this a a wrap for today and uh see if we can uh you know all get together again next week for another show it was great having all of you here i really appreciate you making the time so until next week take care be safe see you then
Info
Channel: The Streaming Alchemy Show
Views: 465
Rating: undefined out of 5
Keywords:
Id: Z9holvyIqc0
Channel Id: undefined
Length: 66min 3sec (3963 seconds)
Published: Sat Oct 16 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.