{"id":21636,"date":"2017-11-28T13:00:06","date_gmt":"2017-11-28T13:00:06","guid":{"rendered":"http:\/\/introducing_the_complete_video_solution_for_web_and_mobile_developers"},"modified":"2025-07-20T09:14:57","modified_gmt":"2025-07-20T16:14:57","slug":"introducing_the_complete_video_solution_for_web_and_mobile_developers","status":"publish","type":"post","link":"https:\/\/cloudinary.com\/blog\/introducing_the_complete_video_solution_for_web_and_mobile_developers","title":{"rendered":"Introducing the complete video solution for web and mobile developers"},"content":{"rendered":"<div class=\"wp-block-cloudinary-markdown \"><p><a href=\"https:\/\/cloudinary.com\/video_api\">Videos<\/a> in web sites and apps are starting to catch up with images in terms of popularity and they are a constantly growing part of the media strategy for most organizations. This means bigger challenges for developers who need to handle these videos in their web sites and mobile apps. Cloudinary\u2019s mission is to solve all developer needs around image and video content management. In this blog post, we are excited to introduce Cloudinary\u2019s complete cloud-based video content management solution for developers.<\/p>\n<p>What does it include? Here are some highlights:<\/p>\n<div>\n<img loading=\"lazy\" decoding=\"async\" alt=\"upload\" src=\"https:\/\/cloudinary-res.cloudinary.com\/image\/upload\/w_100,f_auto,q_auto,dpr_auto\/blogpost_video_solution_upload.png\" width=\"100\" height=\"80\" \"Video solution - upload videos\" style=\"float: left\"\/>\n<div style=\"float: left; font-weight: 500; margin-left: 20px; margin-top: 18px; font-size: 18px; max-width: 400px; line-height: 25px;\">Video upload API and UI widget &#8211; upload your videos directly to cloud storage<\/div>\n<\/div>\n<div style=\"clear: both\"><\/div>\n<div>\n<img loading=\"lazy\" decoding=\"async\" alt=\"UI\" src=\"https:\/\/cloudinary-res.cloudinary.com\/image\/upload\/w_100,f_auto,q_auto,dpr_auto\/blogpost_video_solution_ui.png\" width=\"100\" height=\"80\" \"Video solution - manage video assets\" style=\"float: left\"\/>\n<div style=\"float: left; font-weight: 500; margin-left: 20px; margin-top: 18px; font-size: 18px; max-width: 400px; line-height: 25px;\">Programmable and interactive interface for managing video assets<\/div>\n<\/div>\n<div style=\"clear: both\"><\/div>\n<div>\n<img loading=\"lazy\" decoding=\"async\" alt=\"transcoding\" src=\"https:\/\/cloudinary-res.cloudinary.com\/image\/upload\/w_100,f_auto,q_auto,dpr_auto\/blogpost_video_solution_transcoding.png\" width=\"100\" height=\"80\" \"Video solution - transcoding videos\" style=\"float: left\"\/>\n<div style=\"float: left; font-weight: 500; margin-left: 20px; margin-top: 18px; font-size: 18px; max-width: 400px; line-height: 25px;\">Real-time video transcoding and manipulation via CDN delivery URLs<\/div>\n<\/div>\n<div style=\"clear: both\"><\/div>\n<div>\n<img loading=\"lazy\" decoding=\"async\" alt=\"video player\" src=\"https:\/\/cloudinary-res.cloudinary.com\/image\/upload\/w_100,f_auto,q_auto,dpr_auto\/blogpost_video_solution_player.png\" width=\"100\" height=\"80\" \"Video solution - video player\" style=\"float: left\"\/>\n<div style=\"float: left; font-weight: 500; margin-left: 20px; margin-top: 18px; font-size: 18px; max-width: 400px; line-height: 25px;\">Customizable video player with user engagement analytics <a data-popup=\"true\" href=\"https:\/\/demo.cloudinary.com\/video-player\" style=\"padding-left: 10px; font-size: 12px\">See demo<\/a><\/div>\n<\/div>\n<div style=\"clear: both\"><\/div>\n<div>\n<img loading=\"lazy\" decoding=\"async\" alt=\"live streaming\" src=\"https:\/\/cloudinary-res.cloudinary.com\/image\/upload\/w_100,f_auto,q_auto,dpr_auto\/blogpost_video_solution_live.png\" width=\"100\" height=\"80\" \"Video solution - live video streaming\" style=\"float: left\"\/>\n<div style=\"float: left; font-weight: 500; margin-left: 20px; margin-top: 18px; font-size: 18px; max-width: 400px; line-height: 25px;\">Live video streaming directly from web and mobile apps <a data-popup=\"true\" href=\"https:\/\/demo.cloudinary.com\/live\" style=\"padding-left: 10px; font-size: 12px\">See demo<\/a><\/div>\n<\/div>\n<div style=\"clear: both\"><\/div>\n<div>\n<img loading=\"lazy\" decoding=\"async\" alt=\"AI\" src=\"https:\/\/cloudinary-res.cloudinary.com\/image\/upload\/w_100,f_auto,q_auto,dpr_auto\/blogpost_video_solution_ai.png\" width=\"100\" height=\"80\" \"Video solution - AI video processing\" style=\"float: left\"\/>\n<div style=\"float: left; font-weight: 500; margin-left: 20px; margin-top: 18px; font-size: 18px; max-width: 400px; line-height: 25px;\">AI based video tagging and transcription<\/div>\n<\/div>\n<div style=\"clear: both\"><\/div>\n<h2>Website videos are becoming mainstream<\/h2>\n<p>Videos are now responsible for about 25% of the average download bandwidth of web sites (<a href=\"https:\/\/speedcurve.com\/blog\/web-performance-page-bloat\/\">SpeedCurve analysis<\/a>). As you can see in the chart below, this reflects a huge growth of about <strong>400%<\/strong> compared to just two years ago. 2017 is definitely the year of video and while &lt;video&gt; didn\u2019t kill the &lt;img&gt; tag and (probably) never will, managing and delivering videos in modern web sites and mobile apps involves growing complexities for developers.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/cloudinary-res.cloudinary.com\/image\/upload\/f_auto,dpr_auto,q_auto,w_500\/speedcurve_video_statistics.png\" alt=\"Video bandwidth statistics\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"500\" height=\"398\"\/><\/p>\n<p><em>Video is the fastest-growing element of page real estate.<\/em>  Source: <a href=\"https:\/\/speedcurve.com\/blog\/web-performance-page-bloat\/\">SpeedCurve blog<\/a><\/p>\n<p>When Cloudinary\u2019s service was publicly launched back in 2012, our first mission was to solve image management needs for web and app developers: from <strong>uploading<\/strong> images from any device and <strong>storing<\/strong> them in the cloud, through <strong>manipulating<\/strong> the images on-the-fly to match any graphic design and screen resolution, to dynamically <strong>optimizing<\/strong> the images and <strong>delivering<\/strong> them via a fast CDN to worldwide users. Then, in May 2015, we expanded our solution and <a href=\"https:\/\/cloudinary.com\/blog\/introducing_cloud_based_service_for_video_upload_real_time_manipulation_and_optimized_viewing\">introduced Cloudinary\u2019s cloud-based service for video upload, real-time manipulation and optimized viewing<\/a>.<\/p>\n<p>Our new offer provided the same cloud-based service API for both images and videos. While the image management space keeps evolving, since 2015, we have also continued enhancing our video transcoding capabilities. Today, about <strong>30%<\/strong> of Cloudinary\u2019s <strong>5000<\/strong> paying customers already upload and manipulate tens of millions of videos every month, and this number is growing quite rapidly.<\/p>\n<p>The challenges developers face with the videos in their web sites tend to be more complex than images. The video files can be huge, which means longer upload &amp; download times and very CPU-intensive transcoding and manipulation. The set of potential devices, resolutions, video formats and video codecs is large and confusing. The desired optimal user experience requires modern video players with user engagement statistics and, in some cases, also monetization capabilities.<\/p>\n<p>Today we are excited to introduce <strong>the next generation of our cloud-based video content management service<\/strong> &#8211; even more advanced real-time video transcoding together with a modern video player, live <a href=\"https:\/\/cloudinary.com\/glossary\/cloud-video-streaming\">video streaming<\/a>, AI based video tagging and transcript, and more; All aimed at simplifying the video workflow for web and mobile developers while improving and enhancing the end-user experience.<\/p>\n<h2>A complete video content management solution for developers<\/h2>\n<p>Whether you are delivering top quality professional videos or user-generated clips, whether you have an eCommerce site, news channel, travel forum, or advertising agency, the back-end challenges involved in quickly uploading and then delivering optimized, high quality video to any device in any location is always there, as are the challenges of adjusting the output to match your design needs, and providing a great front-end user experience. And all these challenges mount if you want to broadcast that video live or integrate and share that content in social networks.<\/p>\n<p>Cloudinary addresses all this and more by providing the following capabilities as part of a single, streamlined solution:<\/p>\n<h3>Upload, storage and administration<\/h3>\n<p>An end-to-end solution for dynamic videos in web sites and apps starts from the ability to upload directly from the browser or mobile apps. A single line of code allows users to <a href=\"https:\/\/cloudinary.com\/documentation\/upload_images\">upload any image or video file<\/a> to the cloud without even going through your servers:<\/p>\n<cld-code-widget\n      class=\" c-code-widget\"\n      snippets=\"[{&quot;sdkId&quot;:&quot;ruby&quot;,&quot;framework&quot;:&quot;ruby&quot;,&quot;language&quot;:&quot;ruby&quot;,&quot;displayName&quot;:&quot;Ruby&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;rawCodeSnippet&quot;:&quot;Cloudinary::Uploader.upload(file, \\n \\u00a0\\u00a0\\u00a0\\u00a0\\u00a0\\u00a0\\u00a0\\u00a0\\u00a0\\u00a0\\u00a0resource_type: :video, public_id: \\&quot;sea_turtle\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;Cloudinary::Uploader.upload(file, \\n \\u00a0\\u00a0\\u00a0\\u00a0\\u00a0\\u00a0\\u00a0\\u00a0\\u00a0\\u00a0\\u00a0resource_type: :video, public_id: \\&quot;sea_turtle\\&quot;)&quot;},{&quot;sdkId&quot;:&quot;php&quot;,&quot;framework&quot;:&quot;php&quot;,&quot;language&quot;:&quot;php&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;rawCodeSnippet&quot;:&quot;\\\\Cloudinary\\\\Uploader::upload(file, \\n \\u00a0\\u00a0\\u00a0\\u00a0\\u00a0\\u00a0\\u00a0array(\\&quot;resource_type\\&quot; =&gt; \\&quot;video\\&quot;, \\&quot;public_id\\&quot; =&gt; \\&quot;sea_turtle\\&quot;));&quot;,&quot;codeSnippet&quot;:&quot;\\\\Cloudinary\\\\Uploader::upload(file, \\n \\u00a0\\u00a0\\u00a0\\u00a0\\u00a0\\u00a0\\u00a0array(\\&quot;resource_type\\&quot; =&gt; \\&quot;video\\&quot;, \\&quot;public_id\\&quot; =&gt; \\&quot;sea_turtle\\&quot;));&quot;},{&quot;sdkId&quot;:&quot;python&quot;,&quot;framework&quot;:&quot;python&quot;,&quot;language&quot;:&quot;python&quot;,&quot;displayName&quot;:&quot;Python&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.uploader.upload(file, \\n \\u00a0\\u00a0\\u00a0\\u00a0\\u00a0\\u00a0\\u00a0resource_type = \\&quot;video\\&quot;, public_id = \\&quot;sea_turtle\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.uploader.upload(file, \\n \\u00a0\\u00a0\\u00a0\\u00a0\\u00a0\\u00a0\\u00a0resource_type = \\&quot;video\\&quot;, public_id = \\&quot;sea_turtle\\&quot;)&quot;},{&quot;sdkId&quot;:&quot;nodejs&quot;,&quot;framework&quot;:&quot;nodejs&quot;,&quot;language&quot;:&quot;javascript&quot;,&quot;displayName&quot;:&quot;Node.js&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.uploader.upload(file, \\n \\u00a0\\u00a0\\u00a0\\u00a0\\u00a0\\u00a0\\u00a0function(result) {console.log(result); },\\n \\u00a0\\u00a0\\u00a0\\u00a0\\u00a0\\u00a0\\u00a0{ resource_type: \\&quot;video\\&quot;, public_id: \\&quot;sea_turtle\\&quot; });&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.uploader.upload(file, \\n \\u00a0\\u00a0\\u00a0\\u00a0\\u00a0\\u00a0\\u00a0function(result) {console.log(result); },\\n \\u00a0\\u00a0\\u00a0\\u00a0\\u00a0\\u00a0\\u00a0{ resource_type: \\&quot;video\\&quot;, public_id: \\&quot;sea_turtle\\&quot; });&quot;},{&quot;sdkId&quot;:&quot;java&quot;,&quot;framework&quot;:&quot;java&quot;,&quot;language&quot;:&quot;java&quot;,&quot;displayName&quot;:&quot;Java&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.uploader().upload(file, \\n \\u00a0\\u00a0\\u00a0\\u00a0\\u00a0\\u00a0\\u00a0ObjectUtils.asMap(\\&quot;resource_type\\&quot;, \\&quot;video\\&quot;, \\&quot;public_id\\&quot;, \\&quot;sea_turtle\\&quot;));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.uploader().upload(file, \\n \\u00a0\\u00a0\\u00a0\\u00a0\\u00a0\\u00a0\\u00a0ObjectUtils.asMap(\\&quot;resource_type\\&quot;, \\&quot;video\\&quot;, \\&quot;public_id\\&quot;, \\&quot;sea_turtle\\&quot;));&quot;}]\"\n      parsed-url=\"[]\"\n      with-url=\"false\"\n    >\n      <span class=\"u-visually-hidden\">Loading code examples<\/span>\n    <\/cld-code-widget>\n<p>You can also use <a href=\"https:\/\/cloudinary.com\/documentation\/upload_widget\">our upload widget<\/a>, which provides a built-in user interface for your users to select and upload image and video files.<\/p>\n<p>Uploaded videos are stored securely in the cloud. Once uploaded, you can manage your cloud-based database of media files using our <a href=\"https:\/\/cloudinary.com\/documentation\/admin_api\">administrative API<\/a> or using Cloudinary\u2019s <a href=\"https:\/\/cloudinary.com\/products\/digital_asset_management\">Digital Asset Management<\/a> user interface.<\/p>\n<h3>Real-time video transcoding, manipulation and streaming<\/h3>\n<p>Video files might be uploaded in various different formats, codecs, resolutions and aspect ratios. These properties will most likely not match the design of your site and the various devices, browsers and resolutions your visitors use. Videos are delivered to web sites using HTTP\/S URLs. Cloudinary supports format conversion, video codec optimization, and resizing and cropping of videos using regular CDN delivery URLs. The video transcoding and manipulation is performed according to the instructions in the URL, while the video processing is done in real-time, on-the-fly, in the cloud when the first user accesses the URL.<\/p>\n<p>For example, below is a video as originally uploaded followed by a web friendly MP4 200&#215;200 cropped version of the video. The transcoding and cropping is done on-the-fly by adding the <code>w_200,h_200,c_fill,g_north<\/code> dynamic manipulation instructions to the video delivery URL.<\/p>\n<p><video controls=\"controls\" height=\"100%\" poster=\"https:\/\/res.cloudinary.com\/demo\/video\/upload\/sea_turtle.jpg\" preload=\"none\" style=\"margin: 0 auto;display: block\" width=\"1728\"><source src=\"https:\/\/res.cloudinary.com\/demo\/video\/upload\/vc_auto\/sea_turtle.webm\" type=\"video\/webm\"><source src=\"https:\/\/res.cloudinary.com\/demo\/video\/upload\/vc_auto\/sea_turtle.mp4\" type=\"video\/mp4\"><source src=\"https:\/\/res.cloudinary.com\/demo\/video\/upload\/vc_auto\/sea_turtle.ogv\" type=\"video\/ogg\"><\/video><\/p>\n<p><cld-code-widget\n      class=\" c-code-widget\"\n      snippets=\"[{&quot;sdkId&quot;:&quot;nodejs&quot;,&quot;framework&quot;:&quot;nodejs&quot;,&quot;language&quot;:&quot;nodejs&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.video(\\&quot;sea_turtle\\&quot;, {width: 200, height: 200, gravity: \\&quot;north\\&quot;, crop: \\&quot;fill\\&quot;})&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.video(\\&quot;sea_turtle\\&quot;, {width: 200, height: 200, gravity: \\&quot;north\\&quot;, crop: \\&quot;fill\\&quot;})&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Node.js&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_2&quot;,&quot;framework&quot;:&quot;react_2&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryVideo(\\&quot;sea_turtle.mp4\\&quot;).resize(\\n  fill()\\n    .width(200)\\n    .height(200)\\n    .gravity(compass(\\&quot;north\\&quot;))\\n);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryVideo(\\&quot;sea_turtle.mp4\\&quot;).resize(\\n  fill()\\n    .width(200)\\n    .height(200)\\n    .gravity(compass(\\&quot;north\\&quot;))\\n);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;react&quot;,&quot;framework&quot;:&quot;react&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;Video publicId=\\&quot;sea_turtle\\&quot; &gt; &lt;Transformation width=\\&quot;200\\&quot; height=\\&quot;200\\&quot; gravity=\\&quot;north\\&quot; crop=\\&quot;fill\\&quot; \\\/&gt; &lt;\\\/Video&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;Video publicId=\\&quot;sea_turtle\\&quot; &gt;\\n\\t&lt;Transformation width=\\&quot;200\\&quot; height=\\&quot;200\\&quot; gravity=\\&quot;north\\&quot; crop=\\&quot;fill\\&quot; \\\/&gt;\\n&lt;\\\/Video&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;cloudinary-react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue_2&quot;,&quot;framework&quot;:&quot;vue_2&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryVideo(\\&quot;sea_turtle.mp4\\&quot;).resize(\\n  fill()\\n    .width(200)\\n    .height(200)\\n    .gravity(compass(\\&quot;north\\&quot;))\\n);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryVideo(\\&quot;sea_turtle.mp4\\&quot;).resize(\\n  fill()\\n    .width(200)\\n    .height(200)\\n    .gravity(compass(\\&quot;north\\&quot;))\\n);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/vue&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue&quot;,&quot;framework&quot;:&quot;vue&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cld-video public-id=\\&quot;sea_turtle\\&quot; &gt; &lt;cld-transformation width=\\&quot;200\\&quot; height=\\&quot;200\\&quot; gravity=\\&quot;north\\&quot; crop=\\&quot;fill\\&quot; \\\/&gt; &lt;\\\/cld-video&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cld-video public-id=\\&quot;sea_turtle\\&quot; &gt;\\n\\t&lt;cld-transformation width=\\&quot;200\\&quot; height=\\&quot;200\\&quot; gravity=\\&quot;north\\&quot; crop=\\&quot;fill\\&quot; \\\/&gt;\\n&lt;\\\/cld-video&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;cloudinary-vue&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular_2&quot;,&quot;framework&quot;:&quot;angular_2&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryVideo(\\&quot;sea_turtle.mp4\\&quot;).resize(\\n  fill()\\n    .width(200)\\n    .height(200)\\n    .gravity(compass(\\&quot;north\\&quot;))\\n);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryVideo(\\&quot;sea_turtle.mp4\\&quot;).resize(\\n  fill()\\n    .width(200)\\n    .height(200)\\n    .gravity(compass(\\&quot;north\\&quot;))\\n);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/ng&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular&quot;,&quot;framework&quot;:&quot;angular&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cl-video public-id=\\&quot;sea_turtle\\&quot; &gt; &lt;cl-transformation width=\\&quot;200\\&quot; height=\\&quot;200\\&quot; gravity=\\&quot;north\\&quot; crop=\\&quot;fill\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;\\\/cl-video&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cl-video public-id=\\&quot;sea_turtle\\&quot; &gt;\\n\\t&lt;cl-transformation width=\\&quot;200\\&quot; height=\\&quot;200\\&quot; gravity=\\&quot;north\\&quot; crop=\\&quot;fill\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n&lt;\\\/cl-video&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/angular-5.x&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js_2&quot;,&quot;framework&quot;:&quot;js_2&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryVideo(\\&quot;sea_turtle.mp4\\&quot;).resize(\\n  fill()\\n    .width(200)\\n    .height(200)\\n    .gravity(compass(\\&quot;north\\&quot;))\\n);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryVideo(\\&quot;sea_turtle.mp4\\&quot;).resize(\\n  fill()\\n    .width(200)\\n    .height(200)\\n    .gravity(compass(\\&quot;north\\&quot;))\\n);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js&quot;,&quot;framework&quot;:&quot;js&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.videoTag(&#039;sea_turtle&#039;, {width: 200, height: 200, gravity: \\&quot;north\\&quot;, crop: \\&quot;fill\\&quot;}).toHtml();&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.videoTag(&#039;sea_turtle&#039;, {width: 200, height: 200, gravity: \\&quot;north\\&quot;, crop: \\&quot;fill\\&quot;}).toHtml();&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;cloudinary-core&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;python&quot;,&quot;framework&quot;:&quot;python&quot;,&quot;language&quot;:&quot;python&quot;,&quot;rawCodeSnippet&quot;:&quot;CloudinaryVideo(\\&quot;sea_turtle\\&quot;).video(width=200, height=200, gravity=\\&quot;north\\&quot;, crop=\\&quot;fill\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;CloudinaryVideo(\\&quot;sea_turtle\\&quot;).video(width=200, height=200, gravity=\\&quot;north\\&quot;, crop=\\&quot;fill\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Python&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;php_2&quot;,&quot;framework&quot;:&quot;php_2&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;(new VideoTag(&#039;sea_turtle.mp4&#039;))\\n\\t-&gt;resize(Resize::fill()-&gt;width(200)\\n-&gt;height(200)\\n\\t-&gt;gravity(\\n\\tGravity::compass(\\n\\tCompass::north()))\\n\\t);&quot;,&quot;codeSnippet&quot;:&quot;(new VideoTag(&#039;sea_turtle.mp4&#039;))\\n\\t-&gt;resize(Resize::fill()-&gt;width(200)\\n-&gt;height(200)\\n\\t-&gt;gravity(\\n\\tGravity::compass(\\n\\tCompass::north()))\\n\\t);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;php&quot;,&quot;framework&quot;:&quot;php&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_video_tag(\\&quot;sea_turtle\\&quot;, array(\\&quot;width\\&quot;=&gt;200, \\&quot;height\\&quot;=&gt;200, \\&quot;gravity\\&quot;=&gt;\\&quot;north\\&quot;, \\&quot;crop\\&quot;=&gt;\\&quot;fill\\&quot;))&quot;,&quot;codeSnippet&quot;:&quot;cl_video_tag(\\&quot;sea_turtle\\&quot;, array(\\&quot;width\\&quot;=&gt;200, \\&quot;height\\&quot;=&gt;200, \\&quot;gravity\\&quot;=&gt;\\&quot;north\\&quot;, \\&quot;crop\\&quot;=&gt;\\&quot;fill\\&quot;))&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;java&quot;,&quot;framework&quot;:&quot;java&quot;,&quot;language&quot;:&quot;java&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation().width(200).height(200).gravity(\\&quot;north\\&quot;).crop(\\&quot;fill\\&quot;)).videoTag(\\&quot;sea_turtle\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation().width(200).height(200).gravity(\\&quot;north\\&quot;).crop(\\&quot;fill\\&quot;)).videoTag(\\&quot;sea_turtle\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Java&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;ruby&quot;,&quot;framework&quot;:&quot;ruby&quot;,&quot;language&quot;:&quot;ruby&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_video_tag(\\&quot;sea_turtle\\&quot;, width: 200, height: 200, gravity: \\&quot;north\\&quot;, crop: \\&quot;fill\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cl_video_tag(\\&quot;sea_turtle\\&quot;, width: 200, height: 200, gravity: \\&quot;north\\&quot;, crop: \\&quot;fill\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Ruby&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;csharp&quot;,&quot;framework&quot;:&quot;csharp&quot;,&quot;language&quot;:&quot;csharp&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.Api.UrlVideoUp.Transform(new Transformation().Width(200).Height(200).Gravity(\\&quot;north\\&quot;).Crop(\\&quot;fill\\&quot;)).BuildVideoTag(\\&quot;sea_turtle\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.Api.UrlVideoUp.Transform(new Transformation().Width(200).Height(200).Gravity(\\&quot;north\\&quot;).Crop(\\&quot;fill\\&quot;)).BuildVideoTag(\\&quot;sea_turtle\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;.NET&quot;,&quot;packageName&quot;:&quot;CloudinaryDotNet&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;dart&quot;,&quot;framework&quot;:&quot;dart&quot;,&quot;language&quot;:&quot;dart&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.video(&#039;sea_turtle.mp4&#039;).transformation(Transformation()\\n\\t.resize(Resize.fill().width(200)\\n.height(200)\\n\\t.gravity(\\n\\tGravity.compass(\\n\\tCompass.north()))\\n\\t));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.video(&#039;sea_turtle.mp4&#039;).transformation(Transformation()\\n\\t.resize(Resize.fill().width(200)\\n.height(200)\\n\\t.gravity(\\n\\tGravity.compass(\\n\\tCompass.north()))\\n\\t));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Dart&quot;,&quot;packageName&quot;:&quot;cloudinary_dart&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;swift&quot;,&quot;framework&quot;:&quot;swift&quot;,&quot;language&quot;:&quot;swift&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.createUrl().setResourceType(\\&quot;video\\&quot;).setTransformation(CLDTransformation().setWidth(200).setHeight(200).setGravity(\\&quot;north\\&quot;).setCrop(\\&quot;fill\\&quot;)).generate(\\&quot;sea_turtle.mp4\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.createUrl().setResourceType(\\&quot;video\\&quot;).setTransformation(CLDTransformation().setWidth(200).setHeight(200).setGravity(\\&quot;north\\&quot;).setCrop(\\&quot;fill\\&quot;)).generate(\\&quot;sea_turtle.mp4\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;iOS&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;5.x&quot;},{&quot;sdkId&quot;:&quot;android&quot;,&quot;framework&quot;:&quot;android&quot;,&quot;language&quot;:&quot;android&quot;,&quot;rawCodeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation().width(200).height(200).gravity(\\&quot;north\\&quot;).crop(\\&quot;fill\\&quot;)).resourceType(\\&quot;video\\&quot;).generate(\\&quot;sea_turtle.mp4\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation().width(200).height(200).gravity(\\&quot;north\\&quot;).crop(\\&quot;fill\\&quot;)).resourceType(\\&quot;video\\&quot;).generate(\\&quot;sea_turtle.mp4\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Android&quot;,&quot;packageName&quot;:&quot;cloudinary-android&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;flutter&quot;,&quot;framework&quot;:&quot;flutter&quot;,&quot;language&quot;:&quot;flutter&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.video(&#039;sea_turtle.mp4&#039;).transformation(Transformation()\\n\\t.resize(Resize.fill().width(200)\\n.height(200)\\n\\t.gravity(\\n\\tGravity.compass(\\n\\tCompass.north()))\\n\\t));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.video(&#039;sea_turtle.mp4&#039;).transformation(Transformation()\\n\\t.resize(Resize.fill().width(200)\\n.height(200)\\n\\t.gravity(\\n\\tGravity.compass(\\n\\tCompass.north()))\\n\\t));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Flutter&quot;,&quot;packageName&quot;:&quot;cloudinary_flutter&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;kotlin&quot;,&quot;framework&quot;:&quot;kotlin&quot;,&quot;language&quot;:&quot;kotlin&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.video {\\n\\tpublicId(\\&quot;sea_turtle.mp4\\&quot;)\\n\\t resize(Resize.fill() { width(200)\\n height(200)\\n\\t gravity(\\n\\tGravity.compass(\\n\\tCompass.north()))\\n\\t }) \\n}.generate()&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.video {\\n\\tpublicId(\\&quot;sea_turtle.mp4\\&quot;)\\n\\t resize(Resize.fill() { width(200)\\n height(200)\\n\\t gravity(\\n\\tGravity.compass(\\n\\tCompass.north()))\\n\\t }) \\n}.generate()&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Kotlin&quot;,&quot;packageName&quot;:&quot;kotlin-url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;jquery&quot;,&quot;framework&quot;:&quot;jquery&quot;,&quot;language&quot;:&quot;jquery&quot;,&quot;rawCodeSnippet&quot;:&quot;$.cloudinary.video(\\&quot;sea_turtle\\&quot;, {width: 200, height: 200, gravity: \\&quot;north\\&quot;, crop: \\&quot;fill\\&quot;})&quot;,&quot;codeSnippet&quot;:&quot;$.cloudinary.video(\\&quot;sea_turtle\\&quot;, {width: 200, height: 200, gravity: \\&quot;north\\&quot;, crop: \\&quot;fill\\&quot;})&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;jQuery&quot;,&quot;packageName&quot;:&quot;cloudinary-jquery&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_native&quot;,&quot;framework&quot;:&quot;react_native&quot;,&quot;language&quot;:&quot;react_native&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryVideo(\\&quot;sea_turtle.mp4\\&quot;).resize(\\n  fill()\\n    .width(200)\\n    .height(200)\\n    .gravity(compass(\\&quot;north\\&quot;))\\n);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryVideo(\\&quot;sea_turtle.mp4\\&quot;).resize(\\n  fill()\\n    .width(200)\\n    .height(200)\\n    .gravity(compass(\\&quot;north\\&quot;))\\n);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React Native&quot;,&quot;packageName&quot;:&quot;cloudinary-react-native&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;}]\"\n      parsed-url=\"{&quot;url&quot;:&quot;https:\\\/\\\/res.cloudinary.com\\\/demo\\\/video\\\/upload\\\/w_200,h_200,c_fill,g_north\\\/sea_turtle.mp4&quot;,&quot;cloud_name&quot;:&quot;demo&quot;,&quot;host&quot;:&quot;res.cloudinary.com&quot;,&quot;type&quot;:&quot;upload&quot;,&quot;resource_type&quot;:&quot;video&quot;,&quot;transformation&quot;:[{&quot;width&quot;:&quot;200&quot;,&quot;height&quot;:&quot;200&quot;,&quot;crop_mode&quot;:&quot;fill&quot;,&quot;gravity&quot;:&quot;north&quot;}],&quot;transformation_string&quot;:&quot;w_200,h_200,c_fill,g_north&quot;,&quot;url_suffix&quot;:&quot;&quot;,&quot;version&quot;:&quot;&quot;,&quot;secure&quot;:true,&quot;public_id&quot;:&quot;sea_turtle.mp4&quot;,&quot;extension&quot;:&quot;mp4&quot;,&quot;format&quot;:&quot;mp4&quot;,&quot;format_code&quot;:true,&quot;url_code&quot;:false,&quot;signature&quot;:&quot;&quot;,&quot;private_cdn&quot;:false,&quot;result_asset_type&quot;:&quot;video&quot;}\"\n      with-url=\"true\"\n    >\n      <span class=\"u-visually-hidden\">Loading code examples<\/span>\n    <\/cld-code-widget><video\n      controls\n      muted\n      preload=\"none\"\n      class=\"c-transformed-asset c-transformed-asset--video\"\n      poster=\"https:\/\/res.cloudinary.com\/demo\/video\/upload\/w_200,h_200,c_fill,g_north\/sea_turtle.jpg\"\n      \n    >\n      <source src=\"https:\/\/res.cloudinary.com\/demo\/video\/upload\/w_200,h_200,c_fill,g_north\/vc_h265\/sea_turtle.mp4\" type=\"video\/mp4; codecs=hevc\">\n<source src=\"https:\/\/res.cloudinary.com\/demo\/video\/upload\/w_200,h_200,c_fill,g_north\/vc_vp9\/sea_turtle.webm\" type=\"video\/webm; codecs=vp9\">\n<source src=\"https:\/\/res.cloudinary.com\/demo\/video\/upload\/w_200,h_200,c_fill,g_north\/vc_auto\/sea_turtle.mp4\" type=\"video\/mp4\">\n<source src=\"https:\/\/res.cloudinary.com\/demo\/video\/upload\/w_200,h_200,c_fill,g_north\/vc_auto\/sea_turtle.webm\" type=\"video\/webm\">\n    <\/video><\/p>\n<p>There are plenty of <a href=\"https:\/\/cloudinary.com\/documentation\/video_manipulation_and_delivery\">additional video manipulation<\/a> building blocks that you can mix &amp; match to create your desired composite videos. These include effects, filters, overlays of images, videos and text, and more. Below you can see a more advanced example that applies a color saturation decrease filter and adds an image (watermark), as well as video and text overlays at selected times within the video.<\/p>\n<p><cld-code-widget\n      class=\" c-code-widget\"\n      snippets=\"[{&quot;sdkId&quot;:&quot;nodejs&quot;,&quot;framework&quot;:&quot;nodejs&quot;,&quot;language&quot;:&quot;nodejs&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.video(\\&quot;sea_turtle\\&quot;, {transformation: [ {aspect_ratio: \\&quot;21:9\\&quot;, width: 500, audio_codec: \\&quot;none\\&quot;, crop: \\&quot;fill\\&quot;}, {effect: \\&quot;saturation:-50\\&quot;}, {overlay: \\&quot;cloudinary_icon\\&quot;, gravity: \\&quot;north_east\\&quot;, effect: \\&quot;brightness:200\\&quot;, opacity: 40, x: 5, y: 5, width: 120}, {overlay: {font_family: \\&quot;Roboto\\&quot;, font_size: 34, font_weight: \\&quot;bold\\&quot;, text: \\&quot;Cute.Animals\\&quot;}, color: \\&quot;white\\&quot;, gravity: \\&quot;west\\&quot;, x: 10, start_offset: \\&quot;2\\&quot;}, {overlay: \\&quot;video:funny_dog\\&quot;, width: 200, gravity: \\&quot;south_east\\&quot;, y: 10, x: 10, start_offset: \\&quot;2\\&quot;} ]})&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.video(\\&quot;sea_turtle\\&quot;, {transformation: [\\n  {aspect_ratio: \\&quot;21:9\\&quot;, width: 500, audio_codec: \\&quot;none\\&quot;, crop: \\&quot;fill\\&quot;},\\n  {effect: \\&quot;saturation:-50\\&quot;},\\n  {overlay: \\&quot;cloudinary_icon\\&quot;, gravity: \\&quot;north_east\\&quot;, effect: \\&quot;brightness:200\\&quot;, opacity: 40, x: 5, y: 5, width: 120},\\n  {overlay: {font_family: \\&quot;Roboto\\&quot;, font_size: 34, font_weight: \\&quot;bold\\&quot;, text: \\&quot;Cute.Animals\\&quot;}, color: \\&quot;white\\&quot;, gravity: \\&quot;west\\&quot;, x: 10, start_offset: \\&quot;2\\&quot;},\\n  {overlay: \\&quot;video:funny_dog\\&quot;, width: 200, gravity: \\&quot;south_east\\&quot;, y: 10, x: 10, start_offset: \\&quot;2\\&quot;}\\n  ]})&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Node.js&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_2&quot;,&quot;framework&quot;:&quot;react_2&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryVideo(\\&quot;sea_turtle.mp4\\&quot;)\\n  .transcode(audioCodec(\\&quot;none\\&quot;))\\n  .resize(fill().width(500).aspectRatio(\\&quot;21:9\\&quot;))\\n  .adjust(saturation().level(-50))\\n  .overlay(\\n    source(\\n      image(\\&quot;cloudinary_icon\\&quot;).transformation(\\n        new Transformation()\\n          .resize(scale().width(120))\\n          .adjust(opacity(40))\\n          .adjust(brightness().level(200))\\n      )\\n    ).position(\\n      new Position()\\n        .gravity(compass(\\&quot;north_east\\&quot;))\\n        .offsetX(5)\\n        .offsetY(5)\\n    )\\n  )\\n  .overlay(\\n    source(text(\\&quot;Cute.Animals\\&quot;, \\&quot;Roboto_34px_bold\\&quot;).textColor(\\&quot;white\\&quot;))\\n      .position(\\n        new Position()\\n          .gravity(compass(\\&quot;west\\&quot;))\\n          .offsetX(10)\\n      )\\n      .timeline(position().startOffset(\\&quot;2.0\\&quot;))\\n  )\\n  .overlay(\\n    source(\\n      video(\\&quot;funny_dog\\&quot;).transformation(\\n        new Transformation().resize(scale().width(200))\\n      )\\n    )\\n      .position(\\n        new Position()\\n          .gravity(compass(\\&quot;south_east\\&quot;))\\n          .offsetX(10)\\n          .offsetY(10)\\n      )\\n      .timeline(position().startOffset(\\&quot;2.0\\&quot;))\\n  );&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryVideo(\\&quot;sea_turtle.mp4\\&quot;)\\n  .transcode(audioCodec(\\&quot;none\\&quot;))\\n  .resize(fill().width(500).aspectRatio(\\&quot;21:9\\&quot;))\\n  .adjust(saturation().level(-50))\\n  .overlay(\\n    source(\\n      image(\\&quot;cloudinary_icon\\&quot;).transformation(\\n        new Transformation()\\n          .resize(scale().width(120))\\n          .adjust(opacity(40))\\n          .adjust(brightness().level(200))\\n      )\\n    ).position(\\n      new Position()\\n        .gravity(compass(\\&quot;north_east\\&quot;))\\n        .offsetX(5)\\n        .offsetY(5)\\n    )\\n  )\\n  .overlay(\\n    source(text(\\&quot;Cute.Animals\\&quot;, \\&quot;Roboto_34px_bold\\&quot;).textColor(\\&quot;white\\&quot;))\\n      .position(\\n        new Position()\\n          .gravity(compass(\\&quot;west\\&quot;))\\n          .offsetX(10)\\n      )\\n      .timeline(position().startOffset(\\&quot;2.0\\&quot;))\\n  )\\n  .overlay(\\n    source(\\n      video(\\&quot;funny_dog\\&quot;).transformation(\\n        new Transformation().resize(scale().width(200))\\n      )\\n    )\\n      .position(\\n        new Position()\\n          .gravity(compass(\\&quot;south_east\\&quot;))\\n          .offsetX(10)\\n          .offsetY(10)\\n      )\\n      .timeline(position().startOffset(\\&quot;2.0\\&quot;))\\n  );&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;react&quot;,&quot;framework&quot;:&quot;react&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;Video publicId=\\&quot;sea_turtle\\&quot; &gt; &lt;Transformation aspectRatio=\\&quot;21:9\\&quot; width=\\&quot;500\\&quot; audioCodec=\\&quot;none\\&quot; crop=\\&quot;fill\\&quot; \\\/&gt; &lt;Transformation effect=\\&quot;saturation:-50\\&quot; \\\/&gt; &lt;Transformation overlay=\\&quot;cloudinary_icon\\&quot; gravity=\\&quot;north_east\\&quot; effect=\\&quot;brightness:200\\&quot; opacity=\\&quot;40\\&quot; x=\\&quot;5\\&quot; y=\\&quot;5\\&quot; width=\\&quot;120\\&quot; \\\/&gt; &lt;Transformation overlay={{fontFamily: \\&quot;Roboto\\&quot;, fontSize: 34, fontWeight: \\&quot;bold\\&quot;, text: \\&quot;Cute.Animals\\&quot;}} color=\\&quot;white\\&quot; gravity=\\&quot;west\\&quot; x=\\&quot;10\\&quot; startOffset=\\&quot;2\\&quot; \\\/&gt; &lt;Transformation overlay=\\&quot;video:funny_dog\\&quot; width=\\&quot;200\\&quot; gravity=\\&quot;south_east\\&quot; y=\\&quot;10\\&quot; x=\\&quot;10\\&quot; startOffset=\\&quot;2\\&quot; \\\/&gt; &lt;\\\/Video&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;Video publicId=\\&quot;sea_turtle\\&quot; &gt;\\n\\t&lt;Transformation aspectRatio=\\&quot;21:9\\&quot; width=\\&quot;500\\&quot; audioCodec=\\&quot;none\\&quot; crop=\\&quot;fill\\&quot; \\\/&gt;\\n\\t&lt;Transformation effect=\\&quot;saturation:-50\\&quot; \\\/&gt;\\n\\t&lt;Transformation overlay=\\&quot;cloudinary_icon\\&quot; gravity=\\&quot;north_east\\&quot; effect=\\&quot;brightness:200\\&quot; opacity=\\&quot;40\\&quot; x=\\&quot;5\\&quot; y=\\&quot;5\\&quot; width=\\&quot;120\\&quot; \\\/&gt;\\n\\t&lt;Transformation overlay={{fontFamily: \\&quot;Roboto\\&quot;, fontSize: 34, fontWeight: \\&quot;bold\\&quot;, text: \\&quot;Cute.Animals\\&quot;}} color=\\&quot;white\\&quot; gravity=\\&quot;west\\&quot; x=\\&quot;10\\&quot; startOffset=\\&quot;2\\&quot; \\\/&gt;\\n\\t&lt;Transformation overlay=\\&quot;video:funny_dog\\&quot; width=\\&quot;200\\&quot; gravity=\\&quot;south_east\\&quot; y=\\&quot;10\\&quot; x=\\&quot;10\\&quot; startOffset=\\&quot;2\\&quot; \\\/&gt;\\n&lt;\\\/Video&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;cloudinary-react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue_2&quot;,&quot;framework&quot;:&quot;vue_2&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryVideo(\\&quot;sea_turtle.mp4\\&quot;)\\n  .transcode(audioCodec(\\&quot;none\\&quot;))\\n  .resize(fill().width(500).aspectRatio(\\&quot;21:9\\&quot;))\\n  .adjust(saturation().level(-50))\\n  .overlay(\\n    source(\\n      image(\\&quot;cloudinary_icon\\&quot;).transformation(\\n        new Transformation()\\n          .resize(scale().width(120))\\n          .adjust(opacity(40))\\n          .adjust(brightness().level(200))\\n      )\\n    ).position(\\n      new Position()\\n        .gravity(compass(\\&quot;north_east\\&quot;))\\n        .offsetX(5)\\n        .offsetY(5)\\n    )\\n  )\\n  .overlay(\\n    source(text(\\&quot;Cute.Animals\\&quot;, \\&quot;Roboto_34px_bold\\&quot;).textColor(\\&quot;white\\&quot;))\\n      .position(\\n        new Position()\\n          .gravity(compass(\\&quot;west\\&quot;))\\n          .offsetX(10)\\n      )\\n      .timeline(position().startOffset(\\&quot;2.0\\&quot;))\\n  )\\n  .overlay(\\n    source(\\n      video(\\&quot;funny_dog\\&quot;).transformation(\\n        new Transformation().resize(scale().width(200))\\n      )\\n    )\\n      .position(\\n        new Position()\\n          .gravity(compass(\\&quot;south_east\\&quot;))\\n          .offsetX(10)\\n          .offsetY(10)\\n      )\\n      .timeline(position().startOffset(\\&quot;2.0\\&quot;))\\n  );&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryVideo(\\&quot;sea_turtle.mp4\\&quot;)\\n  .transcode(audioCodec(\\&quot;none\\&quot;))\\n  .resize(fill().width(500).aspectRatio(\\&quot;21:9\\&quot;))\\n  .adjust(saturation().level(-50))\\n  .overlay(\\n    source(\\n      image(\\&quot;cloudinary_icon\\&quot;).transformation(\\n        new Transformation()\\n          .resize(scale().width(120))\\n          .adjust(opacity(40))\\n          .adjust(brightness().level(200))\\n      )\\n    ).position(\\n      new Position()\\n        .gravity(compass(\\&quot;north_east\\&quot;))\\n        .offsetX(5)\\n        .offsetY(5)\\n    )\\n  )\\n  .overlay(\\n    source(text(\\&quot;Cute.Animals\\&quot;, \\&quot;Roboto_34px_bold\\&quot;).textColor(\\&quot;white\\&quot;))\\n      .position(\\n        new Position()\\n          .gravity(compass(\\&quot;west\\&quot;))\\n          .offsetX(10)\\n      )\\n      .timeline(position().startOffset(\\&quot;2.0\\&quot;))\\n  )\\n  .overlay(\\n    source(\\n      video(\\&quot;funny_dog\\&quot;).transformation(\\n        new Transformation().resize(scale().width(200))\\n      )\\n    )\\n      .position(\\n        new Position()\\n          .gravity(compass(\\&quot;south_east\\&quot;))\\n          .offsetX(10)\\n          .offsetY(10)\\n      )\\n      .timeline(position().startOffset(\\&quot;2.0\\&quot;))\\n  );&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/vue&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue&quot;,&quot;framework&quot;:&quot;vue&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cld-video public-id=\\&quot;sea_turtle\\&quot; &gt; &lt;cld-transformation aspect-ratio=\\&quot;21:9\\&quot; width=\\&quot;500\\&quot; audio-codec=\\&quot;none\\&quot; crop=\\&quot;fill\\&quot; \\\/&gt; &lt;cld-transformation effect=\\&quot;saturation:-50\\&quot; \\\/&gt; &lt;cld-transformation :overlay=\\&quot;cloudinary_icon\\&quot; gravity=\\&quot;north_east\\&quot; effect=\\&quot;brightness:200\\&quot; opacity=\\&quot;40\\&quot; x=\\&quot;5\\&quot; y=\\&quot;5\\&quot; width=\\&quot;120\\&quot; \\\/&gt; &lt;cld-transformation :overlay=\\&quot;{fontFamily: &#039;Roboto&#039;, fontSize: 34, fontWeight: &#039;bold&#039;, text: &#039;Cute.Animals&#039;}\\&quot; color=\\&quot;white\\&quot; gravity=\\&quot;west\\&quot; x=\\&quot;10\\&quot; start-offset=\\&quot;2\\&quot; \\\/&gt; &lt;cld-transformation :overlay=\\&quot;video:funny_dog\\&quot; width=\\&quot;200\\&quot; gravity=\\&quot;south_east\\&quot; y=\\&quot;10\\&quot; x=\\&quot;10\\&quot; start-offset=\\&quot;2\\&quot; \\\/&gt; &lt;\\\/cld-video&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cld-video public-id=\\&quot;sea_turtle\\&quot; &gt;\\n\\t&lt;cld-transformation aspect-ratio=\\&quot;21:9\\&quot; width=\\&quot;500\\&quot; audio-codec=\\&quot;none\\&quot; crop=\\&quot;fill\\&quot; \\\/&gt;\\n\\t&lt;cld-transformation effect=\\&quot;saturation:-50\\&quot; \\\/&gt;\\n\\t&lt;cld-transformation :overlay=\\&quot;cloudinary_icon\\&quot; gravity=\\&quot;north_east\\&quot; effect=\\&quot;brightness:200\\&quot; opacity=\\&quot;40\\&quot; x=\\&quot;5\\&quot; y=\\&quot;5\\&quot; width=\\&quot;120\\&quot; \\\/&gt;\\n\\t&lt;cld-transformation :overlay=\\&quot;{fontFamily: &#039;Roboto&#039;, fontSize: 34, fontWeight: &#039;bold&#039;, text: &#039;Cute.Animals&#039;}\\&quot; color=\\&quot;white\\&quot; gravity=\\&quot;west\\&quot; x=\\&quot;10\\&quot; start-offset=\\&quot;2\\&quot; \\\/&gt;\\n\\t&lt;cld-transformation :overlay=\\&quot;video:funny_dog\\&quot; width=\\&quot;200\\&quot; gravity=\\&quot;south_east\\&quot; y=\\&quot;10\\&quot; x=\\&quot;10\\&quot; start-offset=\\&quot;2\\&quot; \\\/&gt;\\n&lt;\\\/cld-video&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;cloudinary-vue&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular_2&quot;,&quot;framework&quot;:&quot;angular_2&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryVideo(\\&quot;sea_turtle.mp4\\&quot;)\\n  .transcode(audioCodec(\\&quot;none\\&quot;))\\n  .resize(fill().width(500).aspectRatio(\\&quot;21:9\\&quot;))\\n  .adjust(saturation().level(-50))\\n  .overlay(\\n    source(\\n      image(\\&quot;cloudinary_icon\\&quot;).transformation(\\n        new Transformation()\\n          .resize(scale().width(120))\\n          .adjust(opacity(40))\\n          .adjust(brightness().level(200))\\n      )\\n    ).position(\\n      new Position()\\n        .gravity(compass(\\&quot;north_east\\&quot;))\\n        .offsetX(5)\\n        .offsetY(5)\\n    )\\n  )\\n  .overlay(\\n    source(text(\\&quot;Cute.Animals\\&quot;, \\&quot;Roboto_34px_bold\\&quot;).textColor(\\&quot;white\\&quot;))\\n      .position(\\n        new Position()\\n          .gravity(compass(\\&quot;west\\&quot;))\\n          .offsetX(10)\\n      )\\n      .timeline(position().startOffset(\\&quot;2.0\\&quot;))\\n  )\\n  .overlay(\\n    source(\\n      video(\\&quot;funny_dog\\&quot;).transformation(\\n        new Transformation().resize(scale().width(200))\\n      )\\n    )\\n      .position(\\n        new Position()\\n          .gravity(compass(\\&quot;south_east\\&quot;))\\n          .offsetX(10)\\n          .offsetY(10)\\n      )\\n      .timeline(position().startOffset(\\&quot;2.0\\&quot;))\\n  );&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryVideo(\\&quot;sea_turtle.mp4\\&quot;)\\n  .transcode(audioCodec(\\&quot;none\\&quot;))\\n  .resize(fill().width(500).aspectRatio(\\&quot;21:9\\&quot;))\\n  .adjust(saturation().level(-50))\\n  .overlay(\\n    source(\\n      image(\\&quot;cloudinary_icon\\&quot;).transformation(\\n        new Transformation()\\n          .resize(scale().width(120))\\n          .adjust(opacity(40))\\n          .adjust(brightness().level(200))\\n      )\\n    ).position(\\n      new Position()\\n        .gravity(compass(\\&quot;north_east\\&quot;))\\n        .offsetX(5)\\n        .offsetY(5)\\n    )\\n  )\\n  .overlay(\\n    source(text(\\&quot;Cute.Animals\\&quot;, \\&quot;Roboto_34px_bold\\&quot;).textColor(\\&quot;white\\&quot;))\\n      .position(\\n        new Position()\\n          .gravity(compass(\\&quot;west\\&quot;))\\n          .offsetX(10)\\n      )\\n      .timeline(position().startOffset(\\&quot;2.0\\&quot;))\\n  )\\n  .overlay(\\n    source(\\n      video(\\&quot;funny_dog\\&quot;).transformation(\\n        new Transformation().resize(scale().width(200))\\n      )\\n    )\\n      .position(\\n        new Position()\\n          .gravity(compass(\\&quot;south_east\\&quot;))\\n          .offsetX(10)\\n          .offsetY(10)\\n      )\\n      .timeline(position().startOffset(\\&quot;2.0\\&quot;))\\n  );&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/ng&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular&quot;,&quot;framework&quot;:&quot;angular&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cl-video public-id=\\&quot;sea_turtle\\&quot; &gt; &lt;cl-transformation aspect-ratio=\\&quot;21:9\\&quot; width=\\&quot;500\\&quot; audio-codec=\\&quot;none\\&quot; crop=\\&quot;fill\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;cl-transformation effect=\\&quot;saturation:-50\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;cl-transformation overlay=\\&quot;cloudinary_icon\\&quot; gravity=\\&quot;north_east\\&quot; effect=\\&quot;brightness:200\\&quot; opacity=\\&quot;40\\&quot; x=\\&quot;5\\&quot; y=\\&quot;5\\&quot; width=\\&quot;120\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;cl-transformation overlay=\\&quot;text:Roboto_34px_bold:Cute.Animals\\&quot; color=\\&quot;white\\&quot; gravity=\\&quot;west\\&quot; x=\\&quot;10\\&quot; start-offset=\\&quot;2\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;cl-transformation overlay=\\&quot;video:funny_dog\\&quot; width=\\&quot;200\\&quot; gravity=\\&quot;south_east\\&quot; y=\\&quot;10\\&quot; x=\\&quot;10\\&quot; start-offset=\\&quot;2\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;\\\/cl-video&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cl-video public-id=\\&quot;sea_turtle\\&quot; &gt;\\n\\t&lt;cl-transformation aspect-ratio=\\&quot;21:9\\&quot; width=\\&quot;500\\&quot; audio-codec=\\&quot;none\\&quot; crop=\\&quot;fill\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n\\t&lt;cl-transformation effect=\\&quot;saturation:-50\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n\\t&lt;cl-transformation overlay=\\&quot;cloudinary_icon\\&quot; gravity=\\&quot;north_east\\&quot; effect=\\&quot;brightness:200\\&quot; opacity=\\&quot;40\\&quot; x=\\&quot;5\\&quot; y=\\&quot;5\\&quot; width=\\&quot;120\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n\\t&lt;cl-transformation overlay=\\&quot;text:Roboto_34px_bold:Cute.Animals\\&quot; color=\\&quot;white\\&quot; gravity=\\&quot;west\\&quot; x=\\&quot;10\\&quot; start-offset=\\&quot;2\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n\\t&lt;cl-transformation overlay=\\&quot;video:funny_dog\\&quot; width=\\&quot;200\\&quot; gravity=\\&quot;south_east\\&quot; y=\\&quot;10\\&quot; x=\\&quot;10\\&quot; start-offset=\\&quot;2\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n&lt;\\\/cl-video&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/angular-5.x&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js_2&quot;,&quot;framework&quot;:&quot;js_2&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryVideo(\\&quot;sea_turtle.mp4\\&quot;)\\n  .transcode(audioCodec(\\&quot;none\\&quot;))\\n  .resize(fill().width(500).aspectRatio(\\&quot;21:9\\&quot;))\\n  .adjust(saturation().level(-50))\\n  .overlay(\\n    source(\\n      image(\\&quot;cloudinary_icon\\&quot;).transformation(\\n        new Transformation()\\n          .resize(scale().width(120))\\n          .adjust(opacity(40))\\n          .adjust(brightness().level(200))\\n      )\\n    ).position(\\n      new Position()\\n        .gravity(compass(\\&quot;north_east\\&quot;))\\n        .offsetX(5)\\n        .offsetY(5)\\n    )\\n  )\\n  .overlay(\\n    source(text(\\&quot;Cute.Animals\\&quot;, \\&quot;Roboto_34px_bold\\&quot;).textColor(\\&quot;white\\&quot;))\\n      .position(\\n        new Position()\\n          .gravity(compass(\\&quot;west\\&quot;))\\n          .offsetX(10)\\n      )\\n      .timeline(position().startOffset(\\&quot;2.0\\&quot;))\\n  )\\n  .overlay(\\n    source(\\n      video(\\&quot;funny_dog\\&quot;).transformation(\\n        new Transformation().resize(scale().width(200))\\n      )\\n    )\\n      .position(\\n        new Position()\\n          .gravity(compass(\\&quot;south_east\\&quot;))\\n          .offsetX(10)\\n          .offsetY(10)\\n      )\\n      .timeline(position().startOffset(\\&quot;2.0\\&quot;))\\n  );&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryVideo(\\&quot;sea_turtle.mp4\\&quot;)\\n  .transcode(audioCodec(\\&quot;none\\&quot;))\\n  .resize(fill().width(500).aspectRatio(\\&quot;21:9\\&quot;))\\n  .adjust(saturation().level(-50))\\n  .overlay(\\n    source(\\n      image(\\&quot;cloudinary_icon\\&quot;).transformation(\\n        new Transformation()\\n          .resize(scale().width(120))\\n          .adjust(opacity(40))\\n          .adjust(brightness().level(200))\\n      )\\n    ).position(\\n      new Position()\\n        .gravity(compass(\\&quot;north_east\\&quot;))\\n        .offsetX(5)\\n        .offsetY(5)\\n    )\\n  )\\n  .overlay(\\n    source(text(\\&quot;Cute.Animals\\&quot;, \\&quot;Roboto_34px_bold\\&quot;).textColor(\\&quot;white\\&quot;))\\n      .position(\\n        new Position()\\n          .gravity(compass(\\&quot;west\\&quot;))\\n          .offsetX(10)\\n      )\\n      .timeline(position().startOffset(\\&quot;2.0\\&quot;))\\n  )\\n  .overlay(\\n    source(\\n      video(\\&quot;funny_dog\\&quot;).transformation(\\n        new Transformation().resize(scale().width(200))\\n      )\\n    )\\n      .position(\\n        new Position()\\n          .gravity(compass(\\&quot;south_east\\&quot;))\\n          .offsetX(10)\\n          .offsetY(10)\\n      )\\n      .timeline(position().startOffset(\\&quot;2.0\\&quot;))\\n  );&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js&quot;,&quot;framework&quot;:&quot;js&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.videoTag(&#039;sea_turtle&#039;, {transformation: [ {aspectRatio: \\&quot;21:9\\&quot;, width: 500, audioCodec: \\&quot;none\\&quot;, crop: \\&quot;fill\\&quot;}, {effect: \\&quot;saturation:-50\\&quot;}, {overlay: new cloudinary.Layer().publicId(\\&quot;cloudinary_icon\\&quot;), gravity: \\&quot;north_east\\&quot;, effect: \\&quot;brightness:200\\&quot;, opacity: 40, x: 5, y: 5, width: 120}, {overlay: new cloudinary.TextLayer().fontFamily(\\&quot;Roboto\\&quot;).fontSize(34).fontWeight(\\&quot;bold\\&quot;).text(\\&quot;Cute.Animals\\&quot;), color: \\&quot;white\\&quot;, gravity: \\&quot;west\\&quot;, x: 10, startOffset: \\&quot;2\\&quot;}, {overlay: new cloudinary.Layer().publicId(\\&quot;video:funny_dog\\&quot;), width: 200, gravity: \\&quot;south_east\\&quot;, y: 10, x: 10, startOffset: \\&quot;2\\&quot;} ]}).toHtml();&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.videoTag(&#039;sea_turtle&#039;, {transformation: [\\n  {aspectRatio: \\&quot;21:9\\&quot;, width: 500, audioCodec: \\&quot;none\\&quot;, crop: \\&quot;fill\\&quot;},\\n  {effect: \\&quot;saturation:-50\\&quot;},\\n  {overlay: new cloudinary.Layer().publicId(\\&quot;cloudinary_icon\\&quot;), gravity: \\&quot;north_east\\&quot;, effect: \\&quot;brightness:200\\&quot;, opacity: 40, x: 5, y: 5, width: 120},\\n  {overlay: new cloudinary.TextLayer().fontFamily(\\&quot;Roboto\\&quot;).fontSize(34).fontWeight(\\&quot;bold\\&quot;).text(\\&quot;Cute.Animals\\&quot;), color: \\&quot;white\\&quot;, gravity: \\&quot;west\\&quot;, x: 10, startOffset: \\&quot;2\\&quot;},\\n  {overlay: new cloudinary.Layer().publicId(\\&quot;video:funny_dog\\&quot;), width: 200, gravity: \\&quot;south_east\\&quot;, y: 10, x: 10, startOffset: \\&quot;2\\&quot;}\\n  ]}).toHtml();&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;cloudinary-core&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;python&quot;,&quot;framework&quot;:&quot;python&quot;,&quot;language&quot;:&quot;python&quot;,&quot;rawCodeSnippet&quot;:&quot;CloudinaryVideo(\\&quot;sea_turtle\\&quot;).video(transformation=[ {&#039;aspect_ratio&#039;: \\&quot;21:9\\&quot;, &#039;width&#039;: 500, &#039;audio_codec&#039;: \\&quot;none\\&quot;, &#039;crop&#039;: \\&quot;fill\\&quot;}, {&#039;effect&#039;: \\&quot;saturation:-50\\&quot;}, {&#039;overlay&#039;: \\&quot;cloudinary_icon\\&quot;, &#039;gravity&#039;: \\&quot;north_east\\&quot;, &#039;effect&#039;: \\&quot;brightness:200\\&quot;, &#039;opacity&#039;: 40, &#039;x&#039;: 5, &#039;y&#039;: 5, &#039;width&#039;: 120}, {&#039;overlay&#039;: {&#039;font_family&#039;: \\&quot;Roboto\\&quot;, &#039;font_size&#039;: 34, &#039;font_weight&#039;: \\&quot;bold\\&quot;, &#039;text&#039;: \\&quot;Cute.Animals\\&quot;}, &#039;color&#039;: \\&quot;white\\&quot;, &#039;gravity&#039;: \\&quot;west\\&quot;, &#039;x&#039;: 10, &#039;start_offset&#039;: \\&quot;2\\&quot;}, {&#039;overlay&#039;: \\&quot;video:funny_dog\\&quot;, &#039;width&#039;: 200, &#039;gravity&#039;: \\&quot;south_east\\&quot;, &#039;y&#039;: 10, &#039;x&#039;: 10, &#039;start_offset&#039;: \\&quot;2\\&quot;} ])&quot;,&quot;codeSnippet&quot;:&quot;CloudinaryVideo(\\&quot;sea_turtle\\&quot;).video(transformation=[\\n  {&#039;aspect_ratio&#039;: \\&quot;21:9\\&quot;, &#039;width&#039;: 500, &#039;audio_codec&#039;: \\&quot;none\\&quot;, &#039;crop&#039;: \\&quot;fill\\&quot;},\\n  {&#039;effect&#039;: \\&quot;saturation:-50\\&quot;},\\n  {&#039;overlay&#039;: \\&quot;cloudinary_icon\\&quot;, &#039;gravity&#039;: \\&quot;north_east\\&quot;, &#039;effect&#039;: \\&quot;brightness:200\\&quot;, &#039;opacity&#039;: 40, &#039;x&#039;: 5, &#039;y&#039;: 5, &#039;width&#039;: 120},\\n  {&#039;overlay&#039;: {&#039;font_family&#039;: \\&quot;Roboto\\&quot;, &#039;font_size&#039;: 34, &#039;font_weight&#039;: \\&quot;bold\\&quot;, &#039;text&#039;: \\&quot;Cute.Animals\\&quot;}, &#039;color&#039;: \\&quot;white\\&quot;, &#039;gravity&#039;: \\&quot;west\\&quot;, &#039;x&#039;: 10, &#039;start_offset&#039;: \\&quot;2\\&quot;},\\n  {&#039;overlay&#039;: \\&quot;video:funny_dog\\&quot;, &#039;width&#039;: 200, &#039;gravity&#039;: \\&quot;south_east\\&quot;, &#039;y&#039;: 10, &#039;x&#039;: 10, &#039;start_offset&#039;: \\&quot;2\\&quot;}\\n  ])&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Python&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;php_2&quot;,&quot;framework&quot;:&quot;php_2&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;(new VideoTag(&#039;sea_turtle.mp4&#039;))\\n\\t-&gt;transcode(Transcode::audioCodec(\\n\\tAudioCodec::none()))\\n\\t-&gt;resize(Resize::fill()-&gt;width(500)\\n-&gt;aspectRatio(\\&quot;21:9\\&quot;))\\n\\t-&gt;adjust(Adjust::saturation()-&gt;level(-50))\\n\\t-&gt;overlay(Overlay::source(\\n\\tSource::image(\\&quot;cloudinary_icon\\&quot;)\\n\\t-&gt;transformation((new Transformation())\\n\\t-&gt;resize(Resize::scale()-&gt;width(120))\\n\\t-&gt;adjust(Adjust::opacity(40))\\n\\t-&gt;adjust(Adjust::brightness()-&gt;level(200)))\\n\\t)\\n\\t-&gt;position((new Position())\\n\\t-&gt;gravity(\\n\\tGravity::compass(\\n\\tCompass::northEast()))\\n-&gt;offsetX(5)\\n-&gt;offsetY(5))\\n\\t)\\n\\t-&gt;overlay(Overlay::source(\\n\\tSource::text(\\&quot;Cute.Animals\\&quot;,\\&quot;Roboto_34px_bold\\&quot;)\\n\\t-&gt;textColor(Color::WHITE)\\n\\t)\\n\\t-&gt;position((new Position())\\n\\t-&gt;gravity(\\n\\tGravity::compass(\\n\\tCompass::west()))\\n-&gt;offsetX(10))\\n\\t-&gt;timeline(\\n\\tTimeline::position()-&gt;startOffset(2.0))\\n\\t)\\n\\t-&gt;overlay(Overlay::source(\\n\\tSource::video(\\&quot;funny_dog\\&quot;)\\n\\t-&gt;transformation((new Transformation())\\n\\t-&gt;resize(Resize::scale()-&gt;width(200)))\\n\\t)\\n\\t-&gt;position((new Position())\\n\\t-&gt;gravity(\\n\\tGravity::compass(\\n\\tCompass::southEast()))\\n-&gt;offsetX(10)\\n-&gt;offsetY(10))\\n\\t-&gt;timeline(\\n\\tTimeline::position()-&gt;startOffset(2.0))\\n\\t);&quot;,&quot;codeSnippet&quot;:&quot;(new VideoTag(&#039;sea_turtle.mp4&#039;))\\n\\t-&gt;transcode(Transcode::audioCodec(\\n\\tAudioCodec::none()))\\n\\t-&gt;resize(Resize::fill()-&gt;width(500)\\n-&gt;aspectRatio(\\&quot;21:9\\&quot;))\\n\\t-&gt;adjust(Adjust::saturation()-&gt;level(-50))\\n\\t-&gt;overlay(Overlay::source(\\n\\tSource::image(\\&quot;cloudinary_icon\\&quot;)\\n\\t-&gt;transformation((new Transformation())\\n\\t-&gt;resize(Resize::scale()-&gt;width(120))\\n\\t-&gt;adjust(Adjust::opacity(40))\\n\\t-&gt;adjust(Adjust::brightness()-&gt;level(200)))\\n\\t)\\n\\t-&gt;position((new Position())\\n\\t-&gt;gravity(\\n\\tGravity::compass(\\n\\tCompass::northEast()))\\n-&gt;offsetX(5)\\n-&gt;offsetY(5))\\n\\t)\\n\\t-&gt;overlay(Overlay::source(\\n\\tSource::text(\\&quot;Cute.Animals\\&quot;,\\&quot;Roboto_34px_bold\\&quot;)\\n\\t-&gt;textColor(Color::WHITE)\\n\\t)\\n\\t-&gt;position((new Position())\\n\\t-&gt;gravity(\\n\\tGravity::compass(\\n\\tCompass::west()))\\n-&gt;offsetX(10))\\n\\t-&gt;timeline(\\n\\tTimeline::position()-&gt;startOffset(2.0))\\n\\t)\\n\\t-&gt;overlay(Overlay::source(\\n\\tSource::video(\\&quot;funny_dog\\&quot;)\\n\\t-&gt;transformation((new Transformation())\\n\\t-&gt;resize(Resize::scale()-&gt;width(200)))\\n\\t)\\n\\t-&gt;position((new Position())\\n\\t-&gt;gravity(\\n\\tGravity::compass(\\n\\tCompass::southEast()))\\n-&gt;offsetX(10)\\n-&gt;offsetY(10))\\n\\t-&gt;timeline(\\n\\tTimeline::position()-&gt;startOffset(2.0))\\n\\t);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;php&quot;,&quot;framework&quot;:&quot;php&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_video_tag(\\&quot;sea_turtle\\&quot;, array(\\&quot;transformation\\&quot;=&gt;array( array(\\&quot;aspect_ratio\\&quot;=&gt;\\&quot;21:9\\&quot;, \\&quot;width\\&quot;=&gt;500, \\&quot;audio_codec\\&quot;=&gt;\\&quot;none\\&quot;, \\&quot;crop\\&quot;=&gt;\\&quot;fill\\&quot;), array(\\&quot;effect\\&quot;=&gt;\\&quot;saturation:-50\\&quot;), array(\\&quot;overlay\\&quot;=&gt;\\&quot;cloudinary_icon\\&quot;, \\&quot;gravity\\&quot;=&gt;\\&quot;north_east\\&quot;, \\&quot;effect\\&quot;=&gt;\\&quot;brightness:200\\&quot;, \\&quot;opacity\\&quot;=&gt;40, \\&quot;x\\&quot;=&gt;5, \\&quot;y\\&quot;=&gt;5, \\&quot;width\\&quot;=&gt;120), array(\\&quot;overlay\\&quot;=&gt;array(\\&quot;font_family\\&quot;=&gt;\\&quot;Roboto\\&quot;, \\&quot;font_size\\&quot;=&gt;34, \\&quot;font_weight\\&quot;=&gt;\\&quot;bold\\&quot;, \\&quot;text\\&quot;=&gt;\\&quot;Cute.Animals\\&quot;), \\&quot;color\\&quot;=&gt;\\&quot;white\\&quot;, \\&quot;gravity\\&quot;=&gt;\\&quot;west\\&quot;, \\&quot;x\\&quot;=&gt;10, \\&quot;start_offset\\&quot;=&gt;\\&quot;2\\&quot;), array(\\&quot;overlay\\&quot;=&gt;\\&quot;video:funny_dog\\&quot;, \\&quot;width\\&quot;=&gt;200, \\&quot;gravity\\&quot;=&gt;\\&quot;south_east\\&quot;, \\&quot;y\\&quot;=&gt;10, \\&quot;x\\&quot;=&gt;10, \\&quot;start_offset\\&quot;=&gt;\\&quot;2\\&quot;) )))&quot;,&quot;codeSnippet&quot;:&quot;cl_video_tag(\\&quot;sea_turtle\\&quot;, array(\\&quot;transformation\\&quot;=&gt;array(\\n  array(\\&quot;aspect_ratio\\&quot;=&gt;\\&quot;21:9\\&quot;, \\&quot;width\\&quot;=&gt;500, \\&quot;audio_codec\\&quot;=&gt;\\&quot;none\\&quot;, \\&quot;crop\\&quot;=&gt;\\&quot;fill\\&quot;),\\n  array(\\&quot;effect\\&quot;=&gt;\\&quot;saturation:-50\\&quot;),\\n  array(\\&quot;overlay\\&quot;=&gt;\\&quot;cloudinary_icon\\&quot;, \\&quot;gravity\\&quot;=&gt;\\&quot;north_east\\&quot;, \\&quot;effect\\&quot;=&gt;\\&quot;brightness:200\\&quot;, \\&quot;opacity\\&quot;=&gt;40, \\&quot;x\\&quot;=&gt;5, \\&quot;y\\&quot;=&gt;5, \\&quot;width\\&quot;=&gt;120),\\n  array(\\&quot;overlay\\&quot;=&gt;array(\\&quot;font_family\\&quot;=&gt;\\&quot;Roboto\\&quot;, \\&quot;font_size\\&quot;=&gt;34, \\&quot;font_weight\\&quot;=&gt;\\&quot;bold\\&quot;, \\&quot;text\\&quot;=&gt;\\&quot;Cute.Animals\\&quot;), \\&quot;color\\&quot;=&gt;\\&quot;white\\&quot;, \\&quot;gravity\\&quot;=&gt;\\&quot;west\\&quot;, \\&quot;x\\&quot;=&gt;10, \\&quot;start_offset\\&quot;=&gt;\\&quot;2\\&quot;),\\n  array(\\&quot;overlay\\&quot;=&gt;\\&quot;video:funny_dog\\&quot;, \\&quot;width\\&quot;=&gt;200, \\&quot;gravity\\&quot;=&gt;\\&quot;south_east\\&quot;, \\&quot;y\\&quot;=&gt;10, \\&quot;x\\&quot;=&gt;10, \\&quot;start_offset\\&quot;=&gt;\\&quot;2\\&quot;)\\n  )))&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;java&quot;,&quot;framework&quot;:&quot;java&quot;,&quot;language&quot;:&quot;java&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation().aspectRatio(\\&quot;21:9\\&quot;).width(500).audioCodec(\\&quot;none\\&quot;).crop(\\&quot;fill\\&quot;).chain() .effect(\\&quot;saturation:-50\\&quot;).chain() .overlay(new Layer().publicId(\\&quot;cloudinary_icon\\&quot;)).gravity(\\&quot;north_east\\&quot;).effect(\\&quot;brightness:200\\&quot;).opacity(40).x(5).y(5).width(120).chain() .overlay(new TextLayer().fontFamily(\\&quot;Roboto\\&quot;).fontSize(34).fontWeight(\\&quot;bold\\&quot;).text(\\&quot;Cute.Animals\\&quot;)).color(\\&quot;white\\&quot;).gravity(\\&quot;west\\&quot;).x(10).startOffset(\\&quot;2\\&quot;).chain() .overlay(new Layer().publicId(\\&quot;video:funny_dog\\&quot;)).width(200).gravity(\\&quot;south_east\\&quot;).y(10).x(10).startOffset(\\&quot;2\\&quot;)).videoTag(\\&quot;sea_turtle\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation()\\n  .aspectRatio(\\&quot;21:9\\&quot;).width(500).audioCodec(\\&quot;none\\&quot;).crop(\\&quot;fill\\&quot;).chain()\\n  .effect(\\&quot;saturation:-50\\&quot;).chain()\\n  .overlay(new Layer().publicId(\\&quot;cloudinary_icon\\&quot;)).gravity(\\&quot;north_east\\&quot;).effect(\\&quot;brightness:200\\&quot;).opacity(40).x(5).y(5).width(120).chain()\\n  .overlay(new TextLayer().fontFamily(\\&quot;Roboto\\&quot;).fontSize(34).fontWeight(\\&quot;bold\\&quot;).text(\\&quot;Cute.Animals\\&quot;)).color(\\&quot;white\\&quot;).gravity(\\&quot;west\\&quot;).x(10).startOffset(\\&quot;2\\&quot;).chain()\\n  .overlay(new Layer().publicId(\\&quot;video:funny_dog\\&quot;)).width(200).gravity(\\&quot;south_east\\&quot;).y(10).x(10).startOffset(\\&quot;2\\&quot;)).videoTag(\\&quot;sea_turtle\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Java&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;ruby&quot;,&quot;framework&quot;:&quot;ruby&quot;,&quot;language&quot;:&quot;ruby&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_video_tag(\\&quot;sea_turtle\\&quot;, transformation: [ {aspect_ratio: \\&quot;21:9\\&quot;, width: 500, audio_codec: \\&quot;none\\&quot;, crop: \\&quot;fill\\&quot;}, {effect: \\&quot;saturation:-50\\&quot;}, {overlay: \\&quot;cloudinary_icon\\&quot;, gravity: \\&quot;north_east\\&quot;, effect: \\&quot;brightness:200\\&quot;, opacity: 40, x: 5, y: 5, width: 120}, {overlay: {font_family: \\&quot;Roboto\\&quot;, font_size: 34, font_weight: \\&quot;bold\\&quot;, text: \\&quot;Cute.Animals\\&quot;}, color: \\&quot;white\\&quot;, gravity: \\&quot;west\\&quot;, x: 10, start_offset: \\&quot;2\\&quot;}, {overlay: \\&quot;video:funny_dog\\&quot;, width: 200, gravity: \\&quot;south_east\\&quot;, y: 10, x: 10, start_offset: \\&quot;2\\&quot;} ])&quot;,&quot;codeSnippet&quot;:&quot;cl_video_tag(\\&quot;sea_turtle\\&quot;, transformation: [\\n  {aspect_ratio: \\&quot;21:9\\&quot;, width: 500, audio_codec: \\&quot;none\\&quot;, crop: \\&quot;fill\\&quot;},\\n  {effect: \\&quot;saturation:-50\\&quot;},\\n  {overlay: \\&quot;cloudinary_icon\\&quot;, gravity: \\&quot;north_east\\&quot;, effect: \\&quot;brightness:200\\&quot;, opacity: 40, x: 5, y: 5, width: 120},\\n  {overlay: {font_family: \\&quot;Roboto\\&quot;, font_size: 34, font_weight: \\&quot;bold\\&quot;, text: \\&quot;Cute.Animals\\&quot;}, color: \\&quot;white\\&quot;, gravity: \\&quot;west\\&quot;, x: 10, start_offset: \\&quot;2\\&quot;},\\n  {overlay: \\&quot;video:funny_dog\\&quot;, width: 200, gravity: \\&quot;south_east\\&quot;, y: 10, x: 10, start_offset: \\&quot;2\\&quot;}\\n  ])&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Ruby&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;csharp&quot;,&quot;framework&quot;:&quot;csharp&quot;,&quot;language&quot;:&quot;csharp&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.Api.UrlVideoUp.Transform(new Transformation().AspectRatio(\\&quot;21:9\\&quot;).Width(500).AudioCodec(\\&quot;none\\&quot;).Crop(\\&quot;fill\\&quot;).Chain() .Effect(\\&quot;saturation:-50\\&quot;).Chain() .Overlay(new Layer().PublicId(\\&quot;cloudinary_icon\\&quot;)).Gravity(\\&quot;north_east\\&quot;).Effect(\\&quot;brightness:200\\&quot;).Opacity(40).X(5).Y(5).Width(120).Chain() .Overlay(new TextLayer().FontFamily(\\&quot;Roboto\\&quot;).FontSize(34).FontWeight(\\&quot;bold\\&quot;).Text(\\&quot;Cute.Animals\\&quot;)).Color(\\&quot;white\\&quot;).Gravity(\\&quot;west\\&quot;).X(10).StartOffset(\\&quot;2\\&quot;).Chain() .Overlay(new Layer().PublicId(\\&quot;video:funny_dog\\&quot;)).Width(200).Gravity(\\&quot;south_east\\&quot;).Y(10).X(10).StartOffset(\\&quot;2\\&quot;)).BuildVideoTag(\\&quot;sea_turtle\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.Api.UrlVideoUp.Transform(new Transformation()\\n  .AspectRatio(\\&quot;21:9\\&quot;).Width(500).AudioCodec(\\&quot;none\\&quot;).Crop(\\&quot;fill\\&quot;).Chain()\\n  .Effect(\\&quot;saturation:-50\\&quot;).Chain()\\n  .Overlay(new Layer().PublicId(\\&quot;cloudinary_icon\\&quot;)).Gravity(\\&quot;north_east\\&quot;).Effect(\\&quot;brightness:200\\&quot;).Opacity(40).X(5).Y(5).Width(120).Chain()\\n  .Overlay(new TextLayer().FontFamily(\\&quot;Roboto\\&quot;).FontSize(34).FontWeight(\\&quot;bold\\&quot;).Text(\\&quot;Cute.Animals\\&quot;)).Color(\\&quot;white\\&quot;).Gravity(\\&quot;west\\&quot;).X(10).StartOffset(\\&quot;2\\&quot;).Chain()\\n  .Overlay(new Layer().PublicId(\\&quot;video:funny_dog\\&quot;)).Width(200).Gravity(\\&quot;south_east\\&quot;).Y(10).X(10).StartOffset(\\&quot;2\\&quot;)).BuildVideoTag(\\&quot;sea_turtle\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;.NET&quot;,&quot;packageName&quot;:&quot;CloudinaryDotNet&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;dart&quot;,&quot;framework&quot;:&quot;dart&quot;,&quot;language&quot;:&quot;dart&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.video(&#039;sea_turtle.mp4&#039;).transformation(Transformation()\\n\\t.addTransformation(\\&quot;ar_21:9,c_fill,w_500,ac_none\\\/e_saturation:-50\\\/l_cloudinary_icon,g_north_east,e_brightness:200,o_40,x_5,y_5,w_120\\\/l_text:Roboto_34px_bold:Cute.Animals,co_white,g_west,x_10,so_2\\\/l_video:funny_dog,w_200,g_south_east,y_10,x_10,so_2\\&quot;));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.video(&#039;sea_turtle.mp4&#039;).transformation(Transformation()\\n\\t.addTransformation(\\&quot;ar_21:9,c_fill,w_500,ac_none\\\/e_saturation:-50\\\/l_cloudinary_icon,g_north_east,e_brightness:200,o_40,x_5,y_5,w_120\\\/l_text:Roboto_34px_bold:Cute.Animals,co_white,g_west,x_10,so_2\\\/l_video:funny_dog,w_200,g_south_east,y_10,x_10,so_2\\&quot;));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Dart&quot;,&quot;packageName&quot;:&quot;cloudinary_dart&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;swift&quot;,&quot;framework&quot;:&quot;swift&quot;,&quot;language&quot;:&quot;swift&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.createUrl().setResourceType(\\&quot;video\\&quot;).setTransformation(CLDTransformation().setAspectRatio(\\&quot;21:9\\&quot;).setWidth(500).setAudioCodec(\\&quot;none\\&quot;).setCrop(\\&quot;fill\\&quot;).chain() .setEffect(\\&quot;saturation:-50\\&quot;).chain() .setOverlay(\\&quot;cloudinary_icon\\&quot;).setGravity(\\&quot;north_east\\&quot;).setEffect(\\&quot;brightness:200\\&quot;).setOpacity(40).setX(5).setY(5).setWidth(120).chain() .setOverlay(\\&quot;text:Roboto_34px_bold:Cute.Animals\\&quot;).setColor(\\&quot;white\\&quot;).setGravity(\\&quot;west\\&quot;).setX(10).setStartOffset(\\&quot;2\\&quot;).chain() .setOverlay(\\&quot;video:funny_dog\\&quot;).setWidth(200).setGravity(\\&quot;south_east\\&quot;).setY(10).setX(10).setStartOffset(\\&quot;2\\&quot;)).generate(\\&quot;sea_turtle.mp4\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.createUrl().setResourceType(\\&quot;video\\&quot;).setTransformation(CLDTransformation()\\n  .setAspectRatio(\\&quot;21:9\\&quot;).setWidth(500).setAudioCodec(\\&quot;none\\&quot;).setCrop(\\&quot;fill\\&quot;).chain()\\n  .setEffect(\\&quot;saturation:-50\\&quot;).chain()\\n  .setOverlay(\\&quot;cloudinary_icon\\&quot;).setGravity(\\&quot;north_east\\&quot;).setEffect(\\&quot;brightness:200\\&quot;).setOpacity(40).setX(5).setY(5).setWidth(120).chain()\\n  .setOverlay(\\&quot;text:Roboto_34px_bold:Cute.Animals\\&quot;).setColor(\\&quot;white\\&quot;).setGravity(\\&quot;west\\&quot;).setX(10).setStartOffset(\\&quot;2\\&quot;).chain()\\n  .setOverlay(\\&quot;video:funny_dog\\&quot;).setWidth(200).setGravity(\\&quot;south_east\\&quot;).setY(10).setX(10).setStartOffset(\\&quot;2\\&quot;)).generate(\\&quot;sea_turtle.mp4\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;iOS&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;5.x&quot;},{&quot;sdkId&quot;:&quot;android&quot;,&quot;framework&quot;:&quot;android&quot;,&quot;language&quot;:&quot;android&quot;,&quot;rawCodeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation().aspectRatio(\\&quot;21:9\\&quot;).width(500).audioCodec(\\&quot;none\\&quot;).crop(\\&quot;fill\\&quot;).chain() .effect(\\&quot;saturation:-50\\&quot;).chain() .overlay(new Layer().publicId(\\&quot;cloudinary_icon\\&quot;)).gravity(\\&quot;north_east\\&quot;).effect(\\&quot;brightness:200\\&quot;).opacity(40).x(5).y(5).width(120).chain() .overlay(new TextLayer().fontFamily(\\&quot;Roboto\\&quot;).fontSize(34).fontWeight(\\&quot;bold\\&quot;).text(\\&quot;Cute.Animals\\&quot;)).color(\\&quot;white\\&quot;).gravity(\\&quot;west\\&quot;).x(10).startOffset(\\&quot;2\\&quot;).chain() .overlay(new Layer().publicId(\\&quot;video:funny_dog\\&quot;)).width(200).gravity(\\&quot;south_east\\&quot;).y(10).x(10).startOffset(\\&quot;2\\&quot;)).resourceType(\\&quot;video\\&quot;).generate(\\&quot;sea_turtle.mp4\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation()\\n  .aspectRatio(\\&quot;21:9\\&quot;).width(500).audioCodec(\\&quot;none\\&quot;).crop(\\&quot;fill\\&quot;).chain()\\n  .effect(\\&quot;saturation:-50\\&quot;).chain()\\n  .overlay(new Layer().publicId(\\&quot;cloudinary_icon\\&quot;)).gravity(\\&quot;north_east\\&quot;).effect(\\&quot;brightness:200\\&quot;).opacity(40).x(5).y(5).width(120).chain()\\n  .overlay(new TextLayer().fontFamily(\\&quot;Roboto\\&quot;).fontSize(34).fontWeight(\\&quot;bold\\&quot;).text(\\&quot;Cute.Animals\\&quot;)).color(\\&quot;white\\&quot;).gravity(\\&quot;west\\&quot;).x(10).startOffset(\\&quot;2\\&quot;).chain()\\n  .overlay(new Layer().publicId(\\&quot;video:funny_dog\\&quot;)).width(200).gravity(\\&quot;south_east\\&quot;).y(10).x(10).startOffset(\\&quot;2\\&quot;)).resourceType(\\&quot;video\\&quot;).generate(\\&quot;sea_turtle.mp4\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Android&quot;,&quot;packageName&quot;:&quot;cloudinary-android&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;flutter&quot;,&quot;framework&quot;:&quot;flutter&quot;,&quot;language&quot;:&quot;flutter&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.video(&#039;sea_turtle.mp4&#039;).transformation(Transformation()\\n\\t.addTransformation(\\&quot;ar_21:9,c_fill,w_500,ac_none\\\/e_saturation:-50\\\/l_cloudinary_icon,g_north_east,e_brightness:200,o_40,x_5,y_5,w_120\\\/l_text:Roboto_34px_bold:Cute.Animals,co_white,g_west,x_10,so_2\\\/l_video:funny_dog,w_200,g_south_east,y_10,x_10,so_2\\&quot;));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.video(&#039;sea_turtle.mp4&#039;).transformation(Transformation()\\n\\t.addTransformation(\\&quot;ar_21:9,c_fill,w_500,ac_none\\\/e_saturation:-50\\\/l_cloudinary_icon,g_north_east,e_brightness:200,o_40,x_5,y_5,w_120\\\/l_text:Roboto_34px_bold:Cute.Animals,co_white,g_west,x_10,so_2\\\/l_video:funny_dog,w_200,g_south_east,y_10,x_10,so_2\\&quot;));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Flutter&quot;,&quot;packageName&quot;:&quot;cloudinary_flutter&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;kotlin&quot;,&quot;framework&quot;:&quot;kotlin&quot;,&quot;language&quot;:&quot;kotlin&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.video {\\n\\tpublicId(\\&quot;sea_turtle.mp4\\&quot;)\\n\\t transcode(Transcode.audioCodec(\\n\\tAudioCodec.none()))\\n\\t resize(Resize.fill() { width(500)\\n aspectRatio(\\&quot;21:9\\&quot;) })\\n\\t adjust(Adjust.saturation() { level(-50) })\\n\\t overlay(Overlay.source(\\n\\tSource.image(\\&quot;cloudinary_icon\\&quot;) {\\n\\t transformation(Transformation {\\n\\t resize(Resize.scale() { width(120) })\\n\\t adjust(Adjust.opacity(40))\\n\\t adjust(Adjust.brightness() { level(200) }) })\\n\\t }) {\\n\\t position(Position() {\\n\\t gravity(\\n\\tGravity.compass(\\n\\tCompass.northEast()))\\n offsetX(5)\\n offsetY(5) })\\n\\t })\\n\\t overlay(Overlay.source(\\n\\tSource.text(\\&quot;Cute.Animals\\&quot;,\\&quot;Roboto_34px_bold\\&quot;) {\\n\\t textColor(Color.WHITE)\\n\\t }) {\\n\\t position(Position() {\\n\\t gravity(\\n\\tGravity.compass(\\n\\tCompass.west()))\\n offsetX(10) })\\n\\t timeline(\\n\\tTimeline.position() { startOffset(2.0F) })\\n\\t })\\n\\t overlay(Overlay.source(\\n\\tSource.video(\\&quot;funny_dog\\&quot;) {\\n\\t transformation(Transformation {\\n\\t resize(Resize.scale() { width(200) }) })\\n\\t }) {\\n\\t position(Position() {\\n\\t gravity(\\n\\tGravity.compass(\\n\\tCompass.southEast()))\\n offsetX(10)\\n offsetY(10) })\\n\\t timeline(\\n\\tTimeline.position() { startOffset(2.0F) })\\n\\t }) \\n}.generate()&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.video {\\n\\tpublicId(\\&quot;sea_turtle.mp4\\&quot;)\\n\\t transcode(Transcode.audioCodec(\\n\\tAudioCodec.none()))\\n\\t resize(Resize.fill() { width(500)\\n aspectRatio(\\&quot;21:9\\&quot;) })\\n\\t adjust(Adjust.saturation() { level(-50) })\\n\\t overlay(Overlay.source(\\n\\tSource.image(\\&quot;cloudinary_icon\\&quot;) {\\n\\t transformation(Transformation {\\n\\t resize(Resize.scale() { width(120) })\\n\\t adjust(Adjust.opacity(40))\\n\\t adjust(Adjust.brightness() { level(200) }) })\\n\\t }) {\\n\\t position(Position() {\\n\\t gravity(\\n\\tGravity.compass(\\n\\tCompass.northEast()))\\n offsetX(5)\\n offsetY(5) })\\n\\t })\\n\\t overlay(Overlay.source(\\n\\tSource.text(\\&quot;Cute.Animals\\&quot;,\\&quot;Roboto_34px_bold\\&quot;) {\\n\\t textColor(Color.WHITE)\\n\\t }) {\\n\\t position(Position() {\\n\\t gravity(\\n\\tGravity.compass(\\n\\tCompass.west()))\\n offsetX(10) })\\n\\t timeline(\\n\\tTimeline.position() { startOffset(2.0F) })\\n\\t })\\n\\t overlay(Overlay.source(\\n\\tSource.video(\\&quot;funny_dog\\&quot;) {\\n\\t transformation(Transformation {\\n\\t resize(Resize.scale() { width(200) }) })\\n\\t }) {\\n\\t position(Position() {\\n\\t gravity(\\n\\tGravity.compass(\\n\\tCompass.southEast()))\\n offsetX(10)\\n offsetY(10) })\\n\\t timeline(\\n\\tTimeline.position() { startOffset(2.0F) })\\n\\t }) \\n}.generate()&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Kotlin&quot;,&quot;packageName&quot;:&quot;kotlin-url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;jquery&quot;,&quot;framework&quot;:&quot;jquery&quot;,&quot;language&quot;:&quot;jquery&quot;,&quot;rawCodeSnippet&quot;:&quot;$.cloudinary.video(\\&quot;sea_turtle\\&quot;, {transformation: [ {aspect_ratio: \\&quot;21:9\\&quot;, width: 500, audio_codec: \\&quot;none\\&quot;, crop: \\&quot;fill\\&quot;}, {effect: \\&quot;saturation:-50\\&quot;}, {overlay: new cloudinary.Layer().publicId(\\&quot;cloudinary_icon\\&quot;), gravity: \\&quot;north_east\\&quot;, effect: \\&quot;brightness:200\\&quot;, opacity: 40, x: 5, y: 5, width: 120}, {overlay: new cloudinary.TextLayer().fontFamily(\\&quot;Roboto\\&quot;).fontSize(34).fontWeight(\\&quot;bold\\&quot;).text(\\&quot;Cute.Animals\\&quot;), color: \\&quot;white\\&quot;, gravity: \\&quot;west\\&quot;, x: 10, start_offset: \\&quot;2\\&quot;}, {overlay: new cloudinary.Layer().publicId(\\&quot;video:funny_dog\\&quot;), width: 200, gravity: \\&quot;south_east\\&quot;, y: 10, x: 10, start_offset: \\&quot;2\\&quot;} ]})&quot;,&quot;codeSnippet&quot;:&quot;$.cloudinary.video(\\&quot;sea_turtle\\&quot;, {transformation: [\\n  {aspect_ratio: \\&quot;21:9\\&quot;, width: 500, audio_codec: \\&quot;none\\&quot;, crop: \\&quot;fill\\&quot;},\\n  {effect: \\&quot;saturation:-50\\&quot;},\\n  {overlay: new cloudinary.Layer().publicId(\\&quot;cloudinary_icon\\&quot;), gravity: \\&quot;north_east\\&quot;, effect: \\&quot;brightness:200\\&quot;, opacity: 40, x: 5, y: 5, width: 120},\\n  {overlay: new cloudinary.TextLayer().fontFamily(\\&quot;Roboto\\&quot;).fontSize(34).fontWeight(\\&quot;bold\\&quot;).text(\\&quot;Cute.Animals\\&quot;), color: \\&quot;white\\&quot;, gravity: \\&quot;west\\&quot;, x: 10, start_offset: \\&quot;2\\&quot;},\\n  {overlay: new cloudinary.Layer().publicId(\\&quot;video:funny_dog\\&quot;), width: 200, gravity: \\&quot;south_east\\&quot;, y: 10, x: 10, start_offset: \\&quot;2\\&quot;}\\n  ]})&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;jQuery&quot;,&quot;packageName&quot;:&quot;cloudinary-jquery&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_native&quot;,&quot;framework&quot;:&quot;react_native&quot;,&quot;language&quot;:&quot;react_native&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryVideo(\\&quot;sea_turtle.mp4\\&quot;)\\n  .transcode(audioCodec(\\&quot;none\\&quot;))\\n  .resize(fill().width(500).aspectRatio(\\&quot;21:9\\&quot;))\\n  .adjust(saturation().level(-50))\\n  .overlay(\\n    source(\\n      image(\\&quot;cloudinary_icon\\&quot;).transformation(\\n        new Transformation()\\n          .resize(scale().width(120))\\n          .adjust(opacity(40))\\n          .adjust(brightness().level(200))\\n      )\\n    ).position(\\n      new Position()\\n        .gravity(compass(\\&quot;north_east\\&quot;))\\n        .offsetX(5)\\n        .offsetY(5)\\n    )\\n  )\\n  .overlay(\\n    source(text(\\&quot;Cute.Animals\\&quot;, \\&quot;Roboto_34px_bold\\&quot;).textColor(\\&quot;white\\&quot;))\\n      .position(\\n        new Position()\\n          .gravity(compass(\\&quot;west\\&quot;))\\n          .offsetX(10)\\n      )\\n      .timeline(position().startOffset(\\&quot;2.0\\&quot;))\\n  )\\n  .overlay(\\n    source(\\n      video(\\&quot;funny_dog\\&quot;).transformation(\\n        new Transformation().resize(scale().width(200))\\n      )\\n    )\\n      .position(\\n        new Position()\\n          .gravity(compass(\\&quot;south_east\\&quot;))\\n          .offsetX(10)\\n          .offsetY(10)\\n      )\\n      .timeline(position().startOffset(\\&quot;2.0\\&quot;))\\n  );&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryVideo(\\&quot;sea_turtle.mp4\\&quot;)\\n  .transcode(audioCodec(\\&quot;none\\&quot;))\\n  .resize(fill().width(500).aspectRatio(\\&quot;21:9\\&quot;))\\n  .adjust(saturation().level(-50))\\n  .overlay(\\n    source(\\n      image(\\&quot;cloudinary_icon\\&quot;).transformation(\\n        new Transformation()\\n          .resize(scale().width(120))\\n          .adjust(opacity(40))\\n          .adjust(brightness().level(200))\\n      )\\n    ).position(\\n      new Position()\\n        .gravity(compass(\\&quot;north_east\\&quot;))\\n        .offsetX(5)\\n        .offsetY(5)\\n    )\\n  )\\n  .overlay(\\n    source(text(\\&quot;Cute.Animals\\&quot;, \\&quot;Roboto_34px_bold\\&quot;).textColor(\\&quot;white\\&quot;))\\n      .position(\\n        new Position()\\n          .gravity(compass(\\&quot;west\\&quot;))\\n          .offsetX(10)\\n      )\\n      .timeline(position().startOffset(\\&quot;2.0\\&quot;))\\n  )\\n  .overlay(\\n    source(\\n      video(\\&quot;funny_dog\\&quot;).transformation(\\n        new Transformation().resize(scale().width(200))\\n      )\\n    )\\n      .position(\\n        new Position()\\n          .gravity(compass(\\&quot;south_east\\&quot;))\\n          .offsetX(10)\\n          .offsetY(10)\\n      )\\n      .timeline(position().startOffset(\\&quot;2.0\\&quot;))\\n  );&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React Native&quot;,&quot;packageName&quot;:&quot;cloudinary-react-native&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;}]\"\n      parsed-url=\"{&quot;url&quot;:&quot;https:\\\/\\\/res.cloudinary.com\\\/demo\\\/video\\\/upload\\\/ar_21:9,c_fill,w_500,ac_none\\\/e_saturation:-50\\\/l_cloudinary_icon,g_north_east,e_brightness:200,o_40,x_5,y_5,w_120\\\/l_text:Roboto_34px_bold:Cute.Animals,co_white,g_west,x_10,so_2\\\/l_video:funny_dog,w_200,g_south_east,y_10,x_10,so_2\\\/sea_turtle.mp4&quot;,&quot;cloud_name&quot;:&quot;demo&quot;,&quot;host&quot;:&quot;res.cloudinary.com&quot;,&quot;type&quot;:&quot;upload&quot;,&quot;resource_type&quot;:&quot;video&quot;,&quot;transformation&quot;:[{&quot;aspect_ratio&quot;:&quot;21:9&quot;,&quot;crop_mode&quot;:&quot;fill&quot;,&quot;width&quot;:&quot;500&quot;,&quot;audio_codec&quot;:&quot;none&quot;},{&quot;effect&quot;:&quot;saturation:-50&quot;},{&quot;overlay&quot;:&quot;cloudinary_icon&quot;,&quot;gravity&quot;:&quot;north_east&quot;,&quot;effect&quot;:&quot;brightness:200&quot;,&quot;opacity&quot;:&quot;40&quot;,&quot;x&quot;:&quot;5&quot;,&quot;y&quot;:&quot;5&quot;,&quot;width&quot;:&quot;120&quot;},{&quot;overlay&quot;:&quot;text:Roboto_34px_bold:Cute.Animals&quot;,&quot;color&quot;:&quot;white&quot;,&quot;gravity&quot;:&quot;west&quot;,&quot;x&quot;:&quot;10&quot;,&quot;start_offset&quot;:&quot;2&quot;},{&quot;overlay&quot;:&quot;video:funny_dog&quot;,&quot;width&quot;:&quot;200&quot;,&quot;gravity&quot;:&quot;south_east&quot;,&quot;y&quot;:&quot;10&quot;,&quot;x&quot;:&quot;10&quot;,&quot;start_offset&quot;:&quot;2&quot;}],&quot;transformation_string&quot;:&quot;ar_21:9,c_fill,w_500,ac_none\\\/e_saturation:-50\\\/l_cloudinary_icon,g_north_east,e_brightness:200,o_40,x_5,y_5,w_120\\\/l_text:Roboto_34px_bold:Cute.Animals,co_white,g_west,x_10,so_2\\\/l_video:funny_dog,w_200,g_south_east,y_10,x_10,so_2&quot;,&quot;url_suffix&quot;:&quot;&quot;,&quot;version&quot;:&quot;&quot;,&quot;secure&quot;:true,&quot;public_id&quot;:&quot;sea_turtle.mp4&quot;,&quot;extension&quot;:&quot;mp4&quot;,&quot;format&quot;:&quot;mp4&quot;,&quot;format_code&quot;:true,&quot;url_code&quot;:false,&quot;signature&quot;:&quot;&quot;,&quot;private_cdn&quot;:false,&quot;result_asset_type&quot;:&quot;video&quot;}\"\n      with-url=\"true\"\n    >\n      <span class=\"u-visually-hidden\">Loading code examples<\/span>\n    <\/cld-code-widget><video\n      controls\n      muted\n      preload=\"none\"\n      class=\"c-transformed-asset c-transformed-asset--video\"\n      poster=\"https:\/\/res.cloudinary.com\/demo\/video\/upload\/ar_21:9,c_fill,w_500,ac_none\/e_saturation:-50\/l_cloudinary_icon,g_north_east,e_brightness:200,o_40,x_5,y_5,w_120\/l_text:Roboto_34px_bold:Cute.Animals,co_white,g_west,x_10,so_2\/l_video:funny_dog,w_200,g_south_east,y_10,x_10,so_2\/sea_turtle.jpg\"\n      \n    >\n      <source src=\"https:\/\/res.cloudinary.com\/demo\/video\/upload\/ar_21:9,c_fill,w_500,ac_none\/e_saturation:-50\/l_cloudinary_icon,g_north_east,e_brightness:200,o_40,x_5,y_5,w_120\/l_text:Roboto_34px_bold:Cute.Animals,co_white,g_west,x_10,so_2\/l_video:funny_dog,w_200,g_south_east,y_10,x_10,so_2\/vc_h265\/sea_turtle.mp4\" type=\"video\/mp4; codecs=hevc\">\n<source src=\"https:\/\/res.cloudinary.com\/demo\/video\/upload\/ar_21:9,c_fill,w_500,ac_none\/e_saturation:-50\/l_cloudinary_icon,g_north_east,e_brightness:200,o_40,x_5,y_5,w_120\/l_text:Roboto_34px_bold:Cute.Animals,co_white,g_west,x_10,so_2\/l_video:funny_dog,w_200,g_south_east,y_10,x_10,so_2\/vc_vp9\/sea_turtle.webm\" type=\"video\/webm; codecs=vp9\">\n<source src=\"https:\/\/res.cloudinary.com\/demo\/video\/upload\/ar_21:9,c_fill,w_500,ac_none\/e_saturation:-50\/l_cloudinary_icon,g_north_east,e_brightness:200,o_40,x_5,y_5,w_120\/l_text:Roboto_34px_bold:Cute.Animals,co_white,g_west,x_10,so_2\/l_video:funny_dog,w_200,g_south_east,y_10,x_10,so_2\/vc_auto\/sea_turtle.mp4\" type=\"video\/mp4\">\n<source src=\"https:\/\/res.cloudinary.com\/demo\/video\/upload\/ar_21:9,c_fill,w_500,ac_none\/e_saturation:-50\/l_cloudinary_icon,g_north_east,e_brightness:200,o_40,x_5,y_5,w_120\/l_text:Roboto_34px_bold:Cute.Animals,co_white,g_west,x_10,so_2\/l_video:funny_dog,w_200,g_south_east,y_10,x_10,so_2\/vc_auto\/sea_turtle.webm\" type=\"video\/webm\">\n    <\/video><\/p>\n<p>Videos can be converted to different formats simply by modifying the file extension. For example, changing the extension to \u2018<a href=\"https:\/\/cloudinary.com\/glossary\/m3u8\">.m3u8<\/a>\u2019 will automatically generate all the index files required for our built-in <strong>HLS and MPEG-DASH<\/strong> <a href=\"https:\/\/cloudinary.com\/blog\/plug_and_play_adaptive_bitrate_streaming_with_hls_and_mpeg_dash\">adaptive bitrate streaming<\/a>. You can see more online video transcoding examples in the following demo:<\/p>\n<p><a href=\"https:\/\/demo.cloudinary.com\/video\/\" data-popup=\"true\" style=\"font-size: 18px; margin:  20px auto; display: block;\">https:\/\/demo.cloudinary.com\/video\/<\/a><\/p>\n<h3>Customizable video player<\/h3>\n<p>The examples above demonstrated URL-based back-end <strong>techniques<\/strong> that you can use to generate and deliver videos. But we wanted to take it further and provide developers with a complete, yet simple solution for addressing the front-end video playing experience as well.<\/p>\n<p>A new <strong>Cloudinary Video Player<\/strong> is now publicly available. The player can be initiated with a single line of code that accepts a video ID and automatically builds video manipulation and delivery URLs. Web friendly video formats such as MP4 are used and HLS &amp; MPEG-DASH adaptive bitrate streaming is automatically set-up.<\/p>\n<p>The video player can be initiated either using HTML markup or programmatically using JavaScript:<\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript shcb-wrap-lines\"> <span class=\"hljs-keyword\">var<\/span> vplayer = cld.videoPlayer(<span class=\"hljs-string\">\"demo-player\"<\/span>, {\n \u00a0\u00a0<span class=\"hljs-attr\">publicId<\/span>: <span class=\"hljs-string\">'rafting'<\/span>,\n \u00a0\u00a0<span class=\"hljs-attr\">loop<\/span>: <span class=\"hljs-literal\">true<\/span>,\n \u00a0\u00a0<span class=\"hljs-attr\">controls<\/span>: <span class=\"hljs-literal\">true<\/span>,\n \u00a0\u00a0<span class=\"hljs-attr\">autoplayMode<\/span>: <span class=\"hljs-string\">'on-scroll'<\/span>,\n \u00a0\u00a0<span class=\"hljs-attr\">transformation<\/span>: { <span class=\"hljs-attr\">width<\/span>: <span class=\"hljs-number\">400<\/span>, <span class=\"hljs-attr\">crop<\/span>: <span class=\"hljs-string\">'limit '<\/span> },\n \u00a0\u00a0<span class=\"hljs-attr\">posterOptions<\/span>: {<span class=\"hljs-attr\">publicId<\/span>: <span class=\"hljs-string\">'mypic'<\/span>, transformation { <span class=\"hljs-attr\">effect<\/span>: &#91;<span class=\"hljs-string\">'sepia'<\/span>]}},\n \u00a0\u00a0<span class=\"hljs-attr\">sourceTypes<\/span>: &#91;<span class=\"hljs-string\">\"hls\"<\/span>, <span class=\"hljs-string\">\"mp4\"<\/span>],\n })\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n<p>The player has two built-in look &amp; feel themes that can be further customized. It supports recommended videos suggestions and automatic playlist creation for a given tag assigned to multiple videos. You can track user engagement by monitoring events that can be automatically sent directly to analysis systems such as Google Analytics. See our <a href=\"https:\/\/cloudinary.com\/documentation\/cloudinary_video_player\">video player documentation<\/a> for more details.<\/p>\n<p>The video player is an <a href=\"https:\/\/github.com\/cloudinary\/cloudinary-video-player\">open source<\/a> project based on the popular <a href=\"http:\/\/videojs.com\/\">VideoJS<\/a> open source video player, with its large ecosystem of plugins and customizations.<\/p>\n<p>Interactive examples of the video player can be found in our video player demo page:<\/p>\n<p><a href=\"https:\/\/demo.cloudinary.com\/video-player\/\" data-popup=\"true\" style=\"text-align: center; font-size: 24px; margin:  20px auto; display: block;\">https:\/\/demo.cloudinary.com\/video-player\/<\/a><\/p>\n<img decoding=\"async\" alt=\"Video player demo\" style=\"border: 1px solid #aaa\" src=\"https:\/\/cloudinary-res.cloudinary.com\/image\/upload\/f_auto,q_auto,dpr_auto,w_700\/video_player_demo.jpg\" title=\"Video player demo\">\n<h3>Live video streaming with real-time transcoding<\/h3>\n<p>The common flow of first uploading videos and when done, delivering them to users is gradually clearing the way to a more advanced flow of live video streaming. Cloudinary now offers (beta) support for live streaming of video content directly from web sites and applications.<\/p>\n<p>Video transcoding and manipulation is done in real-time on the live stream exactly in the same way it is done on pre-uploaded videos &#8211; simultaneously generating multiple different versions out of the original video &#8211; different resolutions, cropping modes, encoding quality levels, watermarks, effects, personalized text overlays and more.<\/p>\n<p>Live streaming is based on the WebRTC protocol, and you can instruct Cloudinary to automatically stream the videos directly to <strong>Facebook<\/strong> or <strong>YouTube<\/strong> using the RTMP protocol.<\/p>\n<p>You can try out the full live streaming experience via the following mobile web demo application:<\/p>\n<p><a href=\"https:\/\/demo.cloudinary.com\/live\/\" data-popup=\"true\" style=\"text-align: center; font-size: 24px; margin:  20px auto; display: block;\">https:\/\/demo.cloudinary.com\/live\/<\/a><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/cloudinary-res.cloudinary.com\/image\/upload\/f_auto,q_auto,dpr_auto,w_500\/live_streaming_demo.jpg\" alt=\"Live streaming demo\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"500\" height=\"489\"\/><\/p>\n<h3>AI-based video tagging and transcription<\/h3>\n<p>If your web application has many videos or supports user-generated video content, smart video content management automation would make your life easier and might improve user engagement.<\/p>\n<h4>Automatic video subtitle creation<\/h4>\n<p>Auto-playing muted video became very popular in news sites and social networks such as Facebook. New versions of web browsers even limit the auto playing capabilities and prevent auto-playing with sound. To make verbal videos effective even when muted, subtitles are necessary. And if you want to support uploading videos to a social feed with muted auto-play, you probably need the videos to have the subtitles already embedded in them.<\/p>\n<p>AI-based video transcript is now available as <a href=\"https:\/\/cloudinary.com\/addons#google_speech\">a fully integrated add-on<\/a> powered by Google\u2019s Cloud Speech API. By setting Cloudinary\u2019s <code>raw_convert<\/code> upload API parameter to <code>google_speech<\/code>, the audio channel of the video is automatically processed and a transcript file is generated in your media library.<\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript shcb-wrap-lines\">\n<span class=\"hljs-attr\">Cloudinary<\/span>::Uploader.upload(<span class=\"hljs-string\">\"lincoln.mp4\"<\/span>, :<span class=\"hljs-function\"><span class=\"hljs-params\">resource_type<\/span> =&gt;<\/span> :video, :<span class=\"hljs-function\"><span class=\"hljs-params\">raw_convert<\/span> \u00a0=&gt;<\/span> <span class=\"hljs-string\">\"google_speech\"<\/span>)\n\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n<p>Generating a video with embedded subtitles based on automatic transcription is as simple as adding another parameter to your dynamic video delivery URL (in the example below, adding <code>l_subtitles:lincoln.transcript<\/code>). You can even enhance the subtitles with additional options such as your choice of font, font size, color, etc. \u00a0The original video (which didn\u2019t include any subtitles), now includes automatically generated captions based on Google\u2019s speech to text AI engine.<\/p>\n<p><cld-code-widget\n      class=\" c-code-widget\"\n      snippets=\"[{&quot;sdkId&quot;:&quot;nodejs&quot;,&quot;framework&quot;:&quot;nodejs&quot;,&quot;language&quot;:&quot;nodejs&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.video(\\&quot;lincoln\\&quot;, {overlay: {font_family: \\&quot;arial\\&quot;, font_size: 20, resource_type: \\&quot;subtitles\\&quot;, public_id: \\&quot;lincoln.transcript\\&quot;}, color: \\&quot;yellow\\&quot;})&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.video(\\&quot;lincoln\\&quot;, {overlay: {font_family: \\&quot;arial\\&quot;, font_size: 20, resource_type: \\&quot;subtitles\\&quot;, public_id: \\&quot;lincoln.transcript\\&quot;}, color: \\&quot;yellow\\&quot;})&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Node.js&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_2&quot;,&quot;framework&quot;:&quot;react_2&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryVideo(\\&quot;lincoln.mp4\\&quot;).overlay(\\n  source(\\n    subtitles(\\&quot;lincoln.transcript\\&quot;)\\n      .textStyle(new TextStyle(\\&quot;arial\\&quot;, 20))\\n      .textColor(\\&quot;yellow\\&quot;)\\n  )\\n);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryVideo(\\&quot;lincoln.mp4\\&quot;).overlay(\\n  source(\\n    subtitles(\\&quot;lincoln.transcript\\&quot;)\\n      .textStyle(new TextStyle(\\&quot;arial\\&quot;, 20))\\n      .textColor(\\&quot;yellow\\&quot;)\\n  )\\n);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;react&quot;,&quot;framework&quot;:&quot;react&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;Video publicId=\\&quot;lincoln\\&quot; &gt; &lt;Transformation overlay={{fontFamily: \\&quot;arial\\&quot;, fontSize: 20, publicId: \\&quot;lincoln.transcript\\&quot;, resourceType: \\&quot;subtitles\\&quot;}} color=\\&quot;yellow\\&quot; \\\/&gt; &lt;\\\/Video&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;Video publicId=\\&quot;lincoln\\&quot; &gt;\\n\\t&lt;Transformation overlay={{fontFamily: \\&quot;arial\\&quot;, fontSize: 20, publicId: \\&quot;lincoln.transcript\\&quot;, resourceType: \\&quot;subtitles\\&quot;}} color=\\&quot;yellow\\&quot; \\\/&gt;\\n&lt;\\\/Video&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;cloudinary-react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue_2&quot;,&quot;framework&quot;:&quot;vue_2&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryVideo(\\&quot;lincoln.mp4\\&quot;).overlay(\\n  source(\\n    subtitles(\\&quot;lincoln.transcript\\&quot;)\\n      .textStyle(new TextStyle(\\&quot;arial\\&quot;, 20))\\n      .textColor(\\&quot;yellow\\&quot;)\\n  )\\n);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryVideo(\\&quot;lincoln.mp4\\&quot;).overlay(\\n  source(\\n    subtitles(\\&quot;lincoln.transcript\\&quot;)\\n      .textStyle(new TextStyle(\\&quot;arial\\&quot;, 20))\\n      .textColor(\\&quot;yellow\\&quot;)\\n  )\\n);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/vue&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue&quot;,&quot;framework&quot;:&quot;vue&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cld-video public-id=\\&quot;lincoln\\&quot; &gt; &lt;cld-transformation :overlay=\\&quot;{fontFamily: &#039;arial&#039;, fontSize: 20, publicId: &#039;lincoln.transcript&#039;, resourceType: &#039;subtitles&#039;}\\&quot; color=\\&quot;yellow\\&quot; \\\/&gt; &lt;\\\/cld-video&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cld-video public-id=\\&quot;lincoln\\&quot; &gt;\\n\\t&lt;cld-transformation :overlay=\\&quot;{fontFamily: &#039;arial&#039;, fontSize: 20, publicId: &#039;lincoln.transcript&#039;, resourceType: &#039;subtitles&#039;}\\&quot; color=\\&quot;yellow\\&quot; \\\/&gt;\\n&lt;\\\/cld-video&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;cloudinary-vue&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular_2&quot;,&quot;framework&quot;:&quot;angular_2&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryVideo(\\&quot;lincoln.mp4\\&quot;).overlay(\\n  source(\\n    subtitles(\\&quot;lincoln.transcript\\&quot;)\\n      .textStyle(new TextStyle(\\&quot;arial\\&quot;, 20))\\n      .textColor(\\&quot;yellow\\&quot;)\\n  )\\n);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryVideo(\\&quot;lincoln.mp4\\&quot;).overlay(\\n  source(\\n    subtitles(\\&quot;lincoln.transcript\\&quot;)\\n      .textStyle(new TextStyle(\\&quot;arial\\&quot;, 20))\\n      .textColor(\\&quot;yellow\\&quot;)\\n  )\\n);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/ng&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular&quot;,&quot;framework&quot;:&quot;angular&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cl-video public-id=\\&quot;lincoln\\&quot; &gt; &lt;cl-transformation overlay=\\&quot;subtitles:arial_20:lincoln.transcript\\&quot; color=\\&quot;yellow\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;\\\/cl-video&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cl-video public-id=\\&quot;lincoln\\&quot; &gt;\\n\\t&lt;cl-transformation overlay=\\&quot;subtitles:arial_20:lincoln.transcript\\&quot; color=\\&quot;yellow\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n&lt;\\\/cl-video&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/angular-5.x&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js_2&quot;,&quot;framework&quot;:&quot;js_2&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryVideo(\\&quot;lincoln.mp4\\&quot;).overlay(\\n  source(\\n    subtitles(\\&quot;lincoln.transcript\\&quot;)\\n      .textStyle(new TextStyle(\\&quot;arial\\&quot;, 20))\\n      .textColor(\\&quot;yellow\\&quot;)\\n  )\\n);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryVideo(\\&quot;lincoln.mp4\\&quot;).overlay(\\n  source(\\n    subtitles(\\&quot;lincoln.transcript\\&quot;)\\n      .textStyle(new TextStyle(\\&quot;arial\\&quot;, 20))\\n      .textColor(\\&quot;yellow\\&quot;)\\n  )\\n);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js&quot;,&quot;framework&quot;:&quot;js&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.videoTag(&#039;lincoln&#039;, {overlay: new cloudinary.SubtitlesLayer().fontFamily(\\&quot;arial\\&quot;).fontSize(20).publicId(\\&quot;lincoln.transcript\\&quot;), color: \\&quot;yellow\\&quot;}).toHtml();&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.videoTag(&#039;lincoln&#039;, {overlay: new cloudinary.SubtitlesLayer().fontFamily(\\&quot;arial\\&quot;).fontSize(20).publicId(\\&quot;lincoln.transcript\\&quot;), color: \\&quot;yellow\\&quot;}).toHtml();&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;cloudinary-core&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;python&quot;,&quot;framework&quot;:&quot;python&quot;,&quot;language&quot;:&quot;python&quot;,&quot;rawCodeSnippet&quot;:&quot;CloudinaryVideo(\\&quot;lincoln\\&quot;).video(overlay={&#039;font_family&#039;: \\&quot;arial\\&quot;, &#039;font_size&#039;: 20, &#039;resource_type&#039;: \\&quot;subtitles\\&quot;, &#039;public_id&#039;: \\&quot;lincoln.transcript\\&quot;}, color=\\&quot;yellow\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;CloudinaryVideo(\\&quot;lincoln\\&quot;).video(overlay={&#039;font_family&#039;: \\&quot;arial\\&quot;, &#039;font_size&#039;: 20, &#039;resource_type&#039;: \\&quot;subtitles\\&quot;, &#039;public_id&#039;: \\&quot;lincoln.transcript\\&quot;}, color=\\&quot;yellow\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Python&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;php_2&quot;,&quot;framework&quot;:&quot;php_2&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;(new VideoTag(&#039;lincoln.mp4&#039;))\\n\\t-&gt;overlay(Overlay::source(\\n\\tSource::subtitles(\\&quot;lincoln.transcript\\&quot;)\\n\\t-&gt;textStyle((new TextStyle(\\&quot;arial\\&quot;,20)))\\n\\t-&gt;textColor(Color::YELLOW)\\n\\t));&quot;,&quot;codeSnippet&quot;:&quot;(new VideoTag(&#039;lincoln.mp4&#039;))\\n\\t-&gt;overlay(Overlay::source(\\n\\tSource::subtitles(\\&quot;lincoln.transcript\\&quot;)\\n\\t-&gt;textStyle((new TextStyle(\\&quot;arial\\&quot;,20)))\\n\\t-&gt;textColor(Color::YELLOW)\\n\\t));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;php&quot;,&quot;framework&quot;:&quot;php&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_video_tag(\\&quot;lincoln\\&quot;, array(\\&quot;overlay\\&quot;=&gt;array(\\&quot;font_family\\&quot;=&gt;\\&quot;arial\\&quot;, \\&quot;font_size\\&quot;=&gt;20, \\&quot;resource_type\\&quot;=&gt;\\&quot;subtitles\\&quot;, \\&quot;public_id\\&quot;=&gt;\\&quot;lincoln.transcript\\&quot;), \\&quot;color\\&quot;=&gt;\\&quot;yellow\\&quot;))&quot;,&quot;codeSnippet&quot;:&quot;cl_video_tag(\\&quot;lincoln\\&quot;, array(\\&quot;overlay\\&quot;=&gt;array(\\&quot;font_family\\&quot;=&gt;\\&quot;arial\\&quot;, \\&quot;font_size\\&quot;=&gt;20, \\&quot;resource_type\\&quot;=&gt;\\&quot;subtitles\\&quot;, \\&quot;public_id\\&quot;=&gt;\\&quot;lincoln.transcript\\&quot;), \\&quot;color\\&quot;=&gt;\\&quot;yellow\\&quot;))&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;java&quot;,&quot;framework&quot;:&quot;java&quot;,&quot;language&quot;:&quot;java&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation().overlay(new SubtitlesLayer().fontFamily(\\&quot;arial\\&quot;).fontSize(20).publicId(\\&quot;lincoln.transcript\\&quot;)).color(\\&quot;yellow\\&quot;)).videoTag(\\&quot;lincoln\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation().overlay(new SubtitlesLayer().fontFamily(\\&quot;arial\\&quot;).fontSize(20).publicId(\\&quot;lincoln.transcript\\&quot;)).color(\\&quot;yellow\\&quot;)).videoTag(\\&quot;lincoln\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Java&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;ruby&quot;,&quot;framework&quot;:&quot;ruby&quot;,&quot;language&quot;:&quot;ruby&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_video_tag(\\&quot;lincoln\\&quot;, overlay: {font_family: \\&quot;arial\\&quot;, font_size: 20, resource_type: \\&quot;subtitles\\&quot;, public_id: \\&quot;lincoln.transcript\\&quot;}, color: \\&quot;yellow\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cl_video_tag(\\&quot;lincoln\\&quot;, overlay: {font_family: \\&quot;arial\\&quot;, font_size: 20, resource_type: \\&quot;subtitles\\&quot;, public_id: \\&quot;lincoln.transcript\\&quot;}, color: \\&quot;yellow\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Ruby&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;csharp&quot;,&quot;framework&quot;:&quot;csharp&quot;,&quot;language&quot;:&quot;csharp&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.Api.UrlVideoUp.Transform(new Transformation().Overlay(new SubtitlesLayer().FontFamily(\\&quot;arial\\&quot;).FontSize(20).PublicId(\\&quot;lincoln.transcript\\&quot;)).Color(\\&quot;yellow\\&quot;)).BuildVideoTag(\\&quot;lincoln\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.Api.UrlVideoUp.Transform(new Transformation().Overlay(new SubtitlesLayer().FontFamily(\\&quot;arial\\&quot;).FontSize(20).PublicId(\\&quot;lincoln.transcript\\&quot;)).Color(\\&quot;yellow\\&quot;)).BuildVideoTag(\\&quot;lincoln\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;.NET&quot;,&quot;packageName&quot;:&quot;CloudinaryDotNet&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;dart&quot;,&quot;framework&quot;:&quot;dart&quot;,&quot;language&quot;:&quot;dart&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.video(&#039;lincoln.mp4&#039;).transformation(Transformation()\\n\\t.overlay(Overlay.source(\\n\\tSource.subtitles(\\&quot;lincoln.transcript\\&quot;)\\n\\t.textStyle(TextStyle(\\&quot;arial\\&quot;,20))\\n\\t.textColor(Color.YELLOW)\\n\\t)));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.video(&#039;lincoln.mp4&#039;).transformation(Transformation()\\n\\t.overlay(Overlay.source(\\n\\tSource.subtitles(\\&quot;lincoln.transcript\\&quot;)\\n\\t.textStyle(TextStyle(\\&quot;arial\\&quot;,20))\\n\\t.textColor(Color.YELLOW)\\n\\t)));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Dart&quot;,&quot;packageName&quot;:&quot;cloudinary_dart&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;swift&quot;,&quot;framework&quot;:&quot;swift&quot;,&quot;language&quot;:&quot;swift&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.createUrl().setResourceType(\\&quot;video\\&quot;).setTransformation(CLDTransformation().setOverlay(\\&quot;subtitles:arial_20:lincoln.transcript\\&quot;).setColor(\\&quot;yellow\\&quot;)).generate(\\&quot;lincoln.mp4\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.createUrl().setResourceType(\\&quot;video\\&quot;).setTransformation(CLDTransformation().setOverlay(\\&quot;subtitles:arial_20:lincoln.transcript\\&quot;).setColor(\\&quot;yellow\\&quot;)).generate(\\&quot;lincoln.mp4\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;iOS&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;5.x&quot;},{&quot;sdkId&quot;:&quot;android&quot;,&quot;framework&quot;:&quot;android&quot;,&quot;language&quot;:&quot;android&quot;,&quot;rawCodeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation().overlay(new SubtitlesLayer().fontFamily(\\&quot;arial\\&quot;).fontSize(20).publicId(\\&quot;lincoln.transcript\\&quot;)).color(\\&quot;yellow\\&quot;)).resourceType(\\&quot;video\\&quot;).generate(\\&quot;lincoln.mp4\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation().overlay(new SubtitlesLayer().fontFamily(\\&quot;arial\\&quot;).fontSize(20).publicId(\\&quot;lincoln.transcript\\&quot;)).color(\\&quot;yellow\\&quot;)).resourceType(\\&quot;video\\&quot;).generate(\\&quot;lincoln.mp4\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Android&quot;,&quot;packageName&quot;:&quot;cloudinary-android&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;flutter&quot;,&quot;framework&quot;:&quot;flutter&quot;,&quot;language&quot;:&quot;flutter&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.video(&#039;lincoln.mp4&#039;).transformation(Transformation()\\n\\t.overlay(Overlay.source(\\n\\tSource.subtitles(\\&quot;lincoln.transcript\\&quot;)\\n\\t.textStyle(TextStyle(\\&quot;arial\\&quot;,20))\\n\\t.textColor(Color.YELLOW)\\n\\t)));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.video(&#039;lincoln.mp4&#039;).transformation(Transformation()\\n\\t.overlay(Overlay.source(\\n\\tSource.subtitles(\\&quot;lincoln.transcript\\&quot;)\\n\\t.textStyle(TextStyle(\\&quot;arial\\&quot;,20))\\n\\t.textColor(Color.YELLOW)\\n\\t)));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Flutter&quot;,&quot;packageName&quot;:&quot;cloudinary_flutter&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;kotlin&quot;,&quot;framework&quot;:&quot;kotlin&quot;,&quot;language&quot;:&quot;kotlin&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.video {\\n\\tpublicId(\\&quot;lincoln.mp4\\&quot;)\\n\\t overlay(Overlay.source(\\n\\tSource.subtitles(\\&quot;lincoln.transcript\\&quot;) {\\n\\t textStyle(TextStyle(\\&quot;arial\\&quot;,20))\\n\\t textColor(Color.YELLOW)\\n\\t })) \\n}.generate()&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.video {\\n\\tpublicId(\\&quot;lincoln.mp4\\&quot;)\\n\\t overlay(Overlay.source(\\n\\tSource.subtitles(\\&quot;lincoln.transcript\\&quot;) {\\n\\t textStyle(TextStyle(\\&quot;arial\\&quot;,20))\\n\\t textColor(Color.YELLOW)\\n\\t })) \\n}.generate()&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Kotlin&quot;,&quot;packageName&quot;:&quot;kotlin-url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;jquery&quot;,&quot;framework&quot;:&quot;jquery&quot;,&quot;language&quot;:&quot;jquery&quot;,&quot;rawCodeSnippet&quot;:&quot;$.cloudinary.video(\\&quot;lincoln\\&quot;, {overlay: new cloudinary.SubtitlesLayer().fontFamily(\\&quot;arial\\&quot;).fontSize(20).publicId(\\&quot;lincoln.transcript\\&quot;), color: \\&quot;yellow\\&quot;})&quot;,&quot;codeSnippet&quot;:&quot;$.cloudinary.video(\\&quot;lincoln\\&quot;, {overlay: new cloudinary.SubtitlesLayer().fontFamily(\\&quot;arial\\&quot;).fontSize(20).publicId(\\&quot;lincoln.transcript\\&quot;), color: \\&quot;yellow\\&quot;})&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;jQuery&quot;,&quot;packageName&quot;:&quot;cloudinary-jquery&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_native&quot;,&quot;framework&quot;:&quot;react_native&quot;,&quot;language&quot;:&quot;react_native&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryVideo(\\&quot;lincoln.mp4\\&quot;).overlay(\\n  source(\\n    subtitles(\\&quot;lincoln.transcript\\&quot;)\\n      .textStyle(new TextStyle(\\&quot;arial\\&quot;, 20))\\n      .textColor(\\&quot;yellow\\&quot;)\\n  )\\n);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryVideo(\\&quot;lincoln.mp4\\&quot;).overlay(\\n  source(\\n    subtitles(\\&quot;lincoln.transcript\\&quot;)\\n      .textStyle(new TextStyle(\\&quot;arial\\&quot;, 20))\\n      .textColor(\\&quot;yellow\\&quot;)\\n  )\\n);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React Native&quot;,&quot;packageName&quot;:&quot;cloudinary-react-native&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;}]\"\n      parsed-url=\"{&quot;url&quot;:&quot;https:\\\/\\\/res.cloudinary.com\\\/demo\\\/video\\\/upload\\\/l_subtitles:arial_20:lincoln.transcript,co_yellow\\\/lincoln.mp4&quot;,&quot;cloud_name&quot;:&quot;demo&quot;,&quot;host&quot;:&quot;res.cloudinary.com&quot;,&quot;type&quot;:&quot;upload&quot;,&quot;resource_type&quot;:&quot;video&quot;,&quot;transformation&quot;:[{&quot;overlay&quot;:&quot;subtitles:arial_20:lincoln.transcript&quot;,&quot;color&quot;:&quot;yellow&quot;}],&quot;transformation_string&quot;:&quot;l_subtitles:arial_20:lincoln.transcript,co_yellow&quot;,&quot;url_suffix&quot;:&quot;&quot;,&quot;version&quot;:&quot;&quot;,&quot;secure&quot;:true,&quot;public_id&quot;:&quot;lincoln.mp4&quot;,&quot;extension&quot;:&quot;mp4&quot;,&quot;format&quot;:&quot;mp4&quot;,&quot;format_code&quot;:true,&quot;url_code&quot;:false,&quot;signature&quot;:&quot;&quot;,&quot;private_cdn&quot;:false,&quot;result_asset_type&quot;:&quot;video&quot;}\"\n      with-url=\"true\"\n    >\n      <span class=\"u-visually-hidden\">Loading code examples<\/span>\n    <\/cld-code-widget><video\n      controls\n      muted\n      preload=\"none\"\n      class=\"c-transformed-asset c-transformed-asset--video\"\n      poster=\"https:\/\/res.cloudinary.com\/demo\/video\/upload\/l_subtitles:arial_20:lincoln.transcript,co_yellow\/lincoln.jpg\"\n      \n    >\n      <source src=\"https:\/\/res.cloudinary.com\/demo\/video\/upload\/l_subtitles:arial_20:lincoln.transcript,co_yellow\/vc_h265\/lincoln.mp4\" type=\"video\/mp4; codecs=hevc\">\n<source src=\"https:\/\/res.cloudinary.com\/demo\/video\/upload\/l_subtitles:arial_20:lincoln.transcript,co_yellow\/vc_vp9\/lincoln.webm\" type=\"video\/webm; codecs=vp9\">\n<source src=\"https:\/\/res.cloudinary.com\/demo\/video\/upload\/l_subtitles:arial_20:lincoln.transcript,co_yellow\/vc_auto\/lincoln.mp4\" type=\"video\/mp4\">\n<source src=\"https:\/\/res.cloudinary.com\/demo\/video\/upload\/l_subtitles:arial_20:lincoln.transcript,co_yellow\/vc_auto\/lincoln.webm\" type=\"video\/webm\">\n    <\/video><\/p>\n<h4>Automatic video tagging<\/h4>\n<p>It\u2019s a common practice to organize your media database or eCommerce product catalog by categorizing and tagging your images and videos to better match uploaded content to your users. Cloudinary now supports automatic AI-based tagging of uploaded videos.<\/p>\n<p>The automatic tagging is available as <a href=\"https:\/\/cloudinary.com\/addons#google_video_tagging\">a fully integrated add-on<\/a> powered by Google\u2019s Cloud Video Intelligence. By setting Cloudinary\u2019s <code>categorization<\/code> upload API parameter to <code>google_video_tagging<\/code>, the video is automatically analyzed, and a list of detected tag categories is included in the response. \u00a0If you also set an <code>auto-tagging<\/code> level, then any category that exceeds the requested confidence level automatically gets added to the resource\u2019s tag list.<\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript shcb-wrap-lines\">Cloudinary::Uploader.upload(<span class=\"hljs-string\">\"turtle.mp4\"<\/span>, :<span class=\"hljs-function\"><span class=\"hljs-params\">resource_type<\/span> =&gt;<\/span> :video, :<span class=\"hljs-function\"><span class=\"hljs-params\">categorization<\/span> =&gt;<\/span> <span class=\"hljs-string\">\"google_video_tagging\"<\/span>, :<span class=\"hljs-function\"><span class=\"hljs-params\">auto_tagging<\/span> =&gt;<\/span> <span class=\"hljs-number\">0.7<\/span>)\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n<p>Below is a sample response from the automatic tagging. Categories with a confidence level above the given threshold are automatically assigned. Following that, you can see the full list of all detected categories and the time segment that each suggested tag applies to. You can list, browse, delete and search images and videos by the automatically assigned tags, either via API or our interactive UI.<\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php shcb-wrap-lines\"><span class=\"hljs-string\">\"tags\"<\/span>: &#91; <span class=\"hljs-string\">\"turtle\"<\/span>, <span class=\"hljs-string\">\"animal\"<\/span> ...],\n<span class=\"hljs-string\">\"data\"<\/span>: &#91;\n \u00a0{<span class=\"hljs-string\">\"tag\"<\/span>: <span class=\"hljs-string\">\"turtle\"<\/span>, <span class=\"hljs-string\">\"start_time_offset\"<\/span>=&gt;<span class=\"hljs-number\">0.0<\/span>, <span class=\"hljs-string\">\"end_time_offset\"<\/span>=&gt;<span class=\"hljs-number\">13.44<\/span>, \n \u00a0\u00a0\u00a0<span class=\"hljs-string\">\"confidence\"<\/span>: <span class=\"hljs-number\">0.93<\/span>},\n \u00a0{<span class=\"hljs-string\">\"tag\"<\/span>: <span class=\"hljs-string\">\"animal\"<\/span>, <span class=\"hljs-string\">\"start_time_offset\"<\/span>=&gt;<span class=\"hljs-number\">0.0<\/span>, <span class=\"hljs-string\">\"end_time_offset\"<\/span>=&gt;<span class=\"hljs-number\">13.44<\/span>, \n \u00a0\u00a0\u00a0<span class=\"hljs-string\">\"confidence\"<\/span>: <span class=\"hljs-number\">0.93<\/span>} ... \u00a0]\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n<p><a class=\"anchor\" name=\"image_and_video_not_image_and_video\"><\/a><\/p>\n<h2><a href=\"#image_and_video_not_image_and_video\">Image and Video, not Image <sup><i>and video<\/i><\/sup><\/a><\/h2>\n<p>In the first couple of years after publicly launching Cloudinary in 2012, I wrote most of the technical blog posts that we published. But we\u2019ve grown, and it\u2019s been quite a while since I\u2019ve written one. When I decided to write this one introducing the next generation of our video solution, I thought that it would be a quick task\u2026<\/p>\n<p>Well, I was quite wrong &#8211; it was not quick at all. As you can see, trying to cover the highlights of the existing components and the new features of our video solution resulted in this longer-than-expected blog post, yet I still feel that I skipped so many cool features and use cases.<\/p>\n<p>As you probably already understand, we are proud of our enhanced Image and Video content Management service and its new capabilities. We even made a slight yet significant update on our home page to clearly show where video fits within our complete solution:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/cloudinary-res.cloudinary.com\/image\/upload\/w_250,dpr_auto,f_auto,q_auto\/video_solution_homepage_before.png\" alt=\"Image and video before\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"250\" height=\"64.5\"\/><\/p>\n<p style=\"text-align: center; font-size: 30px; font-weight: bold;\">&darr;<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/cloudinary-res.cloudinary.com\/image\/upload\/w_420,dpr_auto,f_auto,q_auto\/video_solution_homepage_after.png\" alt=\"Image and video after\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"420\" height=\"45.5\"\/><\/p>\n<p>We invite you to try out the video solution with its new capabilities and share your feedback (<a href=\"https:\/\/www.facebook.com\/groups\/CloudinaryCommunity\/\">community page<\/a> or <a href=\"https:\/\/support.cloudinary.com\/hc\/en-us\/community\/topics\/200241962-Feature-Requests\">forums<\/a>). And for our part, we\u2019ll keep working to further build and enhance it according to your feature requests and suggestions.<\/p>\n<p>All video content management features are available now in all our plans including the free plan. You can <a href=\"https:\/\/cloudinary.com\/users\/register_free\">create your free account<\/a> here.<\/p>\n<hr \/>\n<h2>Further Reading on Video Manipulation<\/h2>\n<ul>\n<li>\n<a href=\"https:\/\/cloudinary.com\/video_api\">Video Transcoding\nand Manipulation<\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/exoplayer_android_tutorial_easy_video_delivery_and_editing\">ExoPlayer Android Tutorial: Easy Video Delivery and Editing<\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/html5_video_player\">Ultimate HTML5 Video Player Showdown: 10 Players Compared<\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/how_to_generate_waveform_images_from_audio_files\">How to Generate Waveform Images From Audio Files<\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/with_automatic_video_subtitles_silence_speaks_volumes\">Auto Generate Subtitles Based on Video Transcript<\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/how_to_automate_compression_of_video_files_with_one_line_of_code\">How to Compress Video Size Automatically With One Line of Code<\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/auto_generate_video_previews_with_great_results_every_time\">Auto-Generate Video Previews with Great Results Every Time<\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/html5_video_tags_won_t_do_for_your_videos\">Adaptive HLS Streaming Using the HTML5 Video Tag<\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/optimizing_video_with_cloudinary_and_the_html5_video_player_part_1\">Video Optimization With the HTML5 &lt;\\video&gt; Player<\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/converting_android_videos_to_animated_gif_images_with_cloudinary_a_tutorial\">Converting Android Videos to Animated GIF Images With Cloudinary: A Tutorial<\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/top_10_mistakes_in_handling_website_videos_and_how_to_solve_them\">Top 10 Mistakes in Handling Website Videos and How to Solve Them<\/a>\n<\/li>\n<\/ul>\n<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":41,"featured_media":21637,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_cloudinary_featured_overwrite":false,"footnotes":""},"categories":[1],"tags":[25,177,214,229,257,303,305],"class_list":["post-21636","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-asset-management","tag-javascript","tag-node","tag-php","tag-ruby-on-rails","tag-video","tag-video-api"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.6 (Yoast SEO v26.9) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Cloud-Based Video Content Management Platform for Developers<\/title>\n<meta name=\"description\" content=\"Introducing Cloudinary&#039;s cloud-based video content management platform for developers. Real-time transcoding, video player, video streaming, tagging and more\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cloudinary.com\/blog\/introducing_the_complete_video_solution_for_web_and_mobile_developers\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Introducing the complete video solution for web and mobile developers\" \/>\n<meta property=\"og:description\" content=\"Introducing Cloudinary&#039;s cloud-based video content management platform for developers. Real-time transcoding, video player, video streaming, tagging and more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudinary.com\/blog\/introducing_the_complete_video_solution_for_web_and_mobile_developers\" \/>\n<meta property=\"og:site_name\" content=\"Cloudinary Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-11-28T13:00:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-07-20T16:14:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1649720297\/Web_Assets\/blog\/video_solution_blog_post\/video_solution_blog_post-jpg?_i=AA\" \/>\n\t<meta property=\"og:image:width\" content=\"700\" \/>\n\t<meta property=\"og:image:height\" content=\"394\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"NewsArticle\",\"@id\":\"https:\/\/cloudinary.com\/blog\/introducing_the_complete_video_solution_for_web_and_mobile_developers#article\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/introducing_the_complete_video_solution_for_web_and_mobile_developers\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"Introducing the complete video solution for web and mobile developers\",\"datePublished\":\"2017-11-28T13:00:06+00:00\",\"dateModified\":\"2025-07-20T16:14:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/introducing_the_complete_video_solution_for_web_and_mobile_developers\"},\"wordCount\":10,\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/introducing_the_complete_video_solution_for_web_and_mobile_developers#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649720297\/Web_Assets\/blog\/video_solution_blog_post\/video_solution_blog_post.jpg?_i=AA\",\"keywords\":[\"Asset Management\",\"Javascript\",\"Node\",\"PHP\",\"Ruby on Rails\",\"Video\",\"Video API\"],\"inLanguage\":\"en-US\",\"copyrightYear\":\"2017\",\"copyrightHolder\":{\"@id\":\"https:\/\/cloudinary.com\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cloudinary.com\/blog\/introducing_the_complete_video_solution_for_web_and_mobile_developers\",\"url\":\"https:\/\/cloudinary.com\/blog\/introducing_the_complete_video_solution_for_web_and_mobile_developers\",\"name\":\"Cloud-Based Video Content Management Platform for Developers\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/introducing_the_complete_video_solution_for_web_and_mobile_developers#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/introducing_the_complete_video_solution_for_web_and_mobile_developers#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649720297\/Web_Assets\/blog\/video_solution_blog_post\/video_solution_blog_post.jpg?_i=AA\",\"datePublished\":\"2017-11-28T13:00:06+00:00\",\"dateModified\":\"2025-07-20T16:14:57+00:00\",\"description\":\"Introducing Cloudinary's cloud-based video content management platform for developers. Real-time transcoding, video player, video streaming, tagging and more\",\"breadcrumb\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/introducing_the_complete_video_solution_for_web_and_mobile_developers#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cloudinary.com\/blog\/introducing_the_complete_video_solution_for_web_and_mobile_developers\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/introducing_the_complete_video_solution_for_web_and_mobile_developers#primaryimage\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649720297\/Web_Assets\/blog\/video_solution_blog_post\/video_solution_blog_post.jpg?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649720297\/Web_Assets\/blog\/video_solution_blog_post\/video_solution_blog_post.jpg?_i=AA\",\"width\":700,\"height\":394},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cloudinary.com\/blog\/introducing_the_complete_video_solution_for_web_and_mobile_developers#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cloudinary.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Introducing the complete video solution for web and mobile developers\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\",\"url\":\"https:\/\/cloudinary.com\/blog\/\",\"name\":\"Cloudinary Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/cloudinary.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\",\"name\":\"Cloudinary Blog\",\"url\":\"https:\/\/cloudinary.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA\",\"width\":312,\"height\":60,\"caption\":\"Cloudinary Blog\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Cloud-Based Video Content Management Platform for Developers","description":"Introducing Cloudinary's cloud-based video content management platform for developers. Real-time transcoding, video player, video streaming, tagging and more","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/cloudinary.com\/blog\/introducing_the_complete_video_solution_for_web_and_mobile_developers","og_locale":"en_US","og_type":"article","og_title":"Introducing the complete video solution for web and mobile developers","og_description":"Introducing Cloudinary's cloud-based video content management platform for developers. Real-time transcoding, video player, video streaming, tagging and more","og_url":"https:\/\/cloudinary.com\/blog\/introducing_the_complete_video_solution_for_web_and_mobile_developers","og_site_name":"Cloudinary Blog","article_published_time":"2017-11-28T13:00:06+00:00","article_modified_time":"2025-07-20T16:14:57+00:00","og_image":[{"width":700,"height":394,"url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1649720297\/Web_Assets\/blog\/video_solution_blog_post\/video_solution_blog_post-jpg?_i=AA","type":"image\/jpeg"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/cloudinary.com\/blog\/introducing_the_complete_video_solution_for_web_and_mobile_developers#article","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/introducing_the_complete_video_solution_for_web_and_mobile_developers"},"author":{"name":"","@id":""},"headline":"Introducing the complete video solution for web and mobile developers","datePublished":"2017-11-28T13:00:06+00:00","dateModified":"2025-07-20T16:14:57+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/introducing_the_complete_video_solution_for_web_and_mobile_developers"},"wordCount":10,"publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/introducing_the_complete_video_solution_for_web_and_mobile_developers#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649720297\/Web_Assets\/blog\/video_solution_blog_post\/video_solution_blog_post.jpg?_i=AA","keywords":["Asset Management","Javascript","Node","PHP","Ruby on Rails","Video","Video API"],"inLanguage":"en-US","copyrightYear":"2017","copyrightHolder":{"@id":"https:\/\/cloudinary.com\/#organization"}},{"@type":"WebPage","@id":"https:\/\/cloudinary.com\/blog\/introducing_the_complete_video_solution_for_web_and_mobile_developers","url":"https:\/\/cloudinary.com\/blog\/introducing_the_complete_video_solution_for_web_and_mobile_developers","name":"Cloud-Based Video Content Management Platform for Developers","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/introducing_the_complete_video_solution_for_web_and_mobile_developers#primaryimage"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/introducing_the_complete_video_solution_for_web_and_mobile_developers#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649720297\/Web_Assets\/blog\/video_solution_blog_post\/video_solution_blog_post.jpg?_i=AA","datePublished":"2017-11-28T13:00:06+00:00","dateModified":"2025-07-20T16:14:57+00:00","description":"Introducing Cloudinary's cloud-based video content management platform for developers. Real-time transcoding, video player, video streaming, tagging and more","breadcrumb":{"@id":"https:\/\/cloudinary.com\/blog\/introducing_the_complete_video_solution_for_web_and_mobile_developers#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudinary.com\/blog\/introducing_the_complete_video_solution_for_web_and_mobile_developers"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/introducing_the_complete_video_solution_for_web_and_mobile_developers#primaryimage","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649720297\/Web_Assets\/blog\/video_solution_blog_post\/video_solution_blog_post.jpg?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649720297\/Web_Assets\/blog\/video_solution_blog_post\/video_solution_blog_post.jpg?_i=AA","width":700,"height":394},{"@type":"BreadcrumbList","@id":"https:\/\/cloudinary.com\/blog\/introducing_the_complete_video_solution_for_web_and_mobile_developers#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudinary.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Introducing the complete video solution for web and mobile developers"}]},{"@type":"WebSite","@id":"https:\/\/cloudinary.com\/blog\/#website","url":"https:\/\/cloudinary.com\/blog\/","name":"Cloudinary Blog","description":"","publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cloudinary.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/cloudinary.com\/blog\/#organization","name":"Cloudinary Blog","url":"https:\/\/cloudinary.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA","width":312,"height":60,"caption":"Cloudinary Blog"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":""}]}},"jetpack_featured_media_url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649720297\/Web_Assets\/blog\/video_solution_blog_post\/video_solution_blog_post.jpg?_i=AA","_links":{"self":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21636","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/users\/41"}],"replies":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/comments?post=21636"}],"version-history":[{"count":6,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21636\/revisions"}],"predecessor-version":[{"id":37997,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21636\/revisions\/37997"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media\/21637"}],"wp:attachment":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media?parent=21636"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/categories?post=21636"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/tags?post=21636"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}