{"id":21315,"date":"2020-05-10T10:35:00","date_gmt":"2020-05-10T10:35:00","guid":{"rendered":"http:\/\/how_to_generate_waveform_images_from_audio_files"},"modified":"2025-11-06T16:47:59","modified_gmt":"2025-11-07T00:47:59","slug":"how_to_generate_waveform_images_from_audio_files","status":"publish","type":"post","link":"https:\/\/cloudinary.com\/blog\/how_to_generate_waveform_images_from_audio_files","title":{"rendered":"Waveform Image Generator | How to Convert Audio to Waveform Image"},"content":{"rendered":"<div class=\"wp-block-cloudinary-markdown \"><p>Nowadays, users can and often upload various media files to social networks, websites, and messaging apps. Most of those media are images and <a href=\"https:\/\/cloudinary.com\/blog\/optimizing_video_with_cloudinary_and_the_html5_video_player_part_1\">videos<\/a>, with a significant number being audio files. Subsequently, to create a thumbnail to depict an image, a site or app would crop and then resize it to scale. To depict a video, they would convert, crop, and resize a single frame from it as a thumbnail.<\/p>\n<p>But how do you portray audio? An ideal way is with a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Waveform\">waveform<\/a> image, aka soundwave image, which, as a visual representation of audio, is displayed as a graph of the sound amplitude against time.<\/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>Creating Waveform Images With the Cloudinary Waveform Image Generator<\/h2>\n<p>Cloudinary\u2019s media management capabilities enable you to upload, transform, and manage media, including images, videos, and audio. You can create waveform thumbnails, on the fly, for audio just as easily as you can for images and videos, and then fine-tune the thumbnails to match the graphic design and responsive layouts of all devices and browsers. You do all that through Cloudinary\u2019s dynamic URLs with no need for other software. In fact, Cloudinary is a superb waveform generator.<\/p>\n<p>Creating a waveform image for an audio file you\u2019ve <a href=\"https:\/\/cloudinary.com\/documentation\/upload_images\">uploaded to your Cloudinary account<\/a> takes only two steps:<\/p>\n<ol>\n<li>Change the file extension (format) of the audio\u2019s delivery URL on Cloudinary to an image-centric format, such as PNG.<\/li>\n<li>Enable the <code>waveform<\/code> flag by adding <code>fl_waveform<\/code> to the URL.<\/li>\n<\/ol>\n<p>By default, Cloudinary delivers the generated waveform image with a high resolution, saving you the manual step of scaling it down.<\/p>\n<p>Below is an example of a PNG waveform image of an audio file called <code>bumblebee.mp3<\/code>, which has been <a href=\"https:\/\/cloudinary.com\/blog\/automating_file_upload_and_sharing\">uploaded<\/a> to Cloudinary\u2019s demo account, scaled to a height of 200 pixels and a width of 500 pixels:<\/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.image(\\&quot;bumblebee.png\\&quot;, {height: 200, width: 500, flags: \\&quot;waveform\\&quot;, resource_type: \\&quot;video\\&quot;})&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(\\&quot;bumblebee.png\\&quot;, {height: 200, width: 500, flags: \\&quot;waveform\\&quot;, resource_type: \\&quot;video\\&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 CloudinaryImage(\\&quot;bumblebee.png\\&quot;)\\n  .addTransformation(\\&quot;h_200,w_500,fl_waveform\\&quot;)\\n  .setAssetType(\\&quot;video\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;bumblebee.png\\&quot;)\\n  .addTransformation(\\&quot;h_200,w_500,fl_waveform\\&quot;)\\n  .setAssetType(\\&quot;video\\&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;bumblebee.png\\&quot; resourceType=\\&quot;video\\&quot;&gt; &lt;Transformation height=\\&quot;200\\&quot; width=\\&quot;500\\&quot; flags=\\&quot;waveform\\&quot; \\\/&gt; &lt;\\\/Video&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;Video publicId=\\&quot;bumblebee.png\\&quot; resourceType=\\&quot;video\\&quot;&gt;\\n\\t&lt;Transformation height=\\&quot;200\\&quot; width=\\&quot;500\\&quot; flags=\\&quot;waveform\\&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 CloudinaryImage(\\&quot;bumblebee.png\\&quot;)\\n  .addTransformation(\\&quot;h_200,w_500,fl_waveform\\&quot;)\\n  .setAssetType(\\&quot;video\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;bumblebee.png\\&quot;)\\n  .addTransformation(\\&quot;h_200,w_500,fl_waveform\\&quot;)\\n  .setAssetType(\\&quot;video\\&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;bumblebee.png\\&quot; resource-type=\\&quot;video\\&quot;&gt; &lt;cld-transformation height=\\&quot;200\\&quot; width=\\&quot;500\\&quot; flags=\\&quot;waveform\\&quot; \\\/&gt; &lt;\\\/cld-video&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cld-video public-id=\\&quot;bumblebee.png\\&quot; resource-type=\\&quot;video\\&quot;&gt;\\n\\t&lt;cld-transformation height=\\&quot;200\\&quot; width=\\&quot;500\\&quot; flags=\\&quot;waveform\\&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 CloudinaryImage(\\&quot;bumblebee.png\\&quot;)\\n  .addTransformation(\\&quot;h_200,w_500,fl_waveform\\&quot;)\\n  .setAssetType(\\&quot;video\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;bumblebee.png\\&quot;)\\n  .addTransformation(\\&quot;h_200,w_500,fl_waveform\\&quot;)\\n  .setAssetType(\\&quot;video\\&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;bumblebee.png\\&quot; resource-type=\\&quot;video\\&quot;&gt; &lt;cl-transformation height=\\&quot;200\\&quot; width=\\&quot;500\\&quot; flags=\\&quot;waveform\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;\\\/cl-video&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cl-video public-id=\\&quot;bumblebee.png\\&quot; resource-type=\\&quot;video\\&quot;&gt;\\n\\t&lt;cl-transformation height=\\&quot;200\\&quot; width=\\&quot;500\\&quot; flags=\\&quot;waveform\\&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 CloudinaryImage(\\&quot;bumblebee.png\\&quot;)\\n  .addTransformation(\\&quot;h_200,w_500,fl_waveform\\&quot;)\\n  .setAssetType(\\&quot;video\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;bumblebee.png\\&quot;)\\n  .addTransformation(\\&quot;h_200,w_500,fl_waveform\\&quot;)\\n  .setAssetType(\\&quot;video\\&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;bumblebee.png&#039;, {height: 200, width: 500, flags: \\&quot;waveform\\&quot;}).toHtml();&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.videoTag(&#039;bumblebee.png&#039;, {height: 200, width: 500, flags: \\&quot;waveform\\&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;bumblebee.png\\&quot;).image(height=200, width=500, flags=\\&quot;waveform\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;CloudinaryVideo(\\&quot;bumblebee.png\\&quot;).image(height=200, width=500, flags=\\&quot;waveform\\&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 ImageTag(&#039;bumblebee.png&#039;))\\n\\t-&gt;resize(Resize::scale()-&gt;width(500)\\n-&gt;height(200))\\n\\t-&gt;addFlag(\\n\\tFlag::waveform())\\n\\t-&gt;assetType(\\&quot;video\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;(new ImageTag(&#039;bumblebee.png&#039;))\\n\\t-&gt;resize(Resize::scale()-&gt;width(500)\\n-&gt;height(200))\\n\\t-&gt;addFlag(\\n\\tFlag::waveform())\\n\\t-&gt;assetType(\\&quot;video\\&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_image_tag(\\&quot;bumblebee.png\\&quot;, array(\\&quot;height\\&quot;=&gt;200, \\&quot;width\\&quot;=&gt;500, \\&quot;flags\\&quot;=&gt;\\&quot;waveform\\&quot;, \\&quot;resource_type\\&quot;=&gt;\\&quot;video\\&quot;))&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;bumblebee.png\\&quot;, array(\\&quot;height\\&quot;=&gt;200, \\&quot;width\\&quot;=&gt;500, \\&quot;flags\\&quot;=&gt;\\&quot;waveform\\&quot;, \\&quot;resource_type\\&quot;=&gt;\\&quot;video\\&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().height(200).width(500).flags(\\&quot;waveform\\&quot;)).resourceType(\\&quot;video\\&quot;).imageTag(\\&quot;bumblebee.png\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation().height(200).width(500).flags(\\&quot;waveform\\&quot;)).resourceType(\\&quot;video\\&quot;).imageTag(\\&quot;bumblebee.png\\&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_image_tag(\\&quot;bumblebee.png\\&quot;, height: 200, width: 500, flags: \\&quot;waveform\\&quot;, resource_type: \\&quot;video\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;bumblebee.png\\&quot;, height: 200, width: 500, flags: \\&quot;waveform\\&quot;, resource_type: \\&quot;video\\&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().Height(200).Width(500).Flags(\\&quot;waveform\\&quot;)).BuildImageTag(\\&quot;bumblebee.png\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.Api.UrlVideoUp.Transform(new Transformation().Height(200).Width(500).Flags(\\&quot;waveform\\&quot;)).BuildImageTag(\\&quot;bumblebee.png\\&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.image(&#039;bumblebee.png&#039;).transformation(Transformation()\\n\\t.addTransformation(\\&quot;h_200,w_500,fl_waveform\\&quot;)\\n\\t.setAssetType(\\&quot;video\\&quot;));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;bumblebee.png&#039;).transformation(Transformation()\\n\\t.addTransformation(\\&quot;h_200,w_500,fl_waveform\\&quot;)\\n\\t.setAssetType(\\&quot;video\\&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().setHeight(200).setWidth(500).setFlags(\\&quot;waveform\\&quot;)).generate(\\&quot;bumblebee.png\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.createUrl().setResourceType(\\&quot;video\\&quot;).setTransformation(CLDTransformation().setHeight(200).setWidth(500).setFlags(\\&quot;waveform\\&quot;)).generate(\\&quot;bumblebee.png\\&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().height(200).width(500).flags(\\&quot;waveform\\&quot;)).resourceType(\\&quot;video\\&quot;).generate(\\&quot;bumblebee.png\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation().height(200).width(500).flags(\\&quot;waveform\\&quot;)).resourceType(\\&quot;video\\&quot;).generate(\\&quot;bumblebee.png\\&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.image(&#039;bumblebee.png&#039;).transformation(Transformation()\\n\\t.addTransformation(\\&quot;h_200,w_500,fl_waveform\\&quot;)\\n\\t.setAssetType(\\&quot;video\\&quot;));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;bumblebee.png&#039;).transformation(Transformation()\\n\\t.addTransformation(\\&quot;h_200,w_500,fl_waveform\\&quot;)\\n\\t.setAssetType(\\&quot;video\\&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.image {\\n\\tpublicId(\\&quot;bumblebee.png\\&quot;)\\n\\t resize(Resize.scale() { width(500)\\n height(200) })\\n\\t addFlag(\\n\\tFlag.waveform())\\n\\t assetType(\\&quot;video\\&quot;) \\n}.generate()&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;bumblebee.png\\&quot;)\\n\\t resize(Resize.scale() { width(500)\\n height(200) })\\n\\t addFlag(\\n\\tFlag.waveform())\\n\\t assetType(\\&quot;video\\&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.image(\\&quot;bumblebee.png\\&quot;, {height: 200, width: 500, flags: \\&quot;waveform\\&quot;, resource_type: \\&quot;video\\&quot;})&quot;,&quot;codeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;bumblebee.png\\&quot;, {height: 200, width: 500, flags: \\&quot;waveform\\&quot;, resource_type: \\&quot;video\\&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 CloudinaryImage(\\&quot;bumblebee.png\\&quot;)\\n  .addTransformation(\\&quot;h_200,w_500,fl_waveform\\&quot;)\\n  .setAssetType(\\&quot;video\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;bumblebee.png\\&quot;)\\n  .addTransformation(\\&quot;h_200,w_500,fl_waveform\\&quot;)\\n  .setAssetType(\\&quot;video\\&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\\\/h_200,w_500,fl_waveform\\\/bumblebee.png&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;height&quot;:&quot;200&quot;,&quot;width&quot;:&quot;500&quot;,&quot;flags&quot;:&quot;waveform&quot;}],&quot;transformation_string&quot;:&quot;h_200,w_500,fl_waveform&quot;,&quot;url_suffix&quot;:&quot;&quot;,&quot;version&quot;:&quot;&quot;,&quot;secure&quot;:true,&quot;public_id&quot;:&quot;bumblebee.png&quot;,&quot;extension&quot;:&quot;png&quot;,&quot;format&quot;:&quot;png&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;image&quot;}\"\n      with-url=\"true\"\n    >\n      <span class=\"u-visually-hidden\">Loading code examples<\/span>\n    <\/cld-code-widget><a class=\"c-image-link\" href=\"https:\/\/res.cloudinary.com\/demo\/video\/upload\/h_200,w_500,fl_waveform\/bumblebee.png\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/video\/upload\/h_200,w_500,fl_waveform\/bumblebee.png\" alt=\"Image of a black and white waveform image produced with the Cloudinary waveform image generator\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"500\" height=\"200\"\/><\/a><\/p>\n<p>You can also extract and transform audio to waveform image from a video\u2019s audio track in the same way: simply change the file extension of the video\u2019s Cloudinary URL to an image format like PNG and then add <code>fl_waveform<\/code> to the URL.<\/p>\n<h2>Customizing Waveform Images<\/h2>\n<p>You can tailor the characteristics of generated waveform images, too:<\/p>\n<ul>\n<li>\n<p><strong>Colors.<\/strong> Add the <code>co<\/code> (color) parameter to the URL to set the waveform color, whose default is <code>white<\/code> (white). To change the default background color, which is black, add the <code>b<\/code> (background) parameter to the URL.<\/p>\n<p>Below is the same PNG waveform image with a waveform in black on a white background::<\/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.image(\\&quot;bumblebee.png\\&quot;, {height: 200, width: 500, flags: \\&quot;waveform\\&quot;, color: \\&quot;black\\&quot;, background: \\&quot;white\\&quot;, resource_type: \\&quot;video\\&quot;})&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(\\&quot;bumblebee.png\\&quot;, {height: 200, width: 500, flags: \\&quot;waveform\\&quot;, color: \\&quot;black\\&quot;, background: \\&quot;white\\&quot;, resource_type: \\&quot;video\\&quot;})&quot;,&quot;status&quot;:51,&quot;statusText&quot;:&quot;Ruby code_generator_failed_unexpectedly&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 CloudinaryImage(\\&quot;bumblebee.png\\&quot;)\\n  .addTransformation(\\&quot;h_200,w_500,fl_waveform,co_black,b_white\\&quot;)\\n  .setAssetType(\\&quot;video\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;bumblebee.png\\&quot;)\\n  .addTransformation(\\&quot;h_200,w_500,fl_waveform,co_black,b_white\\&quot;)\\n  .setAssetType(\\&quot;video\\&quot;);&quot;,&quot;status&quot;:50,&quot;statusText&quot;:&quot;Ruby action_generator_failed_unexpectedly&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;bumblebee.png\\&quot; resourceType=\\&quot;video\\&quot;&gt; &lt;Transformation height=\\&quot;200\\&quot; width=\\&quot;500\\&quot; flags=\\&quot;waveform\\&quot; color=\\&quot;black\\&quot; background=\\&quot;white\\&quot; \\\/&gt; &lt;\\\/Video&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;Video publicId=\\&quot;bumblebee.png\\&quot; resourceType=\\&quot;video\\&quot;&gt;\\n\\t&lt;Transformation height=\\&quot;200\\&quot; width=\\&quot;500\\&quot; flags=\\&quot;waveform\\&quot; color=\\&quot;black\\&quot; background=\\&quot;white\\&quot; \\\/&gt;\\n&lt;\\\/Video&gt;&quot;,&quot;status&quot;:51,&quot;statusText&quot;:&quot;Ruby code_generator_failed_unexpectedly&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 CloudinaryImage(\\&quot;bumblebee.png\\&quot;)\\n  .addTransformation(\\&quot;h_200,w_500,fl_waveform,co_black,b_white\\&quot;)\\n  .setAssetType(\\&quot;video\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;bumblebee.png\\&quot;)\\n  .addTransformation(\\&quot;h_200,w_500,fl_waveform,co_black,b_white\\&quot;)\\n  .setAssetType(\\&quot;video\\&quot;);&quot;,&quot;status&quot;:50,&quot;statusText&quot;:&quot;Ruby action_generator_failed_unexpectedly&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;bumblebee.png\\&quot; resource-type=\\&quot;video\\&quot;&gt; &lt;cld-transformation height=\\&quot;200\\&quot; width=\\&quot;500\\&quot; flags=\\&quot;waveform\\&quot; color=\\&quot;black\\&quot; background=\\&quot;white\\&quot; \\\/&gt; &lt;\\\/cld-video&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cld-video public-id=\\&quot;bumblebee.png\\&quot; resource-type=\\&quot;video\\&quot;&gt;\\n\\t&lt;cld-transformation height=\\&quot;200\\&quot; width=\\&quot;500\\&quot; flags=\\&quot;waveform\\&quot; color=\\&quot;black\\&quot; background=\\&quot;white\\&quot; \\\/&gt;\\n&lt;\\\/cld-video&gt;&quot;,&quot;status&quot;:51,&quot;statusText&quot;:&quot;Ruby code_generator_failed_unexpectedly&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 CloudinaryImage(\\&quot;bumblebee.png\\&quot;)\\n  .addTransformation(\\&quot;h_200,w_500,fl_waveform,co_black,b_white\\&quot;)\\n  .setAssetType(\\&quot;video\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;bumblebee.png\\&quot;)\\n  .addTransformation(\\&quot;h_200,w_500,fl_waveform,co_black,b_white\\&quot;)\\n  .setAssetType(\\&quot;video\\&quot;);&quot;,&quot;status&quot;:50,&quot;statusText&quot;:&quot;Ruby action_generator_failed_unexpectedly&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;bumblebee.png\\&quot; resource-type=\\&quot;video\\&quot;&gt; &lt;cl-transformation height=\\&quot;200\\&quot; width=\\&quot;500\\&quot; flags=\\&quot;waveform\\&quot; color=\\&quot;black\\&quot; background=\\&quot;white\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;\\\/cl-video&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cl-video public-id=\\&quot;bumblebee.png\\&quot; resource-type=\\&quot;video\\&quot;&gt;\\n\\t&lt;cl-transformation height=\\&quot;200\\&quot; width=\\&quot;500\\&quot; flags=\\&quot;waveform\\&quot; color=\\&quot;black\\&quot; background=\\&quot;white\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n&lt;\\\/cl-video&gt;&quot;,&quot;status&quot;:51,&quot;statusText&quot;:&quot;Ruby code_generator_failed_unexpectedly&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 CloudinaryImage(\\&quot;bumblebee.png\\&quot;)\\n  .addTransformation(\\&quot;h_200,w_500,fl_waveform,co_black,b_white\\&quot;)\\n  .setAssetType(\\&quot;video\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;bumblebee.png\\&quot;)\\n  .addTransformation(\\&quot;h_200,w_500,fl_waveform,co_black,b_white\\&quot;)\\n  .setAssetType(\\&quot;video\\&quot;);&quot;,&quot;status&quot;:50,&quot;statusText&quot;:&quot;Ruby action_generator_failed_unexpectedly&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;bumblebee.png&#039;, {height: 200, width: 500, flags: \\&quot;waveform\\&quot;, color: \\&quot;black\\&quot;, background: \\&quot;white\\&quot;}).toHtml();&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.videoTag(&#039;bumblebee.png&#039;, {height: 200, width: 500, flags: \\&quot;waveform\\&quot;, color: \\&quot;black\\&quot;, background: \\&quot;white\\&quot;}).toHtml();&quot;,&quot;status&quot;:51,&quot;statusText&quot;:&quot;Ruby code_generator_failed_unexpectedly&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;bumblebee.png\\&quot;).image(height=200, width=500, flags=\\&quot;waveform\\&quot;, color=\\&quot;black\\&quot;, background=\\&quot;white\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;CloudinaryVideo(\\&quot;bumblebee.png\\&quot;).image(height=200, width=500, flags=\\&quot;waveform\\&quot;, color=\\&quot;black\\&quot;, background=\\&quot;white\\&quot;)&quot;,&quot;status&quot;:51,&quot;statusText&quot;:&quot;Ruby code_generator_failed_unexpectedly&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 ImageTag(&#039;bumblebee.png&#039;))\\n\\t-&gt;addTransformation(\\&quot;h_200,w_500,fl_waveform,co_black,b_white\\&quot;)\\n\\t-&gt;assetType(\\&quot;video\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;(new ImageTag(&#039;bumblebee.png&#039;))\\n\\t-&gt;addTransformation(\\&quot;h_200,w_500,fl_waveform,co_black,b_white\\&quot;)\\n\\t-&gt;assetType(\\&quot;video\\&quot;);&quot;,&quot;status&quot;:50,&quot;statusText&quot;:&quot;Ruby action_generator_failed_unexpectedly&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_image_tag(\\&quot;bumblebee.png\\&quot;, array(\\&quot;height\\&quot;=&gt;200, \\&quot;width\\&quot;=&gt;500, \\&quot;flags\\&quot;=&gt;\\&quot;waveform\\&quot;, \\&quot;color\\&quot;=&gt;\\&quot;black\\&quot;, \\&quot;background\\&quot;=&gt;\\&quot;white\\&quot;, \\&quot;resource_type\\&quot;=&gt;\\&quot;video\\&quot;))&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;bumblebee.png\\&quot;, array(\\&quot;height\\&quot;=&gt;200, \\&quot;width\\&quot;=&gt;500, \\&quot;flags\\&quot;=&gt;\\&quot;waveform\\&quot;, \\&quot;color\\&quot;=&gt;\\&quot;black\\&quot;, \\&quot;background\\&quot;=&gt;\\&quot;white\\&quot;, \\&quot;resource_type\\&quot;=&gt;\\&quot;video\\&quot;))&quot;,&quot;status&quot;:51,&quot;statusText&quot;:&quot;Ruby code_generator_failed_unexpectedly&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().height(200).width(500).flags(\\&quot;waveform\\&quot;).color(\\&quot;black\\&quot;).background(\\&quot;white\\&quot;)).resourceType(\\&quot;video\\&quot;).imageTag(\\&quot;bumblebee.png\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation().height(200).width(500).flags(\\&quot;waveform\\&quot;).color(\\&quot;black\\&quot;).background(\\&quot;white\\&quot;)).resourceType(\\&quot;video\\&quot;).imageTag(\\&quot;bumblebee.png\\&quot;);&quot;,&quot;status&quot;:51,&quot;statusText&quot;:&quot;Ruby code_generator_failed_unexpectedly&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_image_tag(\\&quot;bumblebee.png\\&quot;, height: 200, width: 500, flags: \\&quot;waveform\\&quot;, color: \\&quot;black\\&quot;, background: \\&quot;white\\&quot;, resource_type: \\&quot;video\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;bumblebee.png\\&quot;, height: 200, width: 500, flags: \\&quot;waveform\\&quot;, color: \\&quot;black\\&quot;, background: \\&quot;white\\&quot;, resource_type: \\&quot;video\\&quot;)&quot;,&quot;status&quot;:51,&quot;statusText&quot;:&quot;Ruby code_generator_failed_unexpectedly&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().Height(200).Width(500).Flags(\\&quot;waveform\\&quot;).Color(\\&quot;black\\&quot;).Background(\\&quot;white\\&quot;)).BuildImageTag(\\&quot;bumblebee.png\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.Api.UrlVideoUp.Transform(new Transformation().Height(200).Width(500).Flags(\\&quot;waveform\\&quot;).Color(\\&quot;black\\&quot;).Background(\\&quot;white\\&quot;)).BuildImageTag(\\&quot;bumblebee.png\\&quot;)&quot;,&quot;status&quot;:51,&quot;statusText&quot;:&quot;Ruby code_generator_failed_unexpectedly&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.image(&#039;bumblebee.png&#039;).transformation(Transformation()\\n\\t.addTransformation(\\&quot;h_200,w_500,fl_waveform,co_black,b_white\\&quot;)\\n\\t.setAssetType(\\&quot;video\\&quot;));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;bumblebee.png&#039;).transformation(Transformation()\\n\\t.addTransformation(\\&quot;h_200,w_500,fl_waveform,co_black,b_white\\&quot;)\\n\\t.setAssetType(\\&quot;video\\&quot;));&quot;,&quot;status&quot;:50,&quot;statusText&quot;:&quot;Ruby action_generator_failed_unexpectedly&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().setHeight(200).setWidth(500).setFlags(\\&quot;waveform\\&quot;).setColor(\\&quot;black\\&quot;).setBackground(\\&quot;white\\&quot;)).generate(\\&quot;bumblebee.png\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.createUrl().setResourceType(\\&quot;video\\&quot;).setTransformation(CLDTransformation().setHeight(200).setWidth(500).setFlags(\\&quot;waveform\\&quot;).setColor(\\&quot;black\\&quot;).setBackground(\\&quot;white\\&quot;)).generate(\\&quot;bumblebee.png\\&quot;)&quot;,&quot;status&quot;:51,&quot;statusText&quot;:&quot;Ruby code_generator_failed_unexpectedly&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().height(200).width(500).flags(\\&quot;waveform\\&quot;).color(\\&quot;black\\&quot;).background(\\&quot;white\\&quot;)).resourceType(\\&quot;video\\&quot;).generate(\\&quot;bumblebee.png\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation().height(200).width(500).flags(\\&quot;waveform\\&quot;).color(\\&quot;black\\&quot;).background(\\&quot;white\\&quot;)).resourceType(\\&quot;video\\&quot;).generate(\\&quot;bumblebee.png\\&quot;);&quot;,&quot;status&quot;:51,&quot;statusText&quot;:&quot;Ruby code_generator_failed_unexpectedly&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.image(&#039;bumblebee.png&#039;).transformation(Transformation()\\n\\t.addTransformation(\\&quot;h_200,w_500,fl_waveform,co_black,b_white\\&quot;)\\n\\t.setAssetType(\\&quot;video\\&quot;));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;bumblebee.png&#039;).transformation(Transformation()\\n\\t.addTransformation(\\&quot;h_200,w_500,fl_waveform,co_black,b_white\\&quot;)\\n\\t.setAssetType(\\&quot;video\\&quot;));&quot;,&quot;status&quot;:50,&quot;statusText&quot;:&quot;Ruby action_generator_failed_unexpectedly&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.image {\\n\\tpublicId(\\&quot;bumblebee.png\\&quot;)\\n\\t addTransformation(\\&quot;h_200,w_500,fl_waveform,co_black,b_white\\&quot;)\\n\\t assetType(\\&quot;video\\&quot;) \\n}.generate()&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;bumblebee.png\\&quot;)\\n\\t addTransformation(\\&quot;h_200,w_500,fl_waveform,co_black,b_white\\&quot;)\\n\\t assetType(\\&quot;video\\&quot;) \\n}.generate()&quot;,&quot;status&quot;:50,&quot;statusText&quot;:&quot;Ruby action_generator_failed_unexpectedly&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.image(\\&quot;bumblebee.png\\&quot;, {height: 200, width: 500, flags: \\&quot;waveform\\&quot;, color: \\&quot;black\\&quot;, background: \\&quot;white\\&quot;, resource_type: \\&quot;video\\&quot;})&quot;,&quot;codeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;bumblebee.png\\&quot;, {height: 200, width: 500, flags: \\&quot;waveform\\&quot;, color: \\&quot;black\\&quot;, background: \\&quot;white\\&quot;, resource_type: \\&quot;video\\&quot;})&quot;,&quot;status&quot;:51,&quot;statusText&quot;:&quot;Ruby code_generator_failed_unexpectedly&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 CloudinaryImage(\\&quot;bumblebee.png\\&quot;)\\n  .addTransformation(\\&quot;h_200,w_500,fl_waveform,co_black,b_white\\&quot;)\\n  .setAssetType(\\&quot;video\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;bumblebee.png\\&quot;)\\n  .addTransformation(\\&quot;h_200,w_500,fl_waveform,co_black,b_white\\&quot;)\\n  .setAssetType(\\&quot;video\\&quot;);&quot;,&quot;status&quot;:50,&quot;statusText&quot;:&quot;Ruby action_generator_failed_unexpectedly&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\\\/h_200,w_500,fl_waveform,co_black,b_white\\\/bumblebee.png&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;height&quot;:&quot;200&quot;,&quot;width&quot;:&quot;500&quot;,&quot;flags&quot;:&quot;waveform&quot;,&quot;color&quot;:&quot;black&quot;,&quot;background&quot;:&quot;white&quot;}],&quot;transformation_string&quot;:&quot;h_200,w_500,fl_waveform,co_black,b_white&quot;,&quot;url_suffix&quot;:&quot;&quot;,&quot;version&quot;:&quot;&quot;,&quot;secure&quot;:true,&quot;public_id&quot;:&quot;bumblebee.png&quot;,&quot;extension&quot;:&quot;png&quot;,&quot;format&quot;:&quot;png&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;image&quot;,&quot;error&quot;:{}}\"\n      with-url=\"true\"\n    >\n      <span class=\"u-visually-hidden\">Loading code examples<\/span>\n    <\/cld-code-widget><a class=\"c-image-link\" href=\"https:\/\/res.cloudinary.com\/demo\/video\/upload\/h_200,w_500,fl_waveform,co_black,b_white\/bumblebee.png\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/video\/upload\/h_200,w_500,fl_waveform,co_black,b_white\/bumblebee.png\" alt=\"Image of a black and white PNG waveform image produced with the Cloudinary waveform image generator\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"500\" height=\"200\"\/><\/a><\/p>\n<\/li>\n<li>\n<p><strong>Waveform segments.<\/strong> To capture a waveform segment of an audio, add these three parameters:<\/p>\n<ul>\n<li>\n<strong><code>start_offset<\/code>.<\/strong> Add the <code>so<\/code> parameter to the URL to denote the start.<\/li>\n<li>\n<strong><code>end_offset<\/code>.<\/strong> Add the <code>eo<\/code> parameter to the URL to denote the end.<\/li>\n<li>\n<strong><code>duration<\/code>.<\/strong> Add the <code>du<\/code> parameter to the URL to denote the duration.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Below is an edited PNG waveform image of the <code>bumblebee.mp3<\/code> audio. The waveform is blue on a green background with a duration between two-second mark and the four-second mark, scaled to a height of 250 pixels and a width of 400 pixels:<\/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.image(\\&quot;bumblebee.png\\&quot;, {height: 250, width: 400, flags: \\&quot;waveform\\&quot;, start_offset: \\&quot;2\\&quot;, end_offset: \\&quot;4\\&quot;, color: \\&quot;blue\\&quot;, background: \\&quot;#02b30a\\&quot;, resource_type: \\&quot;video\\&quot;})&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(\\&quot;bumblebee.png\\&quot;, {height: 250, width: 400, flags: \\&quot;waveform\\&quot;, start_offset: \\&quot;2\\&quot;, end_offset: \\&quot;4\\&quot;, color: \\&quot;blue\\&quot;, background: \\&quot;#02b30a\\&quot;, resource_type: \\&quot;video\\&quot;})&quot;,&quot;status&quot;:51,&quot;statusText&quot;:&quot;Ruby code_generator_failed_unexpectedly&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 CloudinaryImage(\\&quot;bumblebee.png\\&quot;)\\n  .addTransformation(\\&quot;h_250,w_400,fl_waveform,so_2,eo_4,co_blue,b_rgb:02b30a\\&quot;)\\n  .setAssetType(\\&quot;video\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;bumblebee.png\\&quot;)\\n  .addTransformation(\\&quot;h_250,w_400,fl_waveform,so_2,eo_4,co_blue,b_rgb:02b30a\\&quot;)\\n  .setAssetType(\\&quot;video\\&quot;);&quot;,&quot;status&quot;:50,&quot;statusText&quot;:&quot;Ruby action_generator_failed_unexpectedly&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;bumblebee.png\\&quot; resourceType=\\&quot;video\\&quot;&gt; &lt;Transformation height=\\&quot;250\\&quot; width=\\&quot;400\\&quot; flags=\\&quot;waveform\\&quot; startOffset=\\&quot;2\\&quot; endOffset=\\&quot;4\\&quot; color=\\&quot;blue\\&quot; background=\\&quot;#02b30a\\&quot; \\\/&gt; &lt;\\\/Video&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;Video publicId=\\&quot;bumblebee.png\\&quot; resourceType=\\&quot;video\\&quot;&gt;\\n\\t&lt;Transformation height=\\&quot;250\\&quot; width=\\&quot;400\\&quot; flags=\\&quot;waveform\\&quot; startOffset=\\&quot;2\\&quot; endOffset=\\&quot;4\\&quot; color=\\&quot;blue\\&quot; background=\\&quot;#02b30a\\&quot; \\\/&gt;\\n&lt;\\\/Video&gt;&quot;,&quot;status&quot;:51,&quot;statusText&quot;:&quot;Ruby code_generator_failed_unexpectedly&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 CloudinaryImage(\\&quot;bumblebee.png\\&quot;)\\n  .addTransformation(\\&quot;h_250,w_400,fl_waveform,so_2,eo_4,co_blue,b_rgb:02b30a\\&quot;)\\n  .setAssetType(\\&quot;video\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;bumblebee.png\\&quot;)\\n  .addTransformation(\\&quot;h_250,w_400,fl_waveform,so_2,eo_4,co_blue,b_rgb:02b30a\\&quot;)\\n  .setAssetType(\\&quot;video\\&quot;);&quot;,&quot;status&quot;:50,&quot;statusText&quot;:&quot;Ruby action_generator_failed_unexpectedly&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;bumblebee.png\\&quot; resource-type=\\&quot;video\\&quot;&gt; &lt;cld-transformation height=\\&quot;250\\&quot; width=\\&quot;400\\&quot; flags=\\&quot;waveform\\&quot; start-offset=\\&quot;2\\&quot; end-offset=\\&quot;4\\&quot; color=\\&quot;blue\\&quot; background=\\&quot;#02b30a\\&quot; \\\/&gt; &lt;\\\/cld-video&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cld-video public-id=\\&quot;bumblebee.png\\&quot; resource-type=\\&quot;video\\&quot;&gt;\\n\\t&lt;cld-transformation height=\\&quot;250\\&quot; width=\\&quot;400\\&quot; flags=\\&quot;waveform\\&quot; start-offset=\\&quot;2\\&quot; end-offset=\\&quot;4\\&quot; color=\\&quot;blue\\&quot; background=\\&quot;#02b30a\\&quot; \\\/&gt;\\n&lt;\\\/cld-video&gt;&quot;,&quot;status&quot;:51,&quot;statusText&quot;:&quot;Ruby code_generator_failed_unexpectedly&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 CloudinaryImage(\\&quot;bumblebee.png\\&quot;)\\n  .addTransformation(\\&quot;h_250,w_400,fl_waveform,so_2,eo_4,co_blue,b_rgb:02b30a\\&quot;)\\n  .setAssetType(\\&quot;video\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;bumblebee.png\\&quot;)\\n  .addTransformation(\\&quot;h_250,w_400,fl_waveform,so_2,eo_4,co_blue,b_rgb:02b30a\\&quot;)\\n  .setAssetType(\\&quot;video\\&quot;);&quot;,&quot;status&quot;:50,&quot;statusText&quot;:&quot;Ruby action_generator_failed_unexpectedly&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;bumblebee.png\\&quot; resource-type=\\&quot;video\\&quot;&gt; &lt;cl-transformation height=\\&quot;250\\&quot; width=\\&quot;400\\&quot; flags=\\&quot;waveform\\&quot; start-offset=\\&quot;2\\&quot; end-offset=\\&quot;4\\&quot; color=\\&quot;blue\\&quot; background=\\&quot;#02b30a\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;\\\/cl-video&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cl-video public-id=\\&quot;bumblebee.png\\&quot; resource-type=\\&quot;video\\&quot;&gt;\\n\\t&lt;cl-transformation height=\\&quot;250\\&quot; width=\\&quot;400\\&quot; flags=\\&quot;waveform\\&quot; start-offset=\\&quot;2\\&quot; end-offset=\\&quot;4\\&quot; color=\\&quot;blue\\&quot; background=\\&quot;#02b30a\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n&lt;\\\/cl-video&gt;&quot;,&quot;status&quot;:51,&quot;statusText&quot;:&quot;Ruby code_generator_failed_unexpectedly&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 CloudinaryImage(\\&quot;bumblebee.png\\&quot;)\\n  .addTransformation(\\&quot;h_250,w_400,fl_waveform,so_2,eo_4,co_blue,b_rgb:02b30a\\&quot;)\\n  .setAssetType(\\&quot;video\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;bumblebee.png\\&quot;)\\n  .addTransformation(\\&quot;h_250,w_400,fl_waveform,so_2,eo_4,co_blue,b_rgb:02b30a\\&quot;)\\n  .setAssetType(\\&quot;video\\&quot;);&quot;,&quot;status&quot;:50,&quot;statusText&quot;:&quot;Ruby action_generator_failed_unexpectedly&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;bumblebee.png&#039;, {height: 250, width: 400, flags: \\&quot;waveform\\&quot;, startOffset: \\&quot;2\\&quot;, endOffset: \\&quot;4\\&quot;, color: \\&quot;blue\\&quot;, background: \\&quot;#02b30a\\&quot;}).toHtml();&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.videoTag(&#039;bumblebee.png&#039;, {height: 250, width: 400, flags: \\&quot;waveform\\&quot;, startOffset: \\&quot;2\\&quot;, endOffset: \\&quot;4\\&quot;, color: \\&quot;blue\\&quot;, background: \\&quot;#02b30a\\&quot;}).toHtml();&quot;,&quot;status&quot;:51,&quot;statusText&quot;:&quot;Ruby code_generator_failed_unexpectedly&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;bumblebee.png\\&quot;).image(height=250, width=400, flags=\\&quot;waveform\\&quot;, start_offset=\\&quot;2\\&quot;, end_offset=\\&quot;4\\&quot;, color=\\&quot;blue\\&quot;, background=\\&quot;#02b30a\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;CloudinaryVideo(\\&quot;bumblebee.png\\&quot;).image(height=250, width=400, flags=\\&quot;waveform\\&quot;, start_offset=\\&quot;2\\&quot;, end_offset=\\&quot;4\\&quot;, color=\\&quot;blue\\&quot;, background=\\&quot;#02b30a\\&quot;)&quot;,&quot;status&quot;:51,&quot;statusText&quot;:&quot;Ruby code_generator_failed_unexpectedly&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 ImageTag(&#039;bumblebee.png&#039;))\\n\\t-&gt;addTransformation(\\&quot;h_250,w_400,fl_waveform,so_2,eo_4,co_blue,b_rgb:02b30a\\&quot;)\\n\\t-&gt;assetType(\\&quot;video\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;(new ImageTag(&#039;bumblebee.png&#039;))\\n\\t-&gt;addTransformation(\\&quot;h_250,w_400,fl_waveform,so_2,eo_4,co_blue,b_rgb:02b30a\\&quot;)\\n\\t-&gt;assetType(\\&quot;video\\&quot;);&quot;,&quot;status&quot;:50,&quot;statusText&quot;:&quot;Ruby action_generator_failed_unexpectedly&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_image_tag(\\&quot;bumblebee.png\\&quot;, array(\\&quot;height\\&quot;=&gt;250, \\&quot;width\\&quot;=&gt;400, \\&quot;flags\\&quot;=&gt;\\&quot;waveform\\&quot;, \\&quot;start_offset\\&quot;=&gt;\\&quot;2\\&quot;, \\&quot;end_offset\\&quot;=&gt;\\&quot;4\\&quot;, \\&quot;color\\&quot;=&gt;\\&quot;blue\\&quot;, \\&quot;background\\&quot;=&gt;\\&quot;#02b30a\\&quot;, \\&quot;resource_type\\&quot;=&gt;\\&quot;video\\&quot;))&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;bumblebee.png\\&quot;, array(\\&quot;height\\&quot;=&gt;250, \\&quot;width\\&quot;=&gt;400, \\&quot;flags\\&quot;=&gt;\\&quot;waveform\\&quot;, \\&quot;start_offset\\&quot;=&gt;\\&quot;2\\&quot;, \\&quot;end_offset\\&quot;=&gt;\\&quot;4\\&quot;, \\&quot;color\\&quot;=&gt;\\&quot;blue\\&quot;, \\&quot;background\\&quot;=&gt;\\&quot;#02b30a\\&quot;, \\&quot;resource_type\\&quot;=&gt;\\&quot;video\\&quot;))&quot;,&quot;status&quot;:51,&quot;statusText&quot;:&quot;Ruby code_generator_failed_unexpectedly&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().height(250).width(400).flags(\\&quot;waveform\\&quot;).startOffset(\\&quot;2\\&quot;).endOffset(\\&quot;4\\&quot;).color(\\&quot;blue\\&quot;).background(\\&quot;#02b30a\\&quot;)).resourceType(\\&quot;video\\&quot;).imageTag(\\&quot;bumblebee.png\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation().height(250).width(400).flags(\\&quot;waveform\\&quot;).startOffset(\\&quot;2\\&quot;).endOffset(\\&quot;4\\&quot;).color(\\&quot;blue\\&quot;).background(\\&quot;#02b30a\\&quot;)).resourceType(\\&quot;video\\&quot;).imageTag(\\&quot;bumblebee.png\\&quot;);&quot;,&quot;status&quot;:51,&quot;statusText&quot;:&quot;Ruby code_generator_failed_unexpectedly&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_image_tag(\\&quot;bumblebee.png\\&quot;, height: 250, width: 400, flags: \\&quot;waveform\\&quot;, start_offset: \\&quot;2\\&quot;, end_offset: \\&quot;4\\&quot;, color: \\&quot;blue\\&quot;, background: \\&quot;#02b30a\\&quot;, resource_type: \\&quot;video\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;bumblebee.png\\&quot;, height: 250, width: 400, flags: \\&quot;waveform\\&quot;, start_offset: \\&quot;2\\&quot;, end_offset: \\&quot;4\\&quot;, color: \\&quot;blue\\&quot;, background: \\&quot;#02b30a\\&quot;, resource_type: \\&quot;video\\&quot;)&quot;,&quot;status&quot;:51,&quot;statusText&quot;:&quot;Ruby code_generator_failed_unexpectedly&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().Height(250).Width(400).Flags(\\&quot;waveform\\&quot;).StartOffset(\\&quot;2\\&quot;).EndOffset(\\&quot;4\\&quot;).Color(\\&quot;blue\\&quot;).Background(\\&quot;#02b30a\\&quot;)).BuildImageTag(\\&quot;bumblebee.png\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.Api.UrlVideoUp.Transform(new Transformation().Height(250).Width(400).Flags(\\&quot;waveform\\&quot;).StartOffset(\\&quot;2\\&quot;).EndOffset(\\&quot;4\\&quot;).Color(\\&quot;blue\\&quot;).Background(\\&quot;#02b30a\\&quot;)).BuildImageTag(\\&quot;bumblebee.png\\&quot;)&quot;,&quot;status&quot;:51,&quot;statusText&quot;:&quot;Ruby code_generator_failed_unexpectedly&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.image(&#039;bumblebee.png&#039;).transformation(Transformation()\\n\\t.addTransformation(\\&quot;h_250,w_400,fl_waveform,so_2,eo_4,co_blue,b_rgb:02b30a\\&quot;)\\n\\t.setAssetType(\\&quot;video\\&quot;));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;bumblebee.png&#039;).transformation(Transformation()\\n\\t.addTransformation(\\&quot;h_250,w_400,fl_waveform,so_2,eo_4,co_blue,b_rgb:02b30a\\&quot;)\\n\\t.setAssetType(\\&quot;video\\&quot;));&quot;,&quot;status&quot;:50,&quot;statusText&quot;:&quot;Ruby action_generator_failed_unexpectedly&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().setHeight(250).setWidth(400).setFlags(\\&quot;waveform\\&quot;).setStartOffset(\\&quot;2\\&quot;).setEndOffset(\\&quot;4\\&quot;).setColor(\\&quot;blue\\&quot;).setBackground(\\&quot;#02b30a\\&quot;)).generate(\\&quot;bumblebee.png\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.createUrl().setResourceType(\\&quot;video\\&quot;).setTransformation(CLDTransformation().setHeight(250).setWidth(400).setFlags(\\&quot;waveform\\&quot;).setStartOffset(\\&quot;2\\&quot;).setEndOffset(\\&quot;4\\&quot;).setColor(\\&quot;blue\\&quot;).setBackground(\\&quot;#02b30a\\&quot;)).generate(\\&quot;bumblebee.png\\&quot;)&quot;,&quot;status&quot;:51,&quot;statusText&quot;:&quot;Ruby code_generator_failed_unexpectedly&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().height(250).width(400).flags(\\&quot;waveform\\&quot;).startOffset(\\&quot;2\\&quot;).endOffset(\\&quot;4\\&quot;).color(\\&quot;blue\\&quot;).background(\\&quot;#02b30a\\&quot;)).resourceType(\\&quot;video\\&quot;).generate(\\&quot;bumblebee.png\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation().height(250).width(400).flags(\\&quot;waveform\\&quot;).startOffset(\\&quot;2\\&quot;).endOffset(\\&quot;4\\&quot;).color(\\&quot;blue\\&quot;).background(\\&quot;#02b30a\\&quot;)).resourceType(\\&quot;video\\&quot;).generate(\\&quot;bumblebee.png\\&quot;);&quot;,&quot;status&quot;:51,&quot;statusText&quot;:&quot;Ruby code_generator_failed_unexpectedly&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.image(&#039;bumblebee.png&#039;).transformation(Transformation()\\n\\t.addTransformation(\\&quot;h_250,w_400,fl_waveform,so_2,eo_4,co_blue,b_rgb:02b30a\\&quot;)\\n\\t.setAssetType(\\&quot;video\\&quot;));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;bumblebee.png&#039;).transformation(Transformation()\\n\\t.addTransformation(\\&quot;h_250,w_400,fl_waveform,so_2,eo_4,co_blue,b_rgb:02b30a\\&quot;)\\n\\t.setAssetType(\\&quot;video\\&quot;));&quot;,&quot;status&quot;:50,&quot;statusText&quot;:&quot;Ruby action_generator_failed_unexpectedly&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.image {\\n\\tpublicId(\\&quot;bumblebee.png\\&quot;)\\n\\t addTransformation(\\&quot;h_250,w_400,fl_waveform,so_2,eo_4,co_blue,b_rgb:02b30a\\&quot;)\\n\\t assetType(\\&quot;video\\&quot;) \\n}.generate()&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;bumblebee.png\\&quot;)\\n\\t addTransformation(\\&quot;h_250,w_400,fl_waveform,so_2,eo_4,co_blue,b_rgb:02b30a\\&quot;)\\n\\t assetType(\\&quot;video\\&quot;) \\n}.generate()&quot;,&quot;status&quot;:50,&quot;statusText&quot;:&quot;Ruby action_generator_failed_unexpectedly&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.image(\\&quot;bumblebee.png\\&quot;, {height: 250, width: 400, flags: \\&quot;waveform\\&quot;, start_offset: \\&quot;2\\&quot;, end_offset: \\&quot;4\\&quot;, color: \\&quot;blue\\&quot;, background: \\&quot;#02b30a\\&quot;, resource_type: \\&quot;video\\&quot;})&quot;,&quot;codeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;bumblebee.png\\&quot;, {height: 250, width: 400, flags: \\&quot;waveform\\&quot;, start_offset: \\&quot;2\\&quot;, end_offset: \\&quot;4\\&quot;, color: \\&quot;blue\\&quot;, background: \\&quot;#02b30a\\&quot;, resource_type: \\&quot;video\\&quot;})&quot;,&quot;status&quot;:51,&quot;statusText&quot;:&quot;Ruby code_generator_failed_unexpectedly&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 CloudinaryImage(\\&quot;bumblebee.png\\&quot;)\\n  .addTransformation(\\&quot;h_250,w_400,fl_waveform,so_2,eo_4,co_blue,b_rgb:02b30a\\&quot;)\\n  .setAssetType(\\&quot;video\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;bumblebee.png\\&quot;)\\n  .addTransformation(\\&quot;h_250,w_400,fl_waveform,so_2,eo_4,co_blue,b_rgb:02b30a\\&quot;)\\n  .setAssetType(\\&quot;video\\&quot;);&quot;,&quot;status&quot;:50,&quot;statusText&quot;:&quot;Ruby action_generator_failed_unexpectedly&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\\\/h_250,w_400,fl_waveform,so_2,eo_4,co_blue,b_rgb:02b30a\\\/bumblebee.png&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;height&quot;:&quot;250&quot;,&quot;width&quot;:&quot;400&quot;,&quot;flags&quot;:&quot;waveform&quot;,&quot;start_offset&quot;:&quot;2&quot;,&quot;end_offset&quot;:&quot;4&quot;,&quot;color&quot;:&quot;blue&quot;,&quot;background&quot;:&quot;rgb:02b30a&quot;}],&quot;transformation_string&quot;:&quot;h_250,w_400,fl_waveform,so_2,eo_4,co_blue,b_rgb:02b30a&quot;,&quot;url_suffix&quot;:&quot;&quot;,&quot;version&quot;:&quot;&quot;,&quot;secure&quot;:true,&quot;public_id&quot;:&quot;bumblebee.png&quot;,&quot;extension&quot;:&quot;png&quot;,&quot;format&quot;:&quot;png&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;image&quot;,&quot;error&quot;:{}}\"\n      with-url=\"true\"\n    >\n      <span class=\"u-visually-hidden\">Loading code examples<\/span>\n    <\/cld-code-widget><a class=\"c-image-link\" href=\"https:\/\/res.cloudinary.com\/demo\/video\/upload\/h_250,w_400,fl_waveform,so_2,eo_4,co_blue,b_rgb:02b30a\/bumblebee.png\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/video\/upload\/h_250,w_400,fl_waveform,so_2,eo_4,co_blue,b_rgb:02b30a\/bumblebee.png\" alt=\"Image of a waveform image in blue with a green background produced with the Cloudinary waveform image generator\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"400\" height=\"250\"\/><\/a><\/p>\n<h2>Creating Visual Depiction Uploaded Media<\/h2>\n<p>As an appealing visual depiction of audio files, waveform images work well for user-generated content, social networks, and social-messaging apps. You\u2019ve now learned how to produce those images on <a href=\"https:\/\/cloudinary.com\/\">Cloudinary<\/a>, which also offers automated capabilities for optimizing and delivering them through fast content delivery networks (CDNs).<\/p>\n<p>Remember that you can <a href=\"https:\/\/cloudinary.com\/documentation\/image_transformations\">transform<\/a> generated thumbnails for audio, as well as for <a href=\"https:\/\/cloudinary.com\/documentation\/image_transformations#resize_dimensions\">images<\/a> and <a href=\"https:\/\/cloudinary.com\/documentation\/video_manipulation_and_delivery#generating_video_thumbnails\">videos<\/a>, to match any graphic design and any responsive layout, as long as those media have been uploaded to your Cloudinary account\u2019s media library.<\/p>\n<p>In all its subscription plans, including the free tier, Cloudinary offers full support for audio, including upload, transformation, streaming, and generation of waveforms. Try it out yourself by first <a href=\"https:\/\/cloudinary.com\/users\/register_free\">opening a free account<\/a>.<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":41,"featured_media":21316,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_cloudinary_featured_overwrite":false,"footnotes":""},"categories":[1],"tags":[28,91,92,156,165,176,183,214,229,257],"class_list":["post-21315","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-audio-transformation","tag-django","tag-dotnet","tag-image-enhancement","tag-image-transformation","tag-java","tag-jquery","tag-node","tag-php","tag-ruby-on-rails"],"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>Waveform Image Generator | How to Convert Audio to Waveform Image<\/title>\n<meta name=\"description\" content=\"Learn how to convert audio to waveform image, and you can create on the fly waveform images to depict audio or video files.\" \/>\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\/how_to_generate_waveform_images_from_audio_files\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Waveform Image Generator | How to Convert Audio to Waveform Image\" \/>\n<meta property=\"og:description\" content=\"Learn how to convert audio to waveform image, and you can create on the fly waveform images to depict audio or video files.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudinary.com\/blog\/how_to_generate_waveform_images_from_audio_files\" \/>\n<meta property=\"og:site_name\" content=\"Cloudinary Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-10T10:35:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-11-07T00:47:59+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649719223\/Web_Assets\/blog\/02_waveform_image\/02_waveform_image.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\/how_to_generate_waveform_images_from_audio_files#article\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/how_to_generate_waveform_images_from_audio_files\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"Waveform Image Generator | How to Convert Audio to Waveform Image\",\"datePublished\":\"2020-05-10T10:35:00+00:00\",\"dateModified\":\"2025-11-07T00:47:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/how_to_generate_waveform_images_from_audio_files\"},\"wordCount\":10,\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/how_to_generate_waveform_images_from_audio_files#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649719223\/Web_Assets\/blog\/02_waveform_image\/02_waveform_image.jpg?_i=AA\",\"keywords\":[\"Audio Transformation\",\"Django\",\"DotNet\",\"Image Enhancement\",\"Image Transformation\",\"Java\",\"jQuery\",\"Node\",\"PHP\",\"Ruby on Rails\"],\"inLanguage\":\"en-US\",\"copyrightYear\":\"2020\",\"copyrightHolder\":{\"@id\":\"https:\/\/cloudinary.com\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cloudinary.com\/blog\/how_to_generate_waveform_images_from_audio_files\",\"url\":\"https:\/\/cloudinary.com\/blog\/how_to_generate_waveform_images_from_audio_files\",\"name\":\"Waveform Image Generator | How to Convert Audio to Waveform Image\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/how_to_generate_waveform_images_from_audio_files#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/how_to_generate_waveform_images_from_audio_files#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649719223\/Web_Assets\/blog\/02_waveform_image\/02_waveform_image.jpg?_i=AA\",\"datePublished\":\"2020-05-10T10:35:00+00:00\",\"dateModified\":\"2025-11-07T00:47:59+00:00\",\"description\":\"Learn how to convert audio to waveform image, and you can create on the fly waveform images to depict audio or video files.\",\"breadcrumb\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/how_to_generate_waveform_images_from_audio_files#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cloudinary.com\/blog\/how_to_generate_waveform_images_from_audio_files\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/how_to_generate_waveform_images_from_audio_files#primaryimage\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649719223\/Web_Assets\/blog\/02_waveform_image\/02_waveform_image.jpg?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649719223\/Web_Assets\/blog\/02_waveform_image\/02_waveform_image.jpg?_i=AA\",\"width\":1540,\"height\":847,\"caption\":\"Image showing graphic representation of a waveform image\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cloudinary.com\/blog\/how_to_generate_waveform_images_from_audio_files#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cloudinary.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Waveform Image Generator | How to Convert Audio to Waveform Image\"}]},{\"@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":"Waveform Image Generator | How to Convert Audio to Waveform Image","description":"Learn how to convert audio to waveform image, and you can create on the fly waveform images to depict audio or video files.","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\/how_to_generate_waveform_images_from_audio_files","og_locale":"en_US","og_type":"article","og_title":"Waveform Image Generator | How to Convert Audio to Waveform Image","og_description":"Learn how to convert audio to waveform image, and you can create on the fly waveform images to depict audio or video files.","og_url":"https:\/\/cloudinary.com\/blog\/how_to_generate_waveform_images_from_audio_files","og_site_name":"Cloudinary Blog","article_published_time":"2020-05-10T10:35:00+00:00","article_modified_time":"2025-11-07T00:47:59+00:00","og_image":[{"width":1540,"height":847,"url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649719223\/Web_Assets\/blog\/02_waveform_image\/02_waveform_image.jpg?_i=AA","type":"image\/jpeg"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/cloudinary.com\/blog\/how_to_generate_waveform_images_from_audio_files#article","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/how_to_generate_waveform_images_from_audio_files"},"author":{"name":"","@id":""},"headline":"Waveform Image Generator | How to Convert Audio to Waveform Image","datePublished":"2020-05-10T10:35:00+00:00","dateModified":"2025-11-07T00:47:59+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/how_to_generate_waveform_images_from_audio_files"},"wordCount":10,"publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/how_to_generate_waveform_images_from_audio_files#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649719223\/Web_Assets\/blog\/02_waveform_image\/02_waveform_image.jpg?_i=AA","keywords":["Audio Transformation","Django","DotNet","Image Enhancement","Image Transformation","Java","jQuery","Node","PHP","Ruby on Rails"],"inLanguage":"en-US","copyrightYear":"2020","copyrightHolder":{"@id":"https:\/\/cloudinary.com\/#organization"}},{"@type":"WebPage","@id":"https:\/\/cloudinary.com\/blog\/how_to_generate_waveform_images_from_audio_files","url":"https:\/\/cloudinary.com\/blog\/how_to_generate_waveform_images_from_audio_files","name":"Waveform Image Generator | How to Convert Audio to Waveform Image","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/how_to_generate_waveform_images_from_audio_files#primaryimage"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/how_to_generate_waveform_images_from_audio_files#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649719223\/Web_Assets\/blog\/02_waveform_image\/02_waveform_image.jpg?_i=AA","datePublished":"2020-05-10T10:35:00+00:00","dateModified":"2025-11-07T00:47:59+00:00","description":"Learn how to convert audio to waveform image, and you can create on the fly waveform images to depict audio or video files.","breadcrumb":{"@id":"https:\/\/cloudinary.com\/blog\/how_to_generate_waveform_images_from_audio_files#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudinary.com\/blog\/how_to_generate_waveform_images_from_audio_files"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/how_to_generate_waveform_images_from_audio_files#primaryimage","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649719223\/Web_Assets\/blog\/02_waveform_image\/02_waveform_image.jpg?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649719223\/Web_Assets\/blog\/02_waveform_image\/02_waveform_image.jpg?_i=AA","width":1540,"height":847,"caption":"Image showing graphic representation of a waveform image"},{"@type":"BreadcrumbList","@id":"https:\/\/cloudinary.com\/blog\/how_to_generate_waveform_images_from_audio_files#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudinary.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Waveform Image Generator | How to Convert Audio to Waveform Image"}]},{"@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\/v1649719223\/Web_Assets\/blog\/02_waveform_image\/02_waveform_image.jpg?_i=AA","_links":{"self":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21315","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=21315"}],"version-history":[{"count":11,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21315\/revisions"}],"predecessor-version":[{"id":39155,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21315\/revisions\/39155"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media\/21316"}],"wp:attachment":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media?parent=21315"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/categories?post=21315"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/tags?post=21315"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}