{"id":22364,"date":"2021-06-08T13:42:38","date_gmt":"2021-06-08T13:42:38","guid":{"rendered":"http:\/\/muted_videos_and_subtitles"},"modified":"2025-02-24T15:10:44","modified_gmt":"2025-02-24T23:10:44","slug":"muted_videos_and_subtitles","status":"publish","type":"post","link":"https:\/\/cloudinary.com\/blog\/muted_videos_and_subtitles","title":{"rendered":"Muted Videos and Subtitles"},"content":{"rendered":"<div class=\"wp-block-cloudinary-markdown \"><p>The bane of our existence is the lack of efficient ways for tackling the plethora of recurring tasks in our lives. One of those tasks is surfing the internet. We consume a lot of web content daily, of which a large percentage are images and videos. We\u2019re constantly quickly scrolling through 30-second videos or checking out pictures of cute items we\u2019d like to buy in our free time.<\/p>\n<p>Some of those videos are in our native language; others are in foreign languages that we don\u2019t understand. Sometimes we still enjoy the latter, however, because of the video\u2019s graphical appeal. Other times, we might want to watch <a href=\"https:\/\/cloudinary.com\/glossary\/muted-attribute\">muted videos<\/a> because of a loud immediate environment or an absence of headsets.<\/p>\n<p>This is part of a series of articles about <a href=\"https:\/\/cloudinary.com\/guides\/web-performance\/video-optimization-why-you-need-it-and-5-critical-best-practices\">video optimization<\/a>.<\/p>\n<h2>The Value of Subtitles<\/h2>\n<p>Subtitles are a superb feature for videos, muted or not.<\/p>\n<p>Have you ever downloaded or watched someone download an <a href=\"https:\/\/cloudinary.com\/glossary\/captions\">SRT<\/a> (<code>.srt<\/code>) file just to have the subtitles show up while watching a movie? As a software developer who builds apps that involve videos, you must inculcate the capacity that enables users to watch subtitles in videos.<\/p>\n<h2>Addition of Subtitles in Videos<\/h2>\n<p>How can you add <a href=\"https:\/\/cloudinary.com\/guides\/video-formats\/what-are-video-subtitles-common-formats-and-best-practices\">video subtitles<\/a>? Just as you can manually download and add SRT files to videos for subtitles, you can programmatically add subtitles to videos with Cloudinary. In fact, you can upload multiple SRT or <a href=\"https:\/\/cloudinary.com\/glossary\/webvtt\">WebVTT<\/a> files to Cloudinary as normal <strong>raw<\/strong> files.<\/p>\n<p>Making the content of those files show up as subtitles on your videos that have <strong>already been uploaded to Cloudinary<\/strong> is as straightforward as overlaying the subtitles on them. See this demo:<\/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;, {overlay: {resource_type: \\&quot;subtitles\\&quot;, public_id: \\&quot;sample_sub_en.srt\\&quot;}})&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.video(\\&quot;dog\\&quot;, {overlay: {resource_type: \\&quot;subtitles\\&quot;, public_id: \\&quot;sample_sub_en.srt\\&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;).overlay(source(subtitles(\\&quot;sample_sub_en.srt\\&quot;)));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryVideo(\\&quot;dog.mp4\\&quot;).overlay(source(subtitles(\\&quot;sample_sub_en.srt\\&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;Transformation overlay={{publicId: \\&quot;sample_sub_en.srt\\&quot;, resourceType: \\&quot;subtitles\\&quot;}} \\\/&gt; &lt;\\\/Video&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;Video publicId=\\&quot;dog\\&quot; &gt;\\n\\t&lt;Transformation overlay={{publicId: \\&quot;sample_sub_en.srt\\&quot;, resourceType: \\&quot;subtitles\\&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;dog.mp4\\&quot;).overlay(source(subtitles(\\&quot;sample_sub_en.srt\\&quot;)));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryVideo(\\&quot;dog.mp4\\&quot;).overlay(source(subtitles(\\&quot;sample_sub_en.srt\\&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-transformation :overlay=\\&quot;{publicId: &#039;sample_sub_en.srt&#039;, resourceType: &#039;subtitles&#039;}\\&quot; \\\/&gt; &lt;\\\/cld-video&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cld-video public-id=\\&quot;dog\\&quot; &gt;\\n\\t&lt;cld-transformation :overlay=\\&quot;{publicId: &#039;sample_sub_en.srt&#039;, resourceType: &#039;subtitles&#039;}\\&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;dog.mp4\\&quot;).overlay(source(subtitles(\\&quot;sample_sub_en.srt\\&quot;)));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryVideo(\\&quot;dog.mp4\\&quot;).overlay(source(subtitles(\\&quot;sample_sub_en.srt\\&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-transformation overlay=\\&quot;subtitles:sample_sub_en.srt\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;\\\/cl-video&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cl-video public-id=\\&quot;dog\\&quot; &gt;\\n\\t&lt;cl-transformation overlay=\\&quot;subtitles:sample_sub_en.srt\\&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;dog.mp4\\&quot;).overlay(source(subtitles(\\&quot;sample_sub_en.srt\\&quot;)));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryVideo(\\&quot;dog.mp4\\&quot;).overlay(source(subtitles(\\&quot;sample_sub_en.srt\\&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;, {overlay: new cloudinary.SubtitlesLayer().publicId(\\&quot;sample_sub_en.srt\\&quot;)}).toHtml();&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.videoTag(&#039;dog&#039;, {overlay: new cloudinary.SubtitlesLayer().publicId(\\&quot;sample_sub_en.srt\\&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;dog\\&quot;).video(overlay={&#039;resource_type&#039;: \\&quot;subtitles\\&quot;, &#039;public_id&#039;: \\&quot;sample_sub_en.srt\\&quot;})&quot;,&quot;codeSnippet&quot;:&quot;CloudinaryVideo(\\&quot;dog\\&quot;).video(overlay={&#039;resource_type&#039;: \\&quot;subtitles\\&quot;, &#039;public_id&#039;: \\&quot;sample_sub_en.srt\\&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;dog.mp4&#039;))\\n\\t-&gt;overlay(Overlay::source(\\n\\tSource::subtitles(\\&quot;sample_sub_en.srt\\&quot;)));&quot;,&quot;codeSnippet&quot;:&quot;(new VideoTag(&#039;dog.mp4&#039;))\\n\\t-&gt;overlay(Overlay::source(\\n\\tSource::subtitles(\\&quot;sample_sub_en.srt\\&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;&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;, array(\\&quot;overlay\\&quot;=&gt;array(\\&quot;resource_type\\&quot;=&gt;\\&quot;subtitles\\&quot;, \\&quot;public_id\\&quot;=&gt;\\&quot;sample_sub_en.srt\\&quot;)))&quot;,&quot;codeSnippet&quot;:&quot;cl_video_tag(\\&quot;dog\\&quot;, array(\\&quot;overlay\\&quot;=&gt;array(\\&quot;resource_type\\&quot;=&gt;\\&quot;subtitles\\&quot;, \\&quot;public_id\\&quot;=&gt;\\&quot;sample_sub_en.srt\\&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().publicId(\\&quot;sample_sub_en.srt\\&quot;))).videoTag(\\&quot;dog\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation().overlay(new SubtitlesLayer().publicId(\\&quot;sample_sub_en.srt\\&quot;))).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;, overlay: {resource_type: \\&quot;subtitles\\&quot;, public_id: \\&quot;sample_sub_en.srt\\&quot;})&quot;,&quot;codeSnippet&quot;:&quot;cl_video_tag(\\&quot;dog\\&quot;, overlay: {resource_type: \\&quot;subtitles\\&quot;, public_id: \\&quot;sample_sub_en.srt\\&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().PublicId(\\&quot;sample_sub_en.srt\\&quot;))).BuildVideoTag(\\&quot;dog\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.Api.UrlVideoUp.Transform(new Transformation().Overlay(new SubtitlesLayer().PublicId(\\&quot;sample_sub_en.srt\\&quot;))).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()\\n\\t.overlay(Overlay.source(\\n\\tSource.subtitles(\\&quot;sample_sub_en.srt\\&quot;))));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.video(&#039;dog.mp4&#039;).transformation(Transformation()\\n\\t.overlay(Overlay.source(\\n\\tSource.subtitles(\\&quot;sample_sub_en.srt\\&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().setOverlay(\\&quot;subtitles:sample_sub_en.srt\\&quot;)).generate(\\&quot;dog.mp4\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.createUrl().setResourceType(\\&quot;video\\&quot;).setTransformation(CLDTransformation().setOverlay(\\&quot;subtitles:sample_sub_en.srt\\&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().overlay(new SubtitlesLayer().publicId(\\&quot;sample_sub_en.srt\\&quot;))).resourceType(\\&quot;video\\&quot;).generate(\\&quot;dog.mp4\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation().overlay(new SubtitlesLayer().publicId(\\&quot;sample_sub_en.srt\\&quot;))).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()\\n\\t.overlay(Overlay.source(\\n\\tSource.subtitles(\\&quot;sample_sub_en.srt\\&quot;))));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.video(&#039;dog.mp4&#039;).transformation(Transformation()\\n\\t.overlay(Overlay.source(\\n\\tSource.subtitles(\\&quot;sample_sub_en.srt\\&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;dog.mp4\\&quot;)\\n\\t overlay(Overlay.source(\\n\\tSource.subtitles(\\&quot;sample_sub_en.srt\\&quot;))) \\n}.generate()&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.video {\\n\\tpublicId(\\&quot;dog.mp4\\&quot;)\\n\\t overlay(Overlay.source(\\n\\tSource.subtitles(\\&quot;sample_sub_en.srt\\&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;, {overlay: new cloudinary.SubtitlesLayer().publicId(\\&quot;sample_sub_en.srt\\&quot;)})&quot;,&quot;codeSnippet&quot;:&quot;$.cloudinary.video(\\&quot;dog\\&quot;, {overlay: new cloudinary.SubtitlesLayer().publicId(\\&quot;sample_sub_en.srt\\&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;).overlay(source(subtitles(\\&quot;sample_sub_en.srt\\&quot;)));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryVideo(\\&quot;dog.mp4\\&quot;).overlay(source(subtitles(\\&quot;sample_sub_en.srt\\&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\\\/l_subtitles:sample_sub_en.srt\\\/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;overlay&quot;:&quot;subtitles:sample_sub_en.srt&quot;}],&quot;transformation_string&quot;:&quot;l_subtitles:sample_sub_en.srt&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\/l_subtitles:sample_sub_en.srt\/dog.jpg\"\n      \n    >\n      <source src=\"https:\/\/res.cloudinary.com\/demo\/video\/upload\/l_subtitles:sample_sub_en.srt\/vc_h265\/dog.mp4\" type=\"video\/mp4; codecs=hevc\">\n<source src=\"https:\/\/res.cloudinary.com\/demo\/video\/upload\/l_subtitles:sample_sub_en.srt\/vc_vp9\/dog.webm\" type=\"video\/webm; codecs=vp9\">\n<source src=\"https:\/\/res.cloudinary.com\/demo\/video\/upload\/l_subtitles:sample_sub_en.srt\/vc_auto\/dog.mp4\" type=\"video\/mp4\">\n<source src=\"https:\/\/res.cloudinary.com\/demo\/video\/upload\/l_subtitles:sample_sub_en.srt\/vc_auto\/dog.webm\" type=\"video\/webm\">\n    <\/video><\/p>\n<p>Simply specify the overlay parameter <code>l_subtitles<\/code>, followed by the public ID of the <a href=\"https:\/\/cloudinary.com\/glossary\/raw-file\">raw file<\/a> and its extension. That syntax works in the URL transformation as shown above.<\/p>\n<p>Programmatically, you can code it this way:<\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css shcb-wrap-lines\"><span class=\"hljs-selector-tag\">cloudinary<\/span><span class=\"hljs-selector-class\">.video<\/span>(\"<span class=\"hljs-selector-tag\">dog<\/span>\", {<span class=\"hljs-attribute\">overlay<\/span>: {resource_type: <span class=\"hljs-string\">\"subtitles\"<\/span>, public_id: <span class=\"hljs-string\">\"sample_sub_en.srt\"<\/span>}})\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n<p><em>Node.js<\/em><\/p>\n<p>Furthermore, you can customize the way subtitles appear in the video: the color, appearance, font, etc. For example, here\u2019s how to make subtitles yellow in color with a red background and a larger font:<\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css shcb-wrap-lines\"><span class=\"hljs-selector-tag\">cloudinary<\/span><span class=\"hljs-selector-class\">.video<\/span>(\"<span class=\"hljs-selector-tag\">dog<\/span>\", {<span class=\"hljs-attribute\">overlay<\/span>: {font_family: <span class=\"hljs-string\">\"arial\"<\/span>, font_size: <span class=\"hljs-number\">100<\/span>, resource_type: <span class=\"hljs-string\">\"subtitles\"<\/span>, public_id: <span class=\"hljs-string\">\"sample_sub_en.srt\"<\/span>}, <span class=\"hljs-selector-tag\">color<\/span>: \"<span class=\"hljs-selector-id\">#ffff00<\/span>\", <span class=\"hljs-selector-tag\">background<\/span>: \"<span class=\"hljs-selector-tag\">red<\/span>\"})\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n<p><em>Node.js<\/em><\/p>\n<h2>Generation of Transcripts and Subtitles for Videos<\/h2>\n<p>Another important step is to generate transcripts for your videos on the fly. If your platform contains a lot of user-generated video content, you cannot count on your users to also upload the SRT files for the videos they upload. Instead, your users depend on your platform to generate subtitles for their content. For instance, social-media users with numerous followers would expect that the app can and would generate subtitles for their uploaded videos and that, as soon as they turn on the subtitle feature, followers can immediately view the subtitles.<\/p>\n<p>Cloudinary\u2019s <a href=\"https:\/\/cloudinary.com\/addons#google_speech\">Google Video Transcript add-on<\/a> enables you to automate the generation of speech-to-text transcripts of user-generated videos that have been uploaded to your site. For the best possible speech-recognition results, the add-on, which can translate videos in almost any <a href=\"https:\/\/cloud.google.com\/speech-to-text\/docs\/languages\">language<\/a>, applies powerful neural-network models to videos with Google\u2019s <a href=\"https:\/\/cloud.google.com\/speech\/\">Cloud Speech API<\/a>.<\/p>\n<p>After a transcript becomes available, you can do the following:<\/p>\n<ol>\n<li>Automatically insert the transcript into your video in the form of subtitles.<\/li>\n<li>Parse the content of the transcript and display it on a webpage. That way, users can skim the content instead of watching the videos. This approach is extremely popular on learning platforms.<\/li>\n<\/ol>\n<p><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/image\/upload\/w_600,c_fill,f_auto,q_auto,dpr_2.0\/Web_Assets\/blog\/subtitle-demo.png\" alt=\"suptitle demo\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"1200\" height=\"448\"\/><\/p>\n<p>Here\u2019s the code for generating transcripts:<\/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.v2.uploader.upload(<span class=\"hljs-string\">\"learning_javascript.mp4\"<\/span>, \n  { <span class=\"hljs-attr\">resource_type<\/span>: <span class=\"hljs-string\">\"video\"<\/span>, \n    <span class=\"hljs-attr\">raw_convert<\/span>: <span class=\"hljs-string\">\"google_speech\"<\/span> },\n  <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span>(<span class=\"hljs-params\">error, result<\/span>) <\/span>{<span class=\"hljs-built_in\">console<\/span>.log(result, error) });\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><em>Node.js<\/em><\/p>\n<p>Once generation is complete, the add-on creates a new file with a <code>.transcript<\/code> extension in your Cloudinary account with the same public ID as your video file.<\/p>\n<div class='c-callout  c-callout--inline-title c-callout--note'><strong class='c-callout__title'>Note:<\/strong> <p>If you include the  <code>notification_url<\/code> parameter in your method call, the URL you specify receives a notification once the generation process concludes.<\/p><\/div>\n<p><strong>Depending on the size of the video file, the process might take a while.<\/strong><\/p>\n<p>You might wonder, \u201cWhy a <code>.transcript<\/code> file? Why not a <code>.srt<\/code> or <code>.vtt<\/code> file?\u201d Well, you do have the option to have Cloudinary generate a <code>.srt<\/code> and a <code>.vtt<\/code> file. Just specify your preference, like this:<\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript shcb-wrap-lines\">cloudinary.v2.uploader.upload(<span class=\"hljs-string\">\"learning_javascript.mp4\"<\/span>, \n  { <span class=\"hljs-attr\">resource_type<\/span>: <span class=\"hljs-string\">\"video\"<\/span>, \n    <span class=\"hljs-attr\">raw_convert<\/span>: <span class=\"hljs-string\">\"google_speech:srt:vtt\"<\/span> },\n  <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span>(<span class=\"hljs-params\">error, result<\/span>) <\/span>{<span class=\"hljs-built_in\">console<\/span>.log(result, error) });\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><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><em>Node.js<\/em><\/p>\n<p>When the process is complete, the add-on automatically uploads these three generated files to your account:<\/p>\n<pre class=\"js-syntax-highlighted\"><code>...\/raw\/upload\/learning_javascript.transcript\n...\/raw\/upload\/learning_javascript.srt\n...\/raw\/upload\/learning_javascript.vtt\n<\/code><\/pre>\n<h2>Display of Generated Transcripts and Subtitles on Videos<\/h2>\n<p>The final step is to display the generated transcripts and subtitles on the video for delivery. It\u2019s as simple as programmatically overlaying the files on the video, like this:<\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css shcb-wrap-lines\"><span class=\"hljs-selector-tag\">cloudinary<\/span><span class=\"hljs-selector-class\">.video<\/span>(\"<span class=\"hljs-selector-tag\">learning_javascript<\/span>\", {<span class=\"hljs-attribute\">overlay<\/span>: {resource_type: <span class=\"hljs-string\">\"subtitles\"<\/span>, public_id: <span class=\"hljs-string\">\"learning_javascript.transcript\"<\/span>}})\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n<p><em>Node.js<\/em><\/p>\n<p>The URL reads\u2014<\/p>\n<p><code>https:\/\/res.cloudinary.com\/demo\/video\/upload\/l_subtitles:learning_javascript.transcript\/learning_javascript.mp4<\/code><\/p>\n<h2>References<\/h2>\n<p>Below are additional references:<\/p>\n<ul>\n<li>An excellent article by <a href=\"https:\/\/cloudinary.com\/blog\/author\/jackie_rosenzveig\">Jackie Rosenzvieg<\/a> on <a href=\"https:\/\/cloudinary.com\/blog\/with_automatic_video_subtitles_silence_speaks_volumes\">auto-generating subtitles based on video transcript<\/a>\n<\/li>\n<li>Cloudinary\u2019s documentation on the many <a href=\"https:\/\/cloudinary.com\/documentation\/video_manipulation_and_delivery\">options for video transcoding and transformation<\/a>\n<\/li>\n<li>Documentation on the <a href=\"https:\/\/cloudinary.com\/documentation\/cloudinary_video_player#video_player_features\">Cloudinary Video Player<\/a>\n<\/li>\n<\/ul>\n<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":41,"featured_media":22365,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_cloudinary_featured_overwrite":false,"footnotes":""},"categories":[1],"tags":[25,303,305],"class_list":["post-22364","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-asset-management","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>Muted Videos and Subtitles<\/title>\n<meta name=\"description\" content=\"How to automatically add subtitles to and generate transcripts for videos as overlays with Cloudinary&#039;s Google Video Transcript add-on.\" \/>\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\/muted_videos_and_subtitles\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Muted Videos and Subtitles\" \/>\n<meta property=\"og:description\" content=\"How to automatically add subtitles to and generate transcripts for videos as overlays with Cloudinary&#039;s Google Video Transcript add-on.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudinary.com\/blog\/muted_videos_and_subtitles\" \/>\n<meta property=\"og:site_name\" content=\"Cloudinary Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-06-08T13:42:38+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-02-24T23:10:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1649719109\/Web_Assets\/blog\/muted-video-subtitles_22365445c1\/muted-video-subtitles_22365445c1-png?_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\/png\" \/>\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\/muted_videos_and_subtitles#article\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/muted_videos_and_subtitles\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"Muted Videos and Subtitles\",\"datePublished\":\"2021-06-08T13:42:38+00:00\",\"dateModified\":\"2025-02-24T23:10:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/muted_videos_and_subtitles\"},\"wordCount\":4,\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/muted_videos_and_subtitles#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649719109\/Web_Assets\/blog\/muted-video-subtitles_22365445c1\/muted-video-subtitles_22365445c1.png?_i=AA\",\"keywords\":[\"Asset Management\",\"Video\",\"Video API\"],\"inLanguage\":\"en-US\",\"copyrightYear\":\"2021\",\"copyrightHolder\":{\"@id\":\"https:\/\/cloudinary.com\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cloudinary.com\/blog\/muted_videos_and_subtitles\",\"url\":\"https:\/\/cloudinary.com\/blog\/muted_videos_and_subtitles\",\"name\":\"Muted Videos and Subtitles\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/muted_videos_and_subtitles#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/muted_videos_and_subtitles#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649719109\/Web_Assets\/blog\/muted-video-subtitles_22365445c1\/muted-video-subtitles_22365445c1.png?_i=AA\",\"datePublished\":\"2021-06-08T13:42:38+00:00\",\"dateModified\":\"2025-02-24T23:10:44+00:00\",\"description\":\"How to automatically add subtitles to and generate transcripts for videos as overlays with Cloudinary's Google Video Transcript add-on.\",\"breadcrumb\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/muted_videos_and_subtitles#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cloudinary.com\/blog\/muted_videos_and_subtitles\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/muted_videos_and_subtitles#primaryimage\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649719109\/Web_Assets\/blog\/muted-video-subtitles_22365445c1\/muted-video-subtitles_22365445c1.png?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649719109\/Web_Assets\/blog\/muted-video-subtitles_22365445c1\/muted-video-subtitles_22365445c1.png?_i=AA\",\"width\":1540,\"height\":847},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cloudinary.com\/blog\/muted_videos_and_subtitles#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cloudinary.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Muted Videos and Subtitles\"}]},{\"@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":"Muted Videos and Subtitles","description":"How to automatically add subtitles to and generate transcripts for videos as overlays with Cloudinary's Google Video Transcript add-on.","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\/muted_videos_and_subtitles","og_locale":"en_US","og_type":"article","og_title":"Muted Videos and Subtitles","og_description":"How to automatically add subtitles to and generate transcripts for videos as overlays with Cloudinary's Google Video Transcript add-on.","og_url":"https:\/\/cloudinary.com\/blog\/muted_videos_and_subtitles","og_site_name":"Cloudinary Blog","article_published_time":"2021-06-08T13:42:38+00:00","article_modified_time":"2025-02-24T23:10:44+00:00","og_image":[{"width":1540,"height":847,"url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1649719109\/Web_Assets\/blog\/muted-video-subtitles_22365445c1\/muted-video-subtitles_22365445c1-png?_i=AA","type":"image\/png"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/cloudinary.com\/blog\/muted_videos_and_subtitles#article","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/muted_videos_and_subtitles"},"author":{"name":"","@id":""},"headline":"Muted Videos and Subtitles","datePublished":"2021-06-08T13:42:38+00:00","dateModified":"2025-02-24T23:10:44+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/muted_videos_and_subtitles"},"wordCount":4,"publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/muted_videos_and_subtitles#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649719109\/Web_Assets\/blog\/muted-video-subtitles_22365445c1\/muted-video-subtitles_22365445c1.png?_i=AA","keywords":["Asset Management","Video","Video API"],"inLanguage":"en-US","copyrightYear":"2021","copyrightHolder":{"@id":"https:\/\/cloudinary.com\/#organization"}},{"@type":"WebPage","@id":"https:\/\/cloudinary.com\/blog\/muted_videos_and_subtitles","url":"https:\/\/cloudinary.com\/blog\/muted_videos_and_subtitles","name":"Muted Videos and Subtitles","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/muted_videos_and_subtitles#primaryimage"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/muted_videos_and_subtitles#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649719109\/Web_Assets\/blog\/muted-video-subtitles_22365445c1\/muted-video-subtitles_22365445c1.png?_i=AA","datePublished":"2021-06-08T13:42:38+00:00","dateModified":"2025-02-24T23:10:44+00:00","description":"How to automatically add subtitles to and generate transcripts for videos as overlays with Cloudinary's Google Video Transcript add-on.","breadcrumb":{"@id":"https:\/\/cloudinary.com\/blog\/muted_videos_and_subtitles#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudinary.com\/blog\/muted_videos_and_subtitles"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/muted_videos_and_subtitles#primaryimage","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649719109\/Web_Assets\/blog\/muted-video-subtitles_22365445c1\/muted-video-subtitles_22365445c1.png?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649719109\/Web_Assets\/blog\/muted-video-subtitles_22365445c1\/muted-video-subtitles_22365445c1.png?_i=AA","width":1540,"height":847},{"@type":"BreadcrumbList","@id":"https:\/\/cloudinary.com\/blog\/muted_videos_and_subtitles#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudinary.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Muted Videos and Subtitles"}]},{"@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\/v1649719109\/Web_Assets\/blog\/muted-video-subtitles_22365445c1\/muted-video-subtitles_22365445c1.png?_i=AA","_links":{"self":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/22364","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=22364"}],"version-history":[{"count":12,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/22364\/revisions"}],"predecessor-version":[{"id":36996,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/22364\/revisions\/36996"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media\/22365"}],"wp:attachment":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media?parent=22364"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/categories?post=22364"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/tags?post=22364"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}