Enhancing the Preview function in the client

Hello everyone,

I’m an experienced Freelance CasparCG operator, template builder, and web developer. Currently, I’m using the CasparCG official client, but I find that the preview function has its limitations. Specifically, the current behavior of [F8] loads the first frame and freezes it, which is not very usable.

I would like to invite proposals from developers who can further develop the preview function to have it send every [F+number] command to the preview. In addition, I need to be able to fire any hotkey command to the preview function with a keyboard modifier [shift].

Currently, [F8] is in use for preview, but it only loads the first frame and freezes it. I would like to keep [F8] as the preview hotkey, but add the functionality to select the behavior of the preview from the options menu. This will allow me to choose whether the preview should load only the first frame and freeze it (the current behavior), or to update the preview with every command sent to it, as I requested above.

As a requirement, the code developed should be made public for others to use and build upon.

If you’re interested in taking on this project, please submit a proposal including a rough estimate of the development time, expected cost, and relevant experience. Thank you!

@edit: Thank you didi for pointing out that it is F8 instead of F7

Last time somebody changed something in the code of the client was about 3 years ago. I would see this project as not very alive any more. Many of us builds their own clients, using various programming langages. Maybe it would be an idea to think about that, or about a new official client.

By the way: I started a discussion about that also about 3 years ago here. @Andrea had started to develop something, but it seemed not to be able to become the new official client yet.

I would suggest as a work around to use invoke[F7] to bring what you need in the preview, not sure what do you miss, for me is just the “Next” command that doesn’t work.

If it is a rare event you could just switch the target to the preview channel and back, but could lead to errors by the operator.
Could be less confusing to make two entries, one for live channel and the other for preview channel, color coded so you don’t get confused.

@didikunz I’m a bit in stand for that by since I start working on physical interfaces, thanks to Node and the serial interface, as integrated part of a client

On mine [F8] triggers the preview :slight_smile: regardless of that: If you use it for templates it shows the whole in-animation. As the official client is primary made for the workflow they use at SVT it’s that what it’s used for: To quickly check for typos, before playing a template (lower third) as sometimes these have to be keyed in on the fly during the show. Usually videoclips are produced before and so they don’t need to be previewed. Videoclips, that they use for news-stories etc. are not played by CasparCG, but by some news play-out server.

Why is it important for you to have another frame for preview on videoclips? Do they start from black?

Honestly, its the most requested feature.
Being able to fire off any graphic to a preview channel, without extra time of manually switching it with the mouse.
The request for hotkeys is because I use a button box with keyboard shortcuts mapped to these buttons.

The preview, how it is now, is fairly useless, because I will mostly use a combination of video files and templates, or video files with alpha, where the first frame is usually empty.

I also get that it might be a bit of kicking a dead horse, and most moved to other clients.
I do want to point out that there have been a few nice other clients, they all had a very specific goal.
The client, even with all its flaws, is still a very good generic option.

I had a lot of help and kind words on this community, this is why i asked for the code to be public, because giving back is important for me

I understand that. I use it also for testing new templates etc. The bad thing about it is, that it is written in C++ and everybody here on the community, that is fluent in C++ is working on the servers core. No one has time to do stuff for the client.

When you use a combination of video clips an templates, how can it be, that the preview does not show you the in-animation? How do you make the templates and clips play?

Back in Flash days many of us (including me) used to build templates so, that they started the background clips by connecting to Caspar, via localhost, and sending commands to cue and play the clip. In HTML that is not so easy any more, because you need a proxy server to do so. Mostly HTML templates use WebM videos embedded into the templates for the same purpose.

But then still the template is controlling the play out of everything and you would see the intro animation when calling preview.

Typically, I work on one-time projects or annual recurring shows. My clients usually provide a basic vision for the design, which I then template using HTML. However, due to some coding limitations and constraints within HTML itself, combining video with HTML can yield impressive results.

As there is no definitive manual for working with the client, I have learned a lot by trial and error. I am pleasantly surprised by your positive response!

Although I did not anticipate integrating video into templates, it may be suitable for certain cases. However, since most videos are in 4444 ProRes format with alpha channels, I prefer to utilize Caspar with ffmpeg for handling these videos.

While I have some experience with C#, I am interested in exploring it further to meet my client’s specific needs. However, as my coding skills are limited, I welcome any assistance in this area and am willing to sponsor such development.

I use groups to command multiple items, and as you can see in my reaction, I did not expect another workflow, as this one is so obvious.

I wonder if you are interested to build your own client in html, since the development aforementioned is an html+node client.

A the moment is very very basic and only for templates, but the engine is there and should not be difficult to add few functionalities like for video clips.

But I’m pretty sure you will need to write your own html interface that suits your needs

I think you just have templates with only a play command, that play along the videoclip. On preview of groups only the template plays and not the video. If the templates have clack texts you see nothing. Maybe you can play a white or gray background behind the preview. So you could see the text and check for typos.

My workflow is good, when working with a client, that does only know how to play templates. That is often the case when it is a newsroom automation system (like Aveco Astra etc.) any clip etc. that needs to play along needs to be controlled by the template. It is also easier to handle, as you only have one line in the client and not a group.

Let me clarify things, because it seems I might have mix things up unintentionally.
When I mean preview, I do not mean the small window within the client.
I mean the setting that sets the channel for the “preview”.

Since it now only “loads”, its video, its not very usable to me. To change this to play, I can probably manage that by altering the code within the client.
but having all commands to sent to a specific channel set as preview seems like a logical choice, but might be beyond my own coding skills.

@Andrea Although a applaud the effort, I do not see this on the same level of flexibility that I need at this moment in development.

@didikunz I am very skilled in building templates, and will usually use the play, stop and next functions, and took it to new levels with invokes for advanced templates such as dynamic timers, pulling data from internal and external sources such as google sheets & csv’s.

I understood this. That is the only thing, that makes sense.

Good to hear. Then it should be easy for you to make your templates send commands to Caspar. I once wrote a simple proxy server that listens to websocket messages and send them forward to Caspar. It needs to run beside Caspar server. The code to use it is something like this:

var amcp_bridge_url = "http://127.0.0.1:9731/amcp"
var amcp_bridge_timeout = 5000
function amcp(command){
    return new Promise(function(resolve, reject){
        var xhr = new XMLHttpRequest()
        xhr.timeout = amcp_bridge_timeout
        xhr.open('POST', amcp_bridge_url)
        xhr.responseType = "text"
        xhr.send(command)
        xhr.onload = function() {
            if (xhr.status < 400)
                resolve(xhr.status, xhr.responseText)
            else
                reject(xhr.status, xhr.responseText)
        };
        xhr.onerror = function() {
            log("AMCP RX ERR:", xhr.status)
            reject(xhr.status, xhr.responseTextx)
        }
    });
}

You can send any AMCP command to it.

That is a nice way of getting around this issue, it can have some nice implementations, but I still think this is the other way around. I will definitely try it out when I have a use case for it.

Back to topic; It is a real shame that, as you say, no-one bothers to keep up the client capabilities and bugs, because it seems it is functional, but has some big limitations, and not keeping up with the competition shrinks the market every day.

This forum kickstarted my career as a graphics operator. I have done shows with caspar watched by millions of viewers, and have solid faith in its capabilities. This is my way of trying to give something back.

It’s the same with me, I am working as a freelance (template) programmer and Caspar operator full time since 2017.

I understand what you say, it’s a pity, that nobody is maintaining the client. But I am myself not able to program in C++ (VB.NET) and I also do not know somebody, that can, beside the guys working on the server core. They usually are busy keeping the server core updated an implementing new stuff there. The biggest user of the official client is SVT itself, but AFAIK there is no body looking for Caspar any more at SVT.

a bit of topic, but if you want to laugh a bit I started doing live graphics for races with “Motion” templates and “Final Cut” as playout, using the video out for both fill and key.
Wasn’t actually real time but more like fast rendering, with a little C program to retrieve timing data and edit the motion template.
Was terrible to use but did work :sweat_smile:
Then I found out about CasparCG and happily using it since 2018, many thanks to SVT and all the people behind this project

Ui ui ui. That is basic. I used Inscriber RTX (does anybody remember that?) for many years. But a five number digit price stopped me from upgrading to HD. I tried VidiGo graphics (now part of Cyron Hego) for a short time and then found CasparCG very short after @Soprani convinced his bosses at SVT to make it open source. Since then I am addicted. :smile:

1 Like

so we all are in debt with @Soprani! Thank you very much Ollie eller tack så mycket!
They do wonderful things at SVT, I just saw Melodifestivalen, incredibly awesome show!
aahh, I wish to work there one day, amazing culture, wonderful people.

jaaaa me too! I learned so much working with CasparCG

well, that was my first experience with graphics, I didn’t even know what was an xml file :dizzy_face:
The difficult part for me was to read data from the crono team and then load all the corresponding text and images (pilot, bike, flag) just by calling the position.

As usual I can’t let it go and started tinkering myself.
Edit: i am a bit further! Found out how I can alter it to suit my needs!

Also found out that I am asking for a lot of work, coding wise its not so difficult, but it is just a whole lot of files to be edited to achieve this. Ill keep you all posted and my offer still stands!

Inscriber days 8.000euro for one SD channel (dedicated card) and you must also build your own workstation (HP quadro etc) because the turn key solution cost under 15k with the card.
Thanks when I google search for media players I found Isadora,Resolume,DataVideo etc , but I stick with Caspar and made my first Live Show at 2013 since then I have used it to all my projects and Blackmagic cards also make the difference.
Now trying to switched to HTML templates(my old projects still working with FLASH thanks DIDI for “crack” ) but still prefered to work with 2.07 server , I dont like 2.3 ancychronous play and memory leak.

I’ve used Xpression in the past, but it is so expensive to own or rent, that most smaller companies can not afford to have such systems on standby.

In terms of creation of graphics, this is on a whole new level. Caspar does not pretend to be a graphics creation suite, it is merely a player in that sense. And thats OK!

That does not mean it is very powerful. To have a complete browser behind it, is very smart because it enabled good template makers to build everything custom to client specifications and wishes.
Many code pieces can be re-used and I already have a large library and base-templates to get me started.

I’ve started this to ask for playback on the preview channel, this I succeeded in!
To re-code the entire hotkey system as described above is a whole lot more work since it involves adapting 110+ files.

I will try to do it myself, but it will take me a long time, so If anyone wants to join, be sure to DM me!