glikely / obs-ptz

OBS Pan Tilt Zoom camera control plugin
GNU General Public License v2.0
143 stars 41 forks source link

Request: Support Datavideo variant of VISCA over TCP protocol #144

Open bassguy95 opened 1 year ago

bassguy95 commented 1 year ago

Using the latest update of the plugin with OBS 28.1.1 - I add my cameras and try to control them but nothing happens...

I know the IP/port settings are correct as they work fine with Companion, I'm just hoping to get the camera control actually inside OBS,

Cameras being used are DataVideo PTC-150.

As a side note, this feels like a great time to point out that a confirmation of connection to the camera(s), or an error describing the failed connection, would be fantastic. I haven't a clue if the plugin is seeing the camera at all, if the camera is seeing the plugin commands, or if it's some obscure networking or user permissions issue preventing communication altogether.

normen commented 1 year ago

Try enabling debug in the settings and open the OBS log to see if theres errors.

bassguy95 commented 1 year ago

Try enabling debug in the settings and open the OBS log to see if theres errors.

10:25:38.612: [obs-ptz] VISCA_over_TCP PTZ Device 2 connected 10:25:38.612: [obs-ptz] [visca-over-tcp/PTZ Device 2] Stale prop list: {zoom_pos,tilt_pos,pan_pos,color_hue,iris_pos,gain_pos,wb_mode,dzoom_pos,vendor_id,camera_id,defog_mode,focus_pos,power_on} 10:25:38.612: [obs-ptz] [visca-over-tcp/PTZ Device 2] --> 81:09:7e:7e:00:ff 10:25:38.612: [obs-ptz] VISCA_over_TCP PTZ Device connected 10:25:38.612: [obs-ptz] [visca-over-tcp/PTZ Device] Stale prop list: {zoom_pos,tilt_pos,pan_pos,color_hue,iris_pos,gain_pos,wb_mode,dzoom_pos,vendor_id,camera_id,defog_mode,focus_pos,power_on} 10:25:38.612: [obs-ptz] [visca-over-tcp/PTZ Device] --> 81:09:7e:7e:00:ff 10:25:38.612: [obs-ptz] VISCA_over_TCP PTZ Device 1 connected 10:25:38.612: [obs-ptz] [visca-over-tcp/PTZ Device 1] Stale prop list: {zoom_pos,tilt_pos,pan_pos,color_hue,iris_pos,gain_pos,wb_mode,dzoom_pos,vendor_id,camera_id,defog_mode,focus_pos,power_on} 10:25:38.612: [obs-ptz] [visca-over-tcp/PTZ Device 1] --> 81:09:7e:7e:00:ff 10:25:40.115: adding 512 milliseconds of audio buffering, total audio buffering is now 512 milliseconds (source: Video Capture Device) 10:25:40.115: 10:25:41.033: adding 21 milliseconds of audio buffering, total audio buffering is now 533 milliseconds (source: Video Capture Device) 10:25:41.033: 10:25:41.757: [obs-ptz] [visca-over-tcp/PTZ Device 1] timeout 10:25:41.757: [obs-ptz] [visca-over-tcp/PTZ Device 1] --> 81:09:7e:7e:00:ff 10:25:41.757: [obs-ptz] [visca-over-tcp/PTZ Device] timeout 10:25:41.757: [obs-ptz] [visca-over-tcp/PTZ Device] --> 81:09:7e:7e:00:ff 10:25:41.757: [obs-ptz] [visca-over-tcp/PTZ Device 2] timeout 10:25:41.757: [obs-ptz] [visca-over-tcp/PTZ Device 2] --> 81:09:7e:7e:00:ff 10:25:42.049: [obs-ptz] [visca-over-tcp/PTZ Device 2] timeout 10:25:42.049: [obs-ptz] [visca-over-tcp/PTZ Device 2] --> 81:09:7e:7e:00:ff 10:25:42.049: [obs-ptz] [visca-over-tcp/PTZ Device] timeout 10:25:42.049: [obs-ptz] [visca-over-tcp/PTZ Device] --> 81:09:7e:7e:00:ff 10:25:42.049: [obs-ptz] [visca-over-tcp/PTZ Device 1] timeout 10:25:42.049: [obs-ptz] [visca-over-tcp/PTZ Device 1] --> 81:09:7e:7e:00:ff 10:25:42.147: [obs-ptz] [visca-over-tcp/PTZ Device 1] timeout 10:25:42.147: [obs-ptz] [visca-over-tcp/PTZ Device 1] --> 81:09:7e:7e:00:ff 10:25:42.147: [obs-ptz] [visca-over-tcp/PTZ Device] timeout 10:25:42.147: [obs-ptz] [visca-over-tcp/PTZ Device] --> 81:09:7e:7e:00:ff 10:25:42.147: [obs-ptz] [visca-over-tcp/PTZ Device 2] timeout 10:25:42.147: [obs-ptz] [visca-over-tcp/PTZ Device 2] --> 81:09:7e:7e:00:ff

is "81:09:7e:7e:00:ff" supposed to be the camera MAC? Because that's not even close to my camera's MACs.

normen commented 1 year ago

No, thats a VISCA command.

normen commented 1 year ago

Are you sure your camera uses VISCA over TCP? Theres also VISCA over UDP.

bassguy95 commented 1 year ago

No, thats a VISCA command.

I admit I’m not very knowledgeable about this side of things.

Are you sure your camera uses VISCA over TCP? Theres also VISCA over UDP.

Yes, I am sure. I already got this VISCA over TCP working with an app called Companion. That works fine, but it needs another window open or tablet use, which is great, but I also want control in OBS for some cases.

With Companion it was as easy as setting the IP of the camera and selecting the port I want to use.

glikely commented 1 year ago

The plugin appears to be connecting to the TCP port on the camera, but it is not getting any responses, and the connection gets closed immediately. Either something isn't configured right, or the plugin isn't speaking quite the right VISCA dialect for the DataVideo camera.

Do you know how to use Wireshark? If you could get a trace of the TCP messages between Companion and the camera then it would help debug. Also, please attach a full copy of your OBS log file so that I can see the initialisation messages.

I like the suggestion of having visible connection status in the plugin. Please feel free to file a separate issue requesting that feature so that I don't lose track of it.

bassguy95 commented 1 year ago

Do you know how to use Wireshark? If you could get a trace of the TCP messages between Companion and the camera then it would help debug. Also, please attach a full copy of your OBS log file so that I can see the initialisation messages.

I'm working within a public school district and I don't think our network admin will take too kindly to me sniffing around with Wireshark, but I can ask.

If it helps at all, Companion is another open source project designed to allow tablet emulation of the streamdeck as well as some interconnectivity options.

Incidentally I also found this plugin while searching for the official DataVideo documentation as I know I've seen it before.

I will update when I get a response from my network admin about allowing the use of Wireshark

2023-03-01 08-22-11.txt

glikely commented 1 year ago

Go into the settings dialog and click the 'Write to OBS Log' button at the bottom of the configuration page and then attach the OBS log file. I'd like to see the configuration used.

bassguy95 commented 1 year ago

My apologies!

2023-03-01 09-16-38.txt

This ought to contain what you need down at the bottom! Also super appreciate the help on this!

glikely commented 1 year ago

After some digging, it appears that Datavideo implements a variant of the VISCA protocol that isn't the same as other cameras. Datavideo appears to require the length of the packet to be pre-pended to the VISCA command which is not supported by obs-ptz yet. I've changed this issue to a feature request to add in the Datavideo variant

For reference: https://github.com/bitfocus/companion-module-datavideo-visca/blob/f90534679338bab41021add517d0219e71d5a395/index.js#L1305-L1316

bassguy95 commented 1 year ago

Thanks for the response! I was about to send over a copy of their actual implementation:

DataVideo PTZ VISCA Commands Rev 2.3

PTC Series VISCA Commands

Hopefully that helps, I wish I could be of more help as my coding skills are about the same level of a 5th grader these days haha.