Technical blog

A more subdued subheader

How ARender handles video content

  • Maxime
  • 11 Dec, 2019

ARender is able to convert (by default) a small extensible set of video formats. The list can be extended by configuration by allowing more mime types for conversion. We chose this method because video conversion is a CPU intensive task and we did not want to have our customers whom perhaps possess videos without knowing it see their CPU usage increase because of the new feature introduction.

Videos are handled as of today in ARender as any other « non native » format :  if the video is not in the format we consider good for a wide web browser support, we first convert it then retransmit it to the end user.

 

We recently tuned (will be available starting version 4.0.7) the transfers that are done between the web server and the end user browser. ARender now transfer more gracefully the chunks of video per chunk of 512KB to the browser, allowing even browsers such as Internet Explorer 11 to display the videos we output. We also provide direct chunk transfers to the end user from the rendition backend server directly using ARender 4 REST API.

Following, you can find a typical 4.0.7 transfer for a video file to the end user web browser :

TransfertVideo-ARender-4.0.7-useful-content.png

This allows the front end server of ARender to be reasonably memory loaded once users want to check videos, while remaining in the standard of video transfer HTTP headers.

 

Now that the content transfer has been tuned precisely, it opens for us the possibility for a feature we want to roadmap for a long time : being able to convert videos on the fly and transfer the chunks of video content as soon as they are available on the backend server.

This feature will land next year during the end of the 4.0.x versions of ARender as a last big feature before jumping to ARender 4.1.0. The final goal of this feature is also to be able to change on the fly the resolution or quality of the rendered video that needs conversion from the front end of ARender to allow end user to choose a correct video stream adapted to their bandwidth.