In my company, we are currently looking for a solution to enrich a given video stream (which is being broadcasted via RTMP) from a remote webcam with some dynamic information, such as current date/time, special measure values which are available on a server, or the most recent entries in a database.

Basically we want to achieve a simple, dynamic on-screen display, as - for example - TV stations are using. The modified stream should then be restreamed, for example to be viewed in VLC Player or on YouTube.

So far, I came up with the following ideas:

  • Using OBS with some own scripts and plugins - that's disadvantageous because we would like to run the solution on a high-network performance server 24/7 without a GUI. Basically I'd need a fully command-line based version of OBS.

  • Using FFmpeg: I know that there are text filters available, but they are mainly static (or periodically polling a file with text) and don't allow for any design adjustments other than font, font size and color. It would be great if there was some way of overlaying a Webkit browser view onto the stream, because this would allow us to design the overlays in HTML5 and CSS and using WebSocket technology for updating the data.

  • The overlay could be captured with PhantomJS, but how should we unify it with the stream and would it be fast enough to render 30 FPS?

Are there additional (preferably open source) tools we could use? What would be the best strategy to implement this without buying expensive TV broadcasting software?

  • Look into zmq filter.
    – llogan
    Nov 19, 2016 at 18:48
  • Any more info on this? I asked a similar question recently but I'm not getting any answers sadly Jun 24, 2017 at 14:51
  • The studio version of DaVinci Resolve is $300, and includes Fusion and Python 2,3, and Lua scripting. I'm not a software engineer, and never took a programming class in school, but I managed to figure out how to get an RSS parser to update and auto-upload a daily youtube video. Mar 15, 2020 at 21:30

1 Answer 1


Have a look at CasparCG. It should be able to do what you want.

An alternative would be to create something using MLT and, say, Python, but that requires some programming, though it should be mostly assembling modules together.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.