Triggering Wirecast Remotely using Elgato Stream Deck

Wirecast is a great tool for live streaming. At Fellowship Greenville, we use it as our encoder to stream to YouTube Live, whether it be the regular Sunday morning sermon live stream, or for special events, conferences, funerals, etc.

Lately, I’ve been working specifically on some improvements to make it easier for me to operate a live stream from our second auditorium, where we typically host funeral services and special events. Our live stream server is located in our control rooms in the main building, so when I am working tech for an event in the second auditorium, I am completely separated from the control rooms.

For regular Sunday services, that’s not a problem to be separated because we have a great team of volunteers working in both areas who stay in communication with and support each other. But for smaller services like a funeral, where it is typically only me and one other staff member running everything, it can be challenging to run a full production while I am sitting in the tech booth, far away from the control room areas where the live stream server and video switcher are located.

This is where my Stream Deck Production Controller software is going to be a great help. I have created a button set that allows me to send RossTalk commands to the Ross Carbonite switcher, change the necessary routes on the BlackMagic VideoHub router, and start/stop the Wirecast live stream.

IMG_5668.JPG-1.jpeg

So how does this work? The Stream Deck software is sending a GPI trigger request to Dashboard, where I have these buttons in my production control custom panel:

Screen Shot 2018-06-15 at 11.18.59 AM

Clicking the “Wirecast – Start Streaming” button runs a custom ogscript function that runs this AppleScript:

Screen Shot 2018-06-15 at 11.23.04 AM

And that’s it! By using the existing infrastructure I’ve designed for our production control, I’m now able to easily run the live stream but still maintain high value in what is streamed. By using the stream deck to operate not only Wirecast, but the video switcher remotely, I can change sources as needed, play videos, show cameras, etc. I even have a button that jumps to my PTZ camera control where I can recall presets that I’ve designed specifically for special events like this!

My Stream Deck software is available on Github if you would like to use it, and feel free to reach out if I can help!

Controlling BlackMagic VideoHub from Ross Dashboard, Part 2

In Part 1 of this post, I wrote about the technical side of how to use Ross Dashboard to send a TCP message to a Blackmagic VideoHub video router.

I thought I would expand on that recently and now I have made available a panel that, when set up with the IP address and port of the router, will automatically load the input (source) and output (destination) names into dropdown lists where the user can easily choose a source and destination to make a route.

Screen Shot 2018-06-14 at 2.32.25 PM

Screen Shot 2018-06-14 at 2.32.39 PM

Screen Shot 2018-06-14 at 2.32.31 PM

It’s up on my Github respository if you can benefit from it!

Remote Control of Panasonic AW-HE40 PTZ Camera through Dashboard

We have a Panasonic AW-HE40 located in each auditorium at my church to allow the control room operators to see the space. We also occasionally use them as on-screen cameras since they have HD-SDI outputs. The quality is surprising for the size of the device.

aw-he40swpj_2_1024_0

The cameras come with a fully functional webpage that allows you to control them.

Screen Shot 2018-06-12 at 9.26.40 AM

By peeking around at the code some, I was able to figure out how to send HTTP requests to change presets of the camera.

Here is my Ross Dashboard custom panel that allows our volunteers to quickly pull up presets:

 

Screen Shot 2018-06-12 at 11.41.45 AM
The panel allows the user to see the camera’s viewing angle and select a pre-defined preset. Presets can be modified within the existing web interface for the camera. A Setup tab is also available to configure the IP address of the camera you wish to control.

 

If you use my panel, you’ll still need to manage/modify the presets using the existing interface. We don’t change our presets often, so I didn’t feel the need to recreate any other functionality than recalling presets.

I’ve made this panel available on Github here if you can benefit from it: https://github.com/josephdadams/RossDashboardPanels

Getting A List of Active Users in Unity Intercom

At my church, we use Unity Intercom to expand our wired intercom system. It is very useful to have users who can be mobile and still stay in communication.

We wanted to have the ability for our directors to see who is currently logged into Unity without having to log into the server or be logged into a Unity client on a device.

After doing some digging and consulting the forums, I found out that if you go to this address:

http://unityserverIPaddr:20101/userconfig

The Unity server will return a JSON dataset of the server information including the list of users.

"users":[{"username":"josephadams", "title":"Joseph Adams", "allowedrcv":"63", "online":"0", "notify":"yes", "locksettings":"no", "lockchannels":"no", "groups":[{"groupNumber":"0", "transmit":"63", "receive":"63"}]},{"username":"technician", "title":"FG Tech User", "allowedrcv":"63", "online":"0", "notify":"yes", "locksettings":"no", "lockchannels":"no", "groups":[{"groupNumber":"0", "transmit":"9", "receive":"63"}]}]

Once you’ve parsed that JSON into objects, you just have to check if the “online” property is 0 (false) or 1 (true) and you now know who is logged in!

I added this to our director’s dashboard so now they can easily see who is available.

Screen Shot 2018-06-12 at 9.10.05 AM

It’s great when we can extend software like this! I wish more software developers exposed REST API’s for their users. Great job, Unity!

Controlling Aja Ki Pro in Ross Dashboard

I’ve had a few people ask about my custom panel in Ross Dashboard that controls Aja Ki Pro recorders using their built-in RESTful API, so I thought I would write a quick post about how that works.

AJA has done an excellent job of creating an accessible device with their API. The web browser interface is great and you can edit or control nearly every aspect of the device from there. The main reason I created the Dashboard interface was to limit that control and simplify the use for volunteers who may not want to get into the complexity of it all.

Screen Shot 2018-06-11 at 12.30.33 PM

 

Screen Shot 2018-06-11 at 12.30.46 PM
This is a screenshot of the built-in web interface of the Ki Pro.

 

Their RESTful API takes simple parameters as querystrings and returns JSON data that can be easily parsed for the results and manipulated.

For example, if you make this request:

http://kiproIPaddr/config?action=get&paramid=eParamID_TransportState

You will get a response like this, showing the current transport state of the Ki Pro:

{"paramid":"2097217802","name":"eParamID_TransportState","value":"1","value_name":"Idle"}

My panel in Dashboard just takes advantage of this API to make all of the requests to get and set the data. By using a timer function, I am also able to keep the Dashboard panel in sync with the physical state of the actual Ki Pro deck, which is helpful in case someone manually presses a transport button or otherwise makes a change.

 

Screen Shot 2018-06-11 at 12.21.30 PM
The setup tab is fairly basic, you can set the IP address of the Ki Pro and default video/audio input options. The API itself supports many more changes, so if you need to change those options more often, the panel could be modified to support that.
Screen Shot 2018-06-11 at 12.22.26 PM
Full transport control as well as custom clip names, changing slots (drives), etc. This will follow the state of the actual Ki Pro and update itself if the Ki Pro is armed or changed outside of the Dashboard panel.

 

 

Screen Shot 2018-06-11 at 12.34.35 PM
Here is a screenshot of one of the functions that gets the current transport state.

 

If you are interested in everything the Aja Ki Pro API supports, you can get a list of all available parameters by going to:

http://kiproIPaddr/descriptors

I hope this is helpful! If you would like to download my custom panel, it is available on Github: https://github.com/josephdadams/RossDashboardPanels