[ANSWERED] Play movie clip only while SPOUT not getting signal?
-
I have a Unity game that I output to my video wall via Spout. I'd like to have Isadora play a nice effect on the walls whenever the signal from Unity stops, and in particular at the beginning as a sort of elevator music waiting for the game to start outputting. Is there any way to detect if spout is getting a signal or not? Maybe an actor between spout and the projector that can tell if something is playing?
-
You might have success with "SpoutLink".
It was created for s different purpose but should do the job for you. It will receive from Unity, then output as "SpoutLink" which you can show on your video wall. If you have Isadora with Spout output running at the same time, SpoutLink will instantly switch to it when the Unity game closes.
-
A couple ways I might approach this.
- If possible have Unity send a signal to Isadora (OSC probably). Use this signal to fade in/out your Isadora video.
- Test your Spout stream. What does Isadora 'see' when the stream is stops?
- If the link from the Spout Receiver becomes in active, you can use this to sense when its off by connecting a Tap Tempo actor, it will output the framerate of the incoming video feed when connected. I sometimes connect a Pulse at 2hz to provide a reading when there is no input. Another option that works for feeds that stop (don't read as triggers anymore) is my 'Value Decay' actor, (TROIKATRONIX : ISADORA - DX – Value Decay) if you trigger a value (say 5) into it will every frame it will output a positive value, until the input stops, then it will count down (you can configure this to be pretty fast) until zero, and you can catch that moment using a Comparator actor. In the end there are a number of ways you can create this same 'resetting' of a timer type behaviour.
- If the Spout link doesn't stop triggering, but the video feed just goes black, you can use a Calc Brightness, which will output a brightness >0 when live (as long as its not a black stream) and will output 0 once fully black. So again you can test for this output value with a Comparator.
Ideally, you get a signal from Unity, so you know its status, but both methods of detecting the video state have worked for me in the past.
-
The lowest-tech way to do it is to treat the incoming frames as a "heartbeat". If you connect a Syphon/Spout Receiver actor's output to a Trigger Delay actor, it will continuously reset the timer on the Trigger Delay actor so long as it's receiving new triggers. When the video feed drops out and you aren't receiving any new frames, the Trigger Delay's timer will run out and it will send a trigger that you can use to trigger whatever actions you want to happen if the feed has dropped out.
Here's an example file where I used Isadora to simulate the external video feed and the stand-in content that gets crossfaded to. ----> video-heartbeat-detection-with-auto-crossfade-4.0.9-2025-09-15.izz
Full view of Control Panel and Actors when external feed is live:
View of Actors when external feed is live:
Full view of Control Panel and Actors when external feed is dead:
View of Actors when external feed is dead:
-
You may also find these User Actors helpful, as they essentially rely on the same concept: deadman-x27-s-user-actors.zip