Rank: Advanced Member
Groups: Registered
Joined: 12/14/2018(UTC) Posts: 81 Was thanked: 17 time(s) in 6 post(s)
|
How could I log what a client sends to vmix via TCP API? I have a scoreboard reader that sends to vmix, but I do not know which fields are getting sent. I would want to know which GT text fields are required (name of the text field) like Clock.Text.
|
|
|
|
Rank: Advanced Member
Groups: Registered
Joined: 7/4/2021(UTC) Posts: 310 Thanks: 8 times Was thanked: 40 time(s) in 35 post(s)
|
By what mechanism is this software sending information to the API?
My understanding is that the TCP API is for requesting information from vMix and sending commands to vMix--not simply sending bare information for vMix to handle however it sees fit.
If it's using, say, the "SetText" function, then the parameters for that command would need to be set within the software sending the command.
Perhaps if you specify what software you're using, someone may be able to help you figure out what it's sending and where it's sending it, rather than this convoluted process of trying to reverse engineer what vMix is receiving.
|
|
|
|
Rank: Advanced Member
Groups: Registered
Joined: 12/14/2018(UTC) Posts: 81 Was thanked: 17 time(s) in 6 post(s)
|
I read scoreboard data via rs485 to usb with raspberry pi. I decode messages and then I send that to vmix TCP API. No problem when my raspberry pi is used. The problem is when some other similar setups are used. I can logon, set my vmix ip, port and input number. But if I do jot know which fields are sent, hence why I would want somekind of a logger. Is there a way? Or only a wireshark and debugging?
|
|
|
|
Rank: Advanced Member
Groups: Registered
Joined: 7/4/2021(UTC) Posts: 310 Thanks: 8 times Was thanked: 40 time(s) in 35 post(s)
|
Originally Posted by: gre2gor I decode messages and then I send that to vmix TCP API. You're still not saying how you're sending it to the API. Are you sending it as a Function? If so, what Function & what are the parameters of that function? As I previously stated, I'm unfamiliar with a behavior of the API where it analyzes and processes information on its own. As far as I'm aware, it accepts specific commands, which it then acts on. No more, no less. You keep focusing on trying to figure out what vMix is receiving, when it's the sending program that's in full control of that. I'll, again, suggest focusing your attention on configuring the sending programWha, rather than trying to reverse engineer what vMix is receiving. Originally Posted by: gre2gor I can logon, set my vmix ip, port and input number. Logon to what? Set what input number? By what mechanism are you sending information to the API?
|
|
|
|
Rank: Advanced Member
Groups: Registered
Joined: 12/14/2018(UTC) Posts: 81 Was thanked: 17 time(s) in 6 post(s)
|
What I need is basically a reverse engineering. That is why I would need to see what vMix is receiving. Sure, TCP API accepts a function. If I use my own scoreboard reader which sends clock in format like: Sent command to vMix: FUNCTION SetText Input=Scorebug&SelectedName=Time.Text&Value=19:17 Sent command to vMix: FUNCTION SetText Input=Scorebug&SelectedName=Time.Text&Value=19:16 Sent command to vMix: FUNCTION SetText Input=Scorebug&SelectedName=Time.Text&Value=19:15 Sent command to vMix: FUNCTION SetText Input=Scorebug&SelectedName=Time.Text&Value=19:14 Sent command to vMix: FUNCTION SetText Input=Scorebug&SelectedName=Time.Text&Value=19:13
The problem is that from the thirdparty solution I am not sure or know "SelectedName" value. It could be "Timer.Text", "timer.Text", ... whatever. That is why I would like to know if there is a way to see what is sent to vMix.
|
|
|
|
Rank: Advanced Member
Groups: Registered
Joined: 7/4/2021(UTC) Posts: 310 Thanks: 8 times Was thanked: 40 time(s) in 35 post(s)
|
Originally Posted by: gre2gor The problem is that from the thirdparty solution I am not sure or know "SelectedName" value. It could be "Timer.Text", "timer.Text", ... whatever.
Which is exactly why I've asked twice now what program you're using. As I previously stated: Originally Posted by: WaltG12 Perhaps if you specify what software you're using, someone may be able to help you figure out what it's sending and where it's sending it, rather than this convoluted process of trying to reverse engineer what vMix is receiving. If you don't know if it's using SelectedName or SelectedIndex, nor what name/index it's using, your problem is that you have a poorly configured or unconfigured program, as no decent and legitimate program is filling in those blanks on its own, unprompted, unless it's also giving you the title files to match. If this is a legitimate program, there needs to be an option somewhere in it to set those fields. So you have a problem that's best solved by figuring out how to properly configure the program, not by, as you seem compelled to keep coming back to, packet sniffing the vMix TCP API port and reverse engineering the titles. If you can't figure out how to get whatever program you're using to work properly and consistently, other people here may have experience with that program and be able to help you. But they can only do that if you actually specify which program you need help with. I have no idea why you're being so cagey about this.
|
|
|
|
Rank: Advanced Member
Groups: Registered
Joined: 12/14/2018(UTC) Posts: 81 Was thanked: 17 time(s) in 6 post(s)
|
Thank you for your responses. I believe there may have been some confusion around my original question. I fully understand that the vMix TCP API accepts specific functions, and my question was more focused on how I could troubleshoot a scenario where a third-party solution is not behaving as expected.
I'm not trying to bypass or reverse-engineer anything in an illicit way; rather, I am looking for ways to verify what vMix is actually receiving from this third-party solution when it’s unclear whether the correct parameters, like SelectedName.field, are being sent. In my case, I did successfully use Wireshark to capture the packets, and it turns out the issue was due to the third-party software sending parameters for XAML titles, not GT titles. It was sending fields like gametime instead of gametime.Text.
I’ve since built a proxy that translates the incoming data, and everything is now working as expected. I just wanted to explore if vMix had a built-in method for logging or tracking what it's receiving via the TCP API, which could be useful for debugging in similar situations. This wasn't intended to cast judgment on the programmer; it's simply about solving the issue with the tools available.
|
|
|
|
Rank: Advanced Member
Groups: Registered
Joined: 12/27/2012(UTC) Posts: 5,230 Location: Belgium Thanks: 293 times Was thanked: 956 time(s) in 791 post(s)
|
@gre2gor
Glad you solved it .
Still weird though that you had to go this route.
If i make apps that sends API calls to vMix ( or a title) either there is a setup part within or they have fixed calls. If fixed (in case of title feeds for example ) they come with a matching title ( be it xaml or gt). Legit users get then both for use on their system or details are passed on.
If only the sending app is given to send to my system for example from theirs they have no business in knowing the details of the receiving end.
WaltG12 asked you several times what the app was with no clear answer
"third-party solution is not behaving as expected" is behaving exactly as expected when used as expected ;-)
You see where i am going with this ?
|
|
|
|
Rank: Advanced Member
Groups: Registered
Joined: 12/14/2018(UTC) Posts: 81 Was thanked: 17 time(s) in 6 post(s)
|
Thanks for the follow-up. I completely understand where you're coming from, and I appreciate the points you've raised.
My original question wasn’t so much about the third-party app itself, but more about whether vMix has any kind of built-in logging feature to see what it's receiving via the TCP API. The third-party solution in this case is pretty bare-bones—it only allows me to set the IP and input number, without any detailed field configuration options. Ideally, yes, you'd expect fields to be in a config file or to match the title being used, but unfortunately, that wasn't the case here.
I’m fully aware of what a properly implemented solution looks like, and as you pointed out, the standard process involves clear setups or fixed calls with a matching title. But this situation involves a half-finished solution provided by a league, and since there is only one external unit allowed to be attached to the scoreboard, I was stuck with their app. Initially, I was using my own system (Raspberry Pi 4 decoding RS485 and sending to vMix, fully configured via a config.json file), but their solution was introduced for wider use.
It took about a month to get the fields, and even then, they didn’t work as expected. They insisted it was configured for GT titles, but as I discovered through Wireshark, the fields were being sent as "gametime" without .Text. I wasn’t trying to be vague, just trying to work through the limitations of this half-solution, and the back-and-forth emails were becoming tiresome.
I was simply looking for a way to log or trace what was being sent to vMix to help me debug, not trying to hide anything or reverse-engineer anything in an underhanded way. Thanks again for the help!
|
|
|
|
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