The main idea is to be able to natively render text overlays for timecode and statuses on separate layers (channels/outputs) based on the current status of media and playback on the main layer/channel/output. We鈥檙e starting by focusing on the FFmpeg Producer and video playback.
Example usage:
Depending on the MODE of the OSD Producer you will automatically get either...
... a preview (route) with information of the currently playing clip on 1-10 (foreground)
or
... the first frame as a freeze-frame with information of the currently loaded(bg) clip of 1-10.
The MODE flag can be set to
The text information and layout will in this first iteration not be configurable. Our suggestions are:

Where the VT-a is a user-defined label for the destination layer, TC 00:00:15:14 shows the duration of the loaded clip and 1-10 shows the destination layer.

Where the VT-a is a user-defined label for the destination layer, the TC 00:00:14:15 shows the current running TC of that clip and 1-10 shows the destination layer.
This feature also solves another great thing other than text overlay: background preview. We want to enable the opeator to have an instant preview of a clip loaded in background (cued up) to be confident that the next clip is ready to go, and the correct clip is loaded.
It would be complete if it also shows the remaining time until the clip is finished. Either configurable or next to each other. Normally the operator is not too much interessted on the running timecode but wants to know hoe long it will run.
You may also think about using an OSD producer for subtitling.
Further possible improvements / additions to OSD overlay:
I built this functionality with flash templates for 2 customers. The main thing they were looking for was name of the file, play time, remaining time and the position in the playlist. The playlist is obviously custom and not part of CasparCG.
The left side is the playlist with only a single clip in it. We have this output on monitors for audio, lighting and the producer.
I'm not sure this needs it's own producer, as it can be built into templates, however it would be helpful if templates were more self aware - ie. knew which channel and layer they are running on and get updated to changes (eg. swap). Certainly it would be nice to include samples in the main distribution.
This can be implemented in user space.
Someone had suggested allowing AMCP over WebSockets a while back. This would allow HTML templates to connect directly to CasparCG and get all the info they need. Right now implementing this as a template requires a standalone app to proxy data from CasparCG to the template. This adds complexity and another failure point.
I will probably create an OSC -> Websocket proxy.
I agree. Having a websocket endpoint in CasparCG would be very useful.
Yes, you guys sum it up exactly how we have done too.
But: please notice there's two things to this idea:
1) the ability to route the background layer for previewing on another channel.
2) the OSD idea.
1 could arguably be done clientside, if you use custom clients and have full control of the environment. However, especially for OB ad-hoc operations and running shows from the official client, it would mean a lot to have a "lookahead" channel that would show the next cued clip to the producer and to know it is correctly loaded.
2 Yes, this should be implemented in a template (html). Both the idea of websocket and the idea of having awareness of the channel in the html producer will be perfect for this application. We're not pursuing a dedicated producer anymore.
@Julusian has done a great job and implemented the background layer producer: https://github.com/nrkno/tv-automation-casparcg-server
@Julusian has done a great job and implemented the background layer producer:
Will you create a PR for this or what's the status?
/Armin
@dotarmin yes, a pr shall be coming soon.
Most helpful comment
You may also think about using an OSD producer for subtitling.
Further possible improvements / additions to OSD overlay: