Add images and text to video with dynamic watermarking

Below is a sample video with dynamic watermark features.

The stream is encrypted for highest security. For playing it on mobile, ask for an app or app sdk. This video is displayed using our WordPress plugin annotation features. It can be customized for movement , color, size , transparency. For a watermark on your own video, get a free full version trial at

All you need to give is a JSON string describing how and what you need to overlay on your protected videos. Videos streamed on VdoCipher are protected from unauthorized downloads. Watermarking user information further cuts down on the chances of sharing a recorded video.

How to get started?

I am assuming you have uploaded your video to your VdoCipher account and are ready to embed the video either using WordPress plugin or implementing the API yourself. In both the cases, you need to pass an “annotation code” or a “json string” to tell us what and how to annotate.  Let’s see how to create this annotation json and add text to video. (A json string is a form of representing structured data in a way machine can understand.)

Here is a sample:

{'type':'image', 'url':'','alpha':'0.8', 'x':'100','y':'200'}, 
{'type':'rtext', 'text':'moving text', 'alpha':'0.8', 'color':'0xFF0000','size':'12','interval':'5000'},
{'type':'text', 'text':'static text', 'alpha':'0.5' , 'x':'10', 'y':'100', 'co    lor':'0xFF0000', 'size':'12'}

The above code adds a moving text, static text and a static image for your video.

Technically, this is a JSON array of objects, where each object describe a single annotation item. Each of these items will be described by its parameters.
Every item requires a type parameter which defines the type of watermark. The type of watermark can be either a static text, a moving text or a static image. The rest of the parameters depends on the type. Following a short description of how each of these parameters affect the display of text and image. The text after “//” denotes a comment about the parameter value.

Static text
‘type’ : ‘text’,   //do not change, this defines the type of annotation item
‘text’ : ‘the text you like to be displayed’,
‘x’ : ’10’,  //the distance from the left border of video.
‘y’: ’50’,  //the distance from the top border of video.
‘alpha’: ‘0.8’,    //the opacity of the rendered text, 0 is invisible, 1 is full opaque
‘color’:’0xFF0000′,    //the color of the text specified as hexadecimal or uint
      //Height of the text, in pixels.

Moving text
‘type’: ‘rtext’,
‘text” : ‘Enter whatever text you like to be displayed’,
‘interval’:’5000′    // the interval in milliseconds when the text changes position

‘type’ : ‘image’,
‘url’ : ‘’,     // the direct link of image
‘x’ : ’10’,
‘y’ : ‘100’


  • Note that both the name and the value of these parameters should be in quotes. This rule applies to both text as well as numbers.
  • Each parameter is to be separated by comma. There should not be a comma after the last parameter for the dynamic watermark video settings.

Final Step

Now you need to integrate the above watermark info in your actual video. Pass this json string as a post parameter when making the OTP call with key value annotate. Note that, our current v2 API requires post data to be sent as Content-Type: application/x-www-form-urlencoded  . So, there will be two different post keys: 1) clientSecretKey 2) annotate

Only if you are writing the http requests from scratch you will need to url encode the json string when appending it to the post data. Most web frameworks have inbuilt method of generatig post data. In such cases, you should ensure that data is not doubly encoded i.e. just set the json string when calling your web framework’s addPostParam() method.

Still having problems with the dynamic watermark on video code? Send us the code you are using and the output you wish to be shown to