{"id":21744,"date":"2018-06-11T16:31:25","date_gmt":"2018-06-11T16:31:25","guid":{"rendered":"http:\/\/optimizing_video_with_cloudinary_and_the_html5_video_player_part_1"},"modified":"2025-03-09T12:14:01","modified_gmt":"2025-03-09T19:14:01","slug":"optimizing_video_with_cloudinary_and_the_html5_video_player_part_1","status":"publish","type":"post","link":"https:\/\/cloudinary.com\/blog\/optimizing_video_with_cloudinary_and_the_html5_video_player_part_1","title":{"rendered":"Video Optimization, Part 1: Cloudinary and the HTML5 Video Player"},"content":{"rendered":"<div class=\"wp-block-cloudinary-markdown \"><p><a href=\"https:\/\/cloudinary.com\/video_api\">Short-form videos<\/a>\u2014hero banners, product pages, ads, social content\u2014are popping up on the web in places never seen before. This trend could become challenging because of the many formats and codecs, let alone inadequate expertise on what best to adopt for web consumption. Nowadays, most people are familiar with image formats (JPG, PNG, and so forth), but ask them about High Efficiency Video Coding (HEVC), Vorbis, and VP9, and their eyes glaze over.<\/p>\n<p>This article explains how to optimize videos to improve quality, make viewers happier, and above all <a href=\"https:\/\/lumigo.io\/performance-testing-in-a-cloud-native-world\/\">improve performance<\/a> for websites and web applications.<\/p>\n<p>This is part of a series of articles about <a href=\"https:\/\/cloudinary.com\/guides\/video-formats\/top-six-web-video-formats-of-2024\">video format<\/a>.<\/p>\n<h2>Video Optimization and High-Efficiency Coding Matter<\/h2>\n<p>Lack of experience and compression knowhow on the part of web developers can cause significant user-experience problems. For instance, while on a major retail site recently, I ran into a hero banner in the form of a <strong>48-MB<\/strong> video, which, if encoded correctly as an H.264 MP4, would weigh <strong>1.9 MB<\/strong> only. Encoding it with a more advanced codec, such as <a href=\"https:\/\/cloudinary.com\/guides\/video-formats\/mastering-hevc-the-future-ready-video-compression-standard\">HEVC<\/a>, VP9, or <a href=\"https:\/\/cloudinary.com\/guides\/video-formats\/open-source-and-royalty-free-av1-compresses-video-efficiently-and-effectively\">AV1<\/a>, would yield even more compression.<\/p>\n<p>Obviously, despite the demand and desirability of more video content, many developers have yet to catch up to the best practices. Just how do we get the best of both worlds without creating a bandwidth disaster like the one I just mentioned?<\/p>\n<p><a href=\"https:\/\/cloudinary.com\/video_api\">Cloudinary<\/a> offers a simple solution. Identifying the most suitable format for video delivery on the web and encoding it involves only adding a couple of parameters to the video URL.<\/p>\n<p>Take this original video at 8.67 MB:<\/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;dog\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.video(\\&quot;dog\\&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;dog.mp4\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryVideo(\\&quot;dog.mp4\\&quot;);&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;dog\\&quot; &gt; &lt;\\\/Video&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;Video publicId=\\&quot;dog\\&quot; &gt;\\n\\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;dog.mp4\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryVideo(\\&quot;dog.mp4\\&quot;);&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;dog\\&quot; &gt; &lt;\\\/cld-video&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cld-video public-id=\\&quot;dog\\&quot; &gt;\\n\\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;dog.mp4\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryVideo(\\&quot;dog.mp4\\&quot;);&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;dog\\&quot; &gt; &lt;\\\/cl-video&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cl-video public-id=\\&quot;dog\\&quot; &gt;\\n\\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;dog.mp4\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryVideo(\\&quot;dog.mp4\\&quot;);&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;dog&#039;).toHtml();&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.videoTag(&#039;dog&#039;).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;dog\\&quot;).video()&quot;,&quot;codeSnippet&quot;:&quot;CloudinaryVideo(\\&quot;dog\\&quot;).video()&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;dog.mp4&#039;));&quot;,&quot;codeSnippet&quot;:&quot;(new VideoTag(&#039;dog.mp4&#039;));&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;dog\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cl_video_tag(\\&quot;dog\\&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().videoTag(\\&quot;dog\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation().videoTag(\\&quot;dog\\&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;dog\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cl_video_tag(\\&quot;dog\\&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.BuildVideoTag(\\&quot;dog\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.Api.UrlVideoUp.BuildVideoTag(\\&quot;dog\\&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;dog.mp4&#039;).transformation(Transformation());&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.video(&#039;dog.mp4&#039;).transformation(Transformation());&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;).generate(\\&quot;dog.mp4\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.createUrl().setResourceType(\\&quot;video\\&quot;).generate(\\&quot;dog.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().resourceType(\\&quot;video\\&quot;).generate(\\&quot;dog.mp4\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation().resourceType(\\&quot;video\\&quot;).generate(\\&quot;dog.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;dog.mp4&#039;).transformation(Transformation());&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.video(&#039;dog.mp4&#039;).transformation(Transformation());&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;dog.mp4\\&quot;) \\n}.generate()&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.video {\\n\\tpublicId(\\&quot;dog.mp4\\&quot;) \\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;dog\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;$.cloudinary.video(\\&quot;dog\\&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;dog.mp4\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryVideo(\\&quot;dog.mp4\\&quot;);&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\\\/dog.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;transformation_string&quot;:&quot;&quot;,&quot;url_suffix&quot;:&quot;&quot;,&quot;version&quot;:&quot;&quot;,&quot;secure&quot;:true,&quot;public_id&quot;:&quot;dog.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\/dog.jpg\"\n      \n    >\n      <source src=\"https:\/\/res.cloudinary.com\/demo\/video\/upload\/vc_h265\/dog.mp4\" type=\"video\/mp4; codecs=hevc\">\n<source src=\"https:\/\/res.cloudinary.com\/demo\/video\/upload\/vc_vp9\/dog.webm\" type=\"video\/webm; codecs=vp9\">\n<source src=\"https:\/\/res.cloudinary.com\/demo\/video\/upload\/vc_auto\/dog.mp4\" type=\"video\/mp4\">\n<source src=\"https:\/\/res.cloudinary.com\/demo\/video\/upload\/vc_auto\/dog.webm\" type=\"video\/webm\">\n    <\/video><\/p>\n<p>That\u2019s a lot of bytes for a simple non-HD, 13-second-long video. Optimization is clearly called for.<\/p>\n<h2>Enter the HTML5 Video Player and Cloudinary<\/h2>\n<p>First, have a look at the markup:<\/p>\n<pre class=\"js-syntax-highlighted\"><code>&lt;video controls&gt;\n   &lt;source src=&quot;https:\/\/res.cloudinary.com\/demo\/video\/upload\/q_auto,vc_h265,w_1280,c_limit\/dog.mp4&quot; type=&quot;video\/mp4; codecs=hvc1&quot;&gt;\n   &lt;source src=&quot;https:\/\/res.cloudinary.com\/demo\/video\/upload\/q_auto,vc_vp9,w_1280,c_limit\/dog.webm&quot; type=&quot;video\/webm; codecs=vp9&quot;&gt;\n   &lt;source src=&quot;https:\/\/res.cloudinary.com\/demo\/video\/upload\/q_auto,,w_1280,c_limit\/dog.mp4&quot; type=&quot;video\/mp4&quot;&gt; \n&lt;\/video&gt;\n<\/code><\/pre>\n<p>With the intuitive HTML5 <code>&lt;video&gt;<\/code> tag, you can list multiple sources as format choices for the browser. The browser then goes through the list, starting at the top, until it finds a version it can play. That way, you\u2019re assured of optimal cross-browser support for video compression, ready for delivery to your audience.<\/p>\n<p>In the markup above, the first <code>&lt;source&gt;<\/code> element points to an H.265-encoded, i.e., HEVC-encoded, <a href=\"https:\/\/cloudinary.com\/guides\/video-formats\/mp4-format-mpeg-4-part-14-how-it-works-pros-and-cons\">MP4 file<\/a>. The reason for the top billing is that H.265 is about 30 percent more efficient than the universally supported standard, H.264 (aka AVC). However, H.265 currently works only on <a href=\"https:\/\/caniuse.com\/#feat=hevc\">Safari (both desktop and mobile)<\/a>. All other browsers would move on to the second <code>&lt;source&gt;<\/code>, VP9, a codec supported by <a href=\"https:\/\/caniuse.com\/#feat=webm\">Edge, Firefox, and Chrome<\/a>, gratifyingly bridging the big gaps in H.265 support.<\/p>\n<p>Though both H.265 and VP9 are similar in <a href=\"https:\/\/cloudinary.com\/glossary\/video-compression\">video-compression<\/a> capability, the result varies, depending on the video content, length, <a href=\"https:\/\/cloudinary.com\/glossary\/video-resolutions\">resolution<\/a>, and other factors. Nonetheless, both codecs do a far better job of compression than H.264. Be sure to list them as the first and second choices for the browser, leaving that old standard from 2003, MP4, as the third option for all outlier browsers that support neither H.265 nor VP9.<\/p>\n<div class='c-callout  c-callout--inline-title c-callout--note'><strong class='c-callout__title'>Note:<\/strong> <p>Video optimization: To use modern codecs, leverage Cloudinary\u2019s automatic-format (<code>f_auto<\/code>) feature to automatically identify the viewer\u2019s device and browser, also to adapt the video to the optimal format and codec, as in this transformed version of the dog video:<\/p>\n<p><code>&lt;video src=&quot;https:\/\/res.cloudinary.com\/demo\/video\/upload\/q_auto,f_auto,w_1280,c_limit\/dog.mp4 controls&quot;&gt;<\/code><\/p><\/div>\n<h2>Understand the Determinants for User Experience<\/h2>\n<p>Why mount that effort to change video tags to encompass the list above? Three reasons:<\/p>\n<ul>\n<li>\n<p><strong>File size.<\/strong> The file size of the dog video in each of the codecs is as follows, all delivering the same visual quality:<\/p>\n<ul>\n<li>\n<strong>H.264:<\/strong> 801 KB<\/li>\n<li>\n<strong>VP9:<\/strong> 515 KB<\/li>\n<li>\n<strong>H.265:<\/strong> 436 KB<\/li>\n<\/ul>\n<p>Encoding the video with H.265 or VP9 instead of H.264 yields a significant savings of approximately 300 KB, meaning that you\u2019d deliver the same video quality much faster. Alternatively, you could leverage some of the saved bytes to encode for a higher quality. Of course, the choice is yours. Perhaps do an A\/B test\u2014A for less bandwidth overhead and B for more compelling visuals\u2014and see what your visitors prefer?<\/p>\n<\/li>\n<li>\n<p><strong>The <code>q_auto<\/code> transformation parameter.<\/strong> <code>q_auto<\/code> tells Cloudinary to automatically find and adopt the right balance between quality and file size. Being content aware, the adjustment varies between simple one-shot videos and complex action scenes. You can control that tradeoff by specifying the desired quality according to this syntax: <code>q_auto:<\/code><em>quality<\/em>, where <em>quality<\/em> is <code>best<\/code>, <code>good<\/code>, <code>eco<\/code>, or <code>low<\/code>, e.g., <code>q_auto:best<\/code>.<\/p>\n<\/li>\n<li>\n<p><strong>The <code>w_1280,c_limit<\/code> transformation.<\/strong>  The width (<code>w<\/code>)  parameter tells Cloudinary to resize the video to a width of, in this example, 1,280 px. unless the original is narrower, which is the case of the dog video. That way, you avoid delivering an oversized video, like a 4K-wide footage, which most screens cannot fully display. It\u2019s a good idea to specify a ballpark value, but feel free to change <code>1280<\/code> to whatever you desire.<\/p>\n<\/li>\n<\/ul>\n<h2>Try Out the Optimization Feature<\/h2>\n<p>Do experiment with the HTML markups in the example above. Be sure to replace <code>cloud_name<\/code> with your account\u2019s cloud name and the video\u2019s public ID (<code>public_id<\/code>) with the one that identifies your video. You can then rest assured of the best possible user experience.<\/p>\n<h2>Preview Part 2<\/h2>\n<p><a href=\"https:\/\/cloudinary.com\/blog\/video_optimization_part_ii_adaptive_bitrate_streaming_of_multiple_codecs\">Part 2 of this series<\/a> will describe how adaptive bitrate streaming plays into this topic and recommend the proven ways for optimizing longer-form videos. In the meantime, check out our <a href=\"https:\/\/cloudinary.com\/documentation\/transformation_reference\"><em>Video Transformation Reference Guide<\/em><\/a>.<\/p>\n<hr \/>\n<h2>Want to Learn More About Video Optimization?<\/h2>\n<ul>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/optimizing_video_with_cloudinary_and_the_html5_video_player_part_1\"><em>Optimizing Video with Cloudinary and the HTML5 Video Player<\/em><\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/exoplayer_android_tutorial_easy_video_delivery_and_editing\"><em>ExoPlayer Android Tutorial: Easy Video Delivery and Editing<\/em><\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/how_to_generate_waveform_images_from_audio_files\"><em>How to Generate Waveform Images From Audio Files<\/em><\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/with_automatic_video_subtitles_silence_speaks_volumes\"><em>Auto-Generate Subtitles Based on Video Transcript<\/em><\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/auto_generate_video_previews_with_great_results_every_time\"><em>Automated Generation of Intelligent Video Previews on Cloudinary\u2019s Dynamic Video Platform<\/em><\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/converting_android_videos_to_animated_gif_images_with_cloudinary_a_tutorial\"><em>Converting Android Videos to Animated GIF Images With Cloudinary: A Tutorial<\/em><\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/guides\/marketing-videos\/tips-for-retaining-audience-through-engaging-videos\"><em>Tips for Retaining Audience Through Engaging Videos<\/em><\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/guides\/marketing-videos\/product-videos-101-what-makes-them-great\"><em>Product Videos 101: What Makes Them Great?<\/em><\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/how_to_serve_videos_in_next_js_applications_with_cloudinary\"><em>How to Serve Videos in Next.js Applications With Cloudinary<\/em><\/a>\n<\/li>\n<\/ul>\n<h2>Guides on Performance Testing<\/h2>\n<p>We have authored in-depth guides on three topics that relate to <a href=\"https:\/\/cloudinary.com\/guides\/web-performance\/web-performance-trends-and-insights-from-4-top-performance-experts\">performance testing<\/a>.<\/p>\n<h3><a href=\"https:\/\/cloudinary.com\/blog\/image_optimization_for_websites_beautiful_pages_that_load_quickly\">Image Optimization<\/a><\/h3>\n<p>Images and videos take up most of the page-load time on most websites. To make your website load faster and improve user experience and engagement, be sure to reduce the file size of images without hurting quality.<\/p>\n<p>See these top articles in our <em>Image Optimization Guide<\/em>:<\/p>\n<ul>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/image_optimization_in_php\">PHP Image Compression, Resize, and Optimization<\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/image_optimization_in_python\">Python Image Optimization and Transformation<\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/delivering_all_your_websites_images_through_a_cdn\">CDN for Images &#8211; Optimize and Deliver Images Faster<\/a>\n<\/li>\n<\/ul>\n<h3><a href=\"https:\/\/cloudinary.com\/blog\/image_formats_getting_it_right\">Image Formats<\/a><\/h3>\n<p>Advancements in image- and video-compression techniques have resulted in new formats like WebP and JPEG 2000, which deliver superior quality with a smaller file size. This guide describes traditional image and video formats, the benefits of the modern ones, and how to take advantage of them in your websites and web applications.<\/p>\n<p>See these top articles in our <em>Image Formats Guide<\/em>:<\/p>\n<ul>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/the_great_jpeg_2000_debate_analyzing_the_pros_and_cons_to_widespread_adoption\">The Great JPEG 2000 Debate: Analyzing the Pros and Cons to Widespread Adoption<\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/progressive_jpegs_and_green_martians\">Progressive JPEGs and Green Martians<\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/animated_webp_how_to_convert_animated_gif_to_webp_and_save_up_to_90_bandwidth\">Animated WebP: How to Convert Animated GIF to WebP<\/a>\n<\/li>\n<\/ul>\n<h3><a href=\"https:\/\/cloudinary.com\/products\/media_optimizer\/web-performance-guide\">Web Performance<\/a><\/h3>\n<p>Learn how to build websites and web applications with rich content including videos and images, which also perform well and satisfy users.<\/p>\n<ul>\n<li>\n<a href=\"https:\/\/cloudinary.com\/products\/programmable_media\">Web Performance: Trends and Insights from 4 Top Performance Experts<\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/cloudinary.com\/blog\/compressing_resizing_and_optimizing_videos_in_laravel\">Compressing, Resizing, and Optimizing Videos in Laravel<\/a>\n<\/li>\n<\/ul>\n<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":41,"featured_media":21745,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_cloudinary_featured_overwrite":false,"footnotes":""},"categories":[1],"tags":[25,145,303,305,306,310,311],"class_list":["post-21744","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-asset-management","tag-html5","tag-video","tag-video-api","tag-video-codec","tag-video-player","tag-video-transcoding"],"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>Optimizing Video With Cloudinary and the HTML5 Video Player<\/title>\n<meta name=\"description\" content=\"Cloudinary makes it simple to optimize videos for compression and adoption of the most suitable format: just add two parameters to the video URL\" \/>\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\/optimizing_video_with_cloudinary_and_the_html5_video_player_part_1\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Video Optimization, Part 1: Cloudinary and the HTML5 Video Player\" \/>\n<meta property=\"og:description\" content=\"Cloudinary makes it simple to optimize videos for compression and adoption of the most suitable format: just add two parameters to the video URL\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudinary.com\/blog\/optimizing_video_with_cloudinary_and_the_html5_video_player_part_1\" \/>\n<meta property=\"og:site_name\" content=\"Cloudinary Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-06-11T16:31:25+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-03-09T19:14:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1649718363\/Web_Assets\/blog\/Optimizing-Video\/Optimizing-Video-jpg?_i=AA\" \/>\n\t<meta property=\"og:image:width\" content=\"1540\" \/>\n\t<meta property=\"og:image:height\" content=\"847\" \/>\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\/optimizing_video_with_cloudinary_and_the_html5_video_player_part_1#article\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/optimizing_video_with_cloudinary_and_the_html5_video_player_part_1\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"Video Optimization, Part 1: Cloudinary and the HTML5 Video Player\",\"datePublished\":\"2018-06-11T16:31:25+00:00\",\"dateModified\":\"2025-03-09T19:14:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/optimizing_video_with_cloudinary_and_the_html5_video_player_part_1\"},\"wordCount\":9,\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/optimizing_video_with_cloudinary_and_the_html5_video_player_part_1#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718363\/Web_Assets\/blog\/Optimizing-Video\/Optimizing-Video.jpg?_i=AA\",\"keywords\":[\"Asset Management\",\"HTML5\",\"Video\",\"Video API\",\"Video Codec\",\"Video Player\",\"Video Transcoding\"],\"inLanguage\":\"en-US\",\"copyrightYear\":\"2018\",\"copyrightHolder\":{\"@id\":\"https:\/\/cloudinary.com\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cloudinary.com\/blog\/optimizing_video_with_cloudinary_and_the_html5_video_player_part_1\",\"url\":\"https:\/\/cloudinary.com\/blog\/optimizing_video_with_cloudinary_and_the_html5_video_player_part_1\",\"name\":\"Optimizing Video With Cloudinary and the HTML5 Video Player\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/optimizing_video_with_cloudinary_and_the_html5_video_player_part_1#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/optimizing_video_with_cloudinary_and_the_html5_video_player_part_1#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718363\/Web_Assets\/blog\/Optimizing-Video\/Optimizing-Video.jpg?_i=AA\",\"datePublished\":\"2018-06-11T16:31:25+00:00\",\"dateModified\":\"2025-03-09T19:14:01+00:00\",\"description\":\"Cloudinary makes it simple to optimize videos for compression and adoption of the most suitable format: just add two parameters to the video URL\",\"breadcrumb\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/optimizing_video_with_cloudinary_and_the_html5_video_player_part_1#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cloudinary.com\/blog\/optimizing_video_with_cloudinary_and_the_html5_video_player_part_1\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/optimizing_video_with_cloudinary_and_the_html5_video_player_part_1#primaryimage\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718363\/Web_Assets\/blog\/Optimizing-Video\/Optimizing-Video.jpg?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718363\/Web_Assets\/blog\/Optimizing-Video\/Optimizing-Video.jpg?_i=AA\",\"width\":1540,\"height\":847},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cloudinary.com\/blog\/optimizing_video_with_cloudinary_and_the_html5_video_player_part_1#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cloudinary.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Video Optimization, Part 1: Cloudinary and the HTML5 Video Player\"}]},{\"@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":"Optimizing Video With Cloudinary and the HTML5 Video Player","description":"Cloudinary makes it simple to optimize videos for compression and adoption of the most suitable format: just add two parameters to the video URL","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\/optimizing_video_with_cloudinary_and_the_html5_video_player_part_1","og_locale":"en_US","og_type":"article","og_title":"Video Optimization, Part 1: Cloudinary and the HTML5 Video Player","og_description":"Cloudinary makes it simple to optimize videos for compression and adoption of the most suitable format: just add two parameters to the video URL","og_url":"https:\/\/cloudinary.com\/blog\/optimizing_video_with_cloudinary_and_the_html5_video_player_part_1","og_site_name":"Cloudinary Blog","article_published_time":"2018-06-11T16:31:25+00:00","article_modified_time":"2025-03-09T19:14:01+00:00","og_image":[{"width":1540,"height":847,"url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1649718363\/Web_Assets\/blog\/Optimizing-Video\/Optimizing-Video-jpg?_i=AA","type":"image\/jpeg"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/cloudinary.com\/blog\/optimizing_video_with_cloudinary_and_the_html5_video_player_part_1#article","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/optimizing_video_with_cloudinary_and_the_html5_video_player_part_1"},"author":{"name":"","@id":""},"headline":"Video Optimization, Part 1: Cloudinary and the HTML5 Video Player","datePublished":"2018-06-11T16:31:25+00:00","dateModified":"2025-03-09T19:14:01+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/optimizing_video_with_cloudinary_and_the_html5_video_player_part_1"},"wordCount":9,"publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/optimizing_video_with_cloudinary_and_the_html5_video_player_part_1#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718363\/Web_Assets\/blog\/Optimizing-Video\/Optimizing-Video.jpg?_i=AA","keywords":["Asset Management","HTML5","Video","Video API","Video Codec","Video Player","Video Transcoding"],"inLanguage":"en-US","copyrightYear":"2018","copyrightHolder":{"@id":"https:\/\/cloudinary.com\/#organization"}},{"@type":"WebPage","@id":"https:\/\/cloudinary.com\/blog\/optimizing_video_with_cloudinary_and_the_html5_video_player_part_1","url":"https:\/\/cloudinary.com\/blog\/optimizing_video_with_cloudinary_and_the_html5_video_player_part_1","name":"Optimizing Video With Cloudinary and the HTML5 Video Player","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/optimizing_video_with_cloudinary_and_the_html5_video_player_part_1#primaryimage"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/optimizing_video_with_cloudinary_and_the_html5_video_player_part_1#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718363\/Web_Assets\/blog\/Optimizing-Video\/Optimizing-Video.jpg?_i=AA","datePublished":"2018-06-11T16:31:25+00:00","dateModified":"2025-03-09T19:14:01+00:00","description":"Cloudinary makes it simple to optimize videos for compression and adoption of the most suitable format: just add two parameters to the video URL","breadcrumb":{"@id":"https:\/\/cloudinary.com\/blog\/optimizing_video_with_cloudinary_and_the_html5_video_player_part_1#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudinary.com\/blog\/optimizing_video_with_cloudinary_and_the_html5_video_player_part_1"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/optimizing_video_with_cloudinary_and_the_html5_video_player_part_1#primaryimage","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718363\/Web_Assets\/blog\/Optimizing-Video\/Optimizing-Video.jpg?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718363\/Web_Assets\/blog\/Optimizing-Video\/Optimizing-Video.jpg?_i=AA","width":1540,"height":847},{"@type":"BreadcrumbList","@id":"https:\/\/cloudinary.com\/blog\/optimizing_video_with_cloudinary_and_the_html5_video_player_part_1#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudinary.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Video Optimization, Part 1: Cloudinary and the HTML5 Video Player"}]},{"@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\/v1649718363\/Web_Assets\/blog\/Optimizing-Video\/Optimizing-Video.jpg?_i=AA","_links":{"self":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21744","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=21744"}],"version-history":[{"count":24,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21744\/revisions"}],"predecessor-version":[{"id":37186,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21744\/revisions\/37186"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media\/21745"}],"wp:attachment":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media?parent=21744"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/categories?post=21744"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/tags?post=21744"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}