{"id":35111,"date":"2024-08-06T07:00:00","date_gmt":"2024-08-06T14:00:00","guid":{"rendered":"https:\/\/cloudinary.com\/blog\/?p=35111"},"modified":"2024-09-07T16:25:36","modified_gmt":"2024-09-07T23:25:36","slug":"creating-video-processing-pipelines","status":"publish","type":"post","link":"https:\/\/cloudinary.com\/blog\/creating-video-processing-pipelines","title":{"rendered":"Creating Video Processing Pipelines With Cloudinary"},"content":{"rendered":"\n<p>Processing is an important step for storing and delivering digital media. Many common transformations are applied to videos, such as codecs, bitrate encoding, segmenting, changing resolution, generating thumbnails, applying effects, and adding watermarks.<\/p>\n\n\n\n<p>A pipeline is a simple but powerful concept: it\u2019s a series of steps, each building upon the last. You can imagine it as a function that takes in some data and passes the return value to another function. Each function or step acts on the result of the last one and returns a new version of the input data.&nbsp;<\/p>\n\n\n\n<p>Combining video data transformations using a pipeline streamlines your workflow. Sometimes, transformations must be applied in a particular order to achieve a desired result. For example, before you encode or trim the size of a video, apply the transformation first. This is why pipelines are an ideal pattern for transforming digital media. You have control over the order in which transformations are performed.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Media Processing Pipelines With Cloudinary<\/strong><\/h2>\n\n\n\n<p>Cloudinary provides an incredibly powerful API for applying transformations to digital media. We\u2019ll build example transformations using the Cloudinary API and cover many important concepts.<a href=\"https:\/\/cloudinary.com\/documentation\/transformation_reference\"> Transformation URL API Reference<\/a> and <a href=\"https:\/\/cloudinary.com\/documentation\/video_manipulation_and_delivery\">Video Transformations<\/a> will be useful for planning our transformations.<\/p>\n\n\n\n<p>We\u2019ll implement two different transformation pipelines. Combined, we\u2019ll cover many useful concepts and common transformations. Here are the pipelines that we\u2019ll create:&nbsp;<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Upload a video to Cloudinary and apply eager transformations: adjusting quality and bitrate, changing format containers, applying a codec, and generating thumbnails.<\/li>\n\n\n\n<li>Apply a lazy transformation to trim, resize, adjust quality, add an effect, and convert a video to a <a href=\"https:\/\/cloudinary.com\/tools\/compress-gif\">GIF<\/a>.<\/li>\n<\/ol>\n\n\n\n<p>One of the more interesting parts of the API is the ability to use different delivery types. You\u2019ll be blown away by how simple these complex operations are pieced together using the Cloudinary API.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Example 1: Uploading an Optimized Video<\/strong><\/h2>\n\n\n\n<p>For this example, we want to adjust quality and bitrate, change format containers, apply a codec, and generate thumbnail images.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Delivery and Transformation Type<\/strong><\/h3>\n\n\n\n<p>The first thing to highlight about this use case is the<a href=\"https:\/\/cloudinary.com\/documentation\/video_manipulation_and_delivery#delivery_types\"> delivery type<\/a>. Since we\u2019re using the upload delivery type, we\u2019ll apply <a href=\"https:\/\/cloudinary.com\/documentation\/upload_parameters#eager_transformations\">eager or incoming transformations<\/a> to our video. Eager transformations will be applied once our video has completed uploading, which means that we\u2019ll also still have our original video uploaded. Incoming transformations will be applied during the upload, so only the transformed video will be available after the upload is completed.<\/p>\n\n\n\n<p>For this example, we\u2019ll use async eager transformations, which allow the transformations to be applied during upload and preserve our original file.<\/p>\n\n\n\n<p>Here\u2019s the code using the Cloudinary NodeJS API:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript shcb-wrap-lines\"><span class=\"hljs-keyword\">const<\/span> cloudinary = <span class=\"hljs-built_in\">require<\/span>(<span class=\"hljs-string\">'cloudinary'<\/span>).v2;\n\n<span class=\"hljs-comment\">\/\/ Configure Cloudinary<\/span>\n<span class=\"hljs-comment\">\/\/ Replace with your actual Cloudinary credentials<\/span>\ncloudinary.config({\n  <span class=\"hljs-attr\">cloud_name<\/span>: <span class=\"hljs-string\">'your_cloud_name'<\/span>,\n  <span class=\"hljs-attr\">api_key<\/span>: <span class=\"hljs-string\">'your_api_key'<\/span>,\n  <span class=\"hljs-attr\">api_secret<\/span>: <span class=\"hljs-string\">'your_api_secret'<\/span>\n});\n\n<span class=\"hljs-comment\">\/\/ Function to upload video with transformations<\/span>\n<span class=\"hljs-keyword\">async<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">uploadVideoWithTransformations<\/span>(<span class=\"hljs-params\">videoPath<\/span>) <\/span>{\n  <span class=\"hljs-keyword\">try<\/span> {\n    <span class=\"hljs-keyword\">const<\/span> result = <span class=\"hljs-keyword\">await<\/span> cloudinary.uploader.upload(videoPath, {\n      <span class=\"hljs-attr\">resource_type<\/span>: <span class=\"hljs-string\">\"video\"<\/span>,\n      <span class=\"hljs-attr\">eager<\/span>: &#91;\n        <span class=\"hljs-comment\">\/\/ Transformation 1: Adjust quality and bitrate, change format, apply codec<\/span>\n        { \n          <span class=\"hljs-attr\">quality<\/span>: <span class=\"hljs-string\">\"auto:good\"<\/span>, \n          <span class=\"hljs-attr\">bit_rate<\/span>: <span class=\"hljs-string\">\"2m\"<\/span>,\n          <span class=\"hljs-attr\">format<\/span>: <span class=\"hljs-string\">\"mp4\"<\/span>,\n          <span class=\"hljs-attr\">video_codec<\/span>: <span class=\"hljs-string\">\"h264\"<\/span>\n        },\n        <span class=\"hljs-comment\">\/\/ Transformation 2: Generate thumbnails<\/span>\n        { \n          <span class=\"hljs-attr\">width<\/span>: <span class=\"hljs-number\">320<\/span>,\n          <span class=\"hljs-attr\">height<\/span>: <span class=\"hljs-number\">240<\/span>,\n          <span class=\"hljs-attr\">crop<\/span>: <span class=\"hljs-string\">\"fill\"<\/span>,\n          <span class=\"hljs-attr\">format<\/span>: <span class=\"hljs-string\">\"jpg\"<\/span>,\n          <span class=\"hljs-attr\">start_offset<\/span>: <span class=\"hljs-string\">\"0\"<\/span>,\n          <span class=\"hljs-attr\">end_offset<\/span>: <span class=\"hljs-string\">\"10\"<\/span>,\n          <span class=\"hljs-attr\">interval<\/span>: <span class=\"hljs-number\">5000<\/span>\n        }\n      ],\n      <span class=\"hljs-attr\">eager_async<\/span>: <span class=\"hljs-literal\">true<\/span>,\n      <span class=\"hljs-attr\">eager_notification_url<\/span>: <span class=\"hljs-string\">\"&lt;https:\/\/your-notification-url.com\/cloudinary-notification&gt;\"<\/span>\n    });\n\n    <span class=\"hljs-built_in\">console<\/span>.log(<span class=\"hljs-string\">\"Upload successful. Details:\"<\/span>, result);\n    <span class=\"hljs-built_in\">console<\/span>.log(<span class=\"hljs-string\">\"Transformed video URL:\"<\/span>, result.eager&#91;<span class=\"hljs-number\">0<\/span>].secure_url);\n    <span class=\"hljs-built_in\">console<\/span>.log(<span class=\"hljs-string\">\"Thumbnail URLs:\"<\/span>, result.eager&#91;<span class=\"hljs-number\">1<\/span>].secure_url);\n\n    <span class=\"hljs-keyword\">return<\/span> result;\n  } <span class=\"hljs-keyword\">catch<\/span> (error) {\n    <span class=\"hljs-built_in\">console<\/span>.error(<span class=\"hljs-string\">\"Upload failed:\"<\/span>, error);\n  }\n}\n\n<span class=\"hljs-comment\">\/\/ Usage<\/span>\n<span class=\"hljs-keyword\">const<\/span> videoPath = <span class=\"hljs-string\">'.\/path\/to\/your\/video.mp4'<\/span>;\nuploadVideoWithTransformations(videoPath);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Each step in the pipeline is represented by an item in the eager array. Keep in mind they\u2019re applied in order. As we touched on in the beginning, there are use cases where the order of the transformations can be important.<\/p>\n\n\n\n<p>Our pipeline consists of two steps:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Adjust quality and bitrate, change format, and apply codec.<\/li>\n\n\n\n<li>Generate thumbnails.<\/li>\n<\/ol>\n\n\n\n<p>Since the processing is happening asynchronously, we can provide a webhook URL to <code>eager_notification_url<\/code>, which will be called to notify us once our transformations have been completed.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Example 2: Transforming Video to GIF<\/strong><\/h2>\n\n\n\n<p>For this example, we want to trim, resize, adjust quality, add an effect, and convert a video to a GIF.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Delivery and Transformation Type<\/strong><\/h3>\n\n\n\n<p>This example takes a different direction by using a lazy transformation. We\u2019ll use a video hosted on the Cloudinary demo account, but it could be in your account or anywhere else on the web. Lazy transformation means the transformations won\u2019t be applied until the user has requested the asset. After the initial fetch and transformation, it will be cached in the Cloudinary CDN for future access.<\/p>\n\n\n\n<p>Here are the URLs for the original and transformed videos:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/res.cloudinary.com\/demo\/video\/upload\/dog.mp4\">https:\/\/res.cloudinary.com\/demo\/video\/upload\/dog.mp4<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/res.cloudinary.com\/demo\/video\/upload\/c_fill,h_360,w_640\/du_5\/q_auto:good\/e_vignette:30\/f_gif\/dog.mp4\">https:\/\/res.cloudinary.com\/demo\/video\/upload\/c_fill,h_360,w_640\/du_5\/q_auto:good\/e_vignette:30\/f_gif\/dog.mp4<\/a><\/li>\n<\/ul>\n\n\n\n<p>Let&#8217;s break down the transformation URL:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>c_fill,h_360,w_640\/<\/code><\/strong>. Applies the resize transformation.<\/li>\n\n\n\n<li><strong><code>du_5\/<\/code><\/strong>. Trims the video to a duration of 5 seconds.<\/li>\n\n\n\n<li><strong><code>q_auto:good\/<\/code><\/strong>. Adjusts the quality.<\/li>\n\n\n\n<li><strong><code>e_vignette:30\/<\/code><\/strong>. Adds a vignette effect.<\/li>\n\n\n\n<li><strong><code>f_gif\/<\/code><\/strong>. Converts the video to GIF format.<\/li>\n<\/ul>\n\n\n\n<p>Each separating \/ between transformations represents a different step in our pipeline. So, we start by resizing the video and end by converting it to a <code>GIF<\/code> image.<\/p>\n\n\n\n<p>It was that easy to take a video and create a <code>GIF<\/code> image that we could easily share with anyone. All we had to do was add some transformations through URL params!<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img width=\"640\" height=\"360\" data-public-id=\"Web_Assets\/blog\/dog\/dog.gif\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/w_640,h_360,c_scale\/f_auto,q_auto\/v1722901817\/Web_Assets\/blog\/dog\/dog.gif?_i=AA\" alt=\"\" class=\"wp-post-35111 wp-image-35112\" data-format=\"gif\" data-transformations=\"f_auto,q_auto\" data-version=\"1722901817\" data-seo=\"1\" \/><\/figure><\/div>\n\n\n<h2 class=\"wp-block-heading\"><strong>Summary<\/strong><\/h2>\n\n\n\n<p>We\u2019ve only scratched the surface of what you can accomplish with the Cloudinary Transformation API. Read through the reference to learn about all the different types of transformations available.<\/p>\n\n\n\n<p>Our first example was a common transformation that adjusted the quality and applied a codec during upload. Our second example is especially unique and puts the power of Cloudinary on display. Being able to apply transformations lazily when an asset is requested and have it automatically cached for future access is a superpower.<\/p>\n\n\n\n<p><a href=\"https:\/\/cloudinary.com\/\">Create an account for free<\/a> and start experimenting today. If you have some ideas, just sign in and take a shot!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Processing is an important step for storing and delivering digital media. Many common transformations are applied to videos, such as codecs, bitrate encoding, segmenting, changing resolution, generating thumbnails, applying effects, and adding watermarks. A pipeline is a simple but powerful concept: it\u2019s a series of steps, each building upon the last. You can imagine it [&hellip;]<\/p>\n","protected":false},"author":87,"featured_media":35130,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_cloudinary_featured_overwrite":false,"footnotes":""},"categories":[1],"tags":[303,305,304],"class_list":["post-35111","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-video","tag-video-api","tag-video-transformation"],"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>Creating Video Processing Pipelines With Cloudinary<\/title>\n<meta name=\"description\" content=\"The Cloudinary API provides several strategies for processing video with a wide range of optimizations, effects, and editing capabilities. Learn how.\" \/>\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\/creating-video-processing-pipelines\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Creating Video Processing Pipelines With Cloudinary\" \/>\n<meta property=\"og:description\" content=\"The Cloudinary API provides several strategies for processing video with a wide range of optimizations, effects, and editing capabilities. Learn how.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudinary.com\/blog\/creating-video-processing-pipelines\" \/>\n<meta property=\"og:site_name\" content=\"Cloudinary Blog\" \/>\n<meta property=\"article:published_time\" content=\"2024-08-06T14:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-07T23:25:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1722622586\/video_processing-blog\/video_processing-blog-jpg?_i=AA\" \/>\n\t<meta property=\"og:image:width\" content=\"2000\" \/>\n\t<meta property=\"og:image:height\" content=\"1100\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"melindapham\" \/>\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\/creating-video-processing-pipelines#article\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/creating-video-processing-pipelines\"},\"author\":{\"name\":\"melindapham\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/0d5ad601e4c3b5be89245dfb14be42d9\"},\"headline\":\"Creating Video Processing Pipelines With Cloudinary\",\"datePublished\":\"2024-08-06T14:00:00+00:00\",\"dateModified\":\"2024-09-07T23:25:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/creating-video-processing-pipelines\"},\"wordCount\":862,\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/creating-video-processing-pipelines#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1722622586\/video_processing-blog\/video_processing-blog.jpg?_i=AA\",\"keywords\":[\"Video\",\"Video API\",\"Video Transformation\"],\"inLanguage\":\"en-US\",\"copyrightYear\":\"2024\",\"copyrightHolder\":{\"@id\":\"https:\/\/cloudinary.com\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cloudinary.com\/blog\/creating-video-processing-pipelines\",\"url\":\"https:\/\/cloudinary.com\/blog\/creating-video-processing-pipelines\",\"name\":\"Creating Video Processing Pipelines With Cloudinary\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/creating-video-processing-pipelines#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/creating-video-processing-pipelines#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1722622586\/video_processing-blog\/video_processing-blog.jpg?_i=AA\",\"datePublished\":\"2024-08-06T14:00:00+00:00\",\"dateModified\":\"2024-09-07T23:25:36+00:00\",\"description\":\"The Cloudinary API provides several strategies for processing video with a wide range of optimizations, effects, and editing capabilities. Learn how.\",\"breadcrumb\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/creating-video-processing-pipelines#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cloudinary.com\/blog\/creating-video-processing-pipelines\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/creating-video-processing-pipelines#primaryimage\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1722622586\/video_processing-blog\/video_processing-blog.jpg?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1722622586\/video_processing-blog\/video_processing-blog.jpg?_i=AA\",\"width\":2000,\"height\":1100},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cloudinary.com\/blog\/creating-video-processing-pipelines#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cloudinary.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Creating Video Processing Pipelines With Cloudinary\"}]},{\"@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\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/0d5ad601e4c3b5be89245dfb14be42d9\",\"name\":\"melindapham\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/e6f989fa97fe94be61596259d8629c3df65aec4c7da5c0000f90d810f313d4f4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/e6f989fa97fe94be61596259d8629c3df65aec4c7da5c0000f90d810f313d4f4?s=96&d=mm&r=g\",\"caption\":\"melindapham\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Creating Video Processing Pipelines With Cloudinary","description":"The Cloudinary API provides several strategies for processing video with a wide range of optimizations, effects, and editing capabilities. Learn how.","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\/creating-video-processing-pipelines","og_locale":"en_US","og_type":"article","og_title":"Creating Video Processing Pipelines With Cloudinary","og_description":"The Cloudinary API provides several strategies for processing video with a wide range of optimizations, effects, and editing capabilities. Learn how.","og_url":"https:\/\/cloudinary.com\/blog\/creating-video-processing-pipelines","og_site_name":"Cloudinary Blog","article_published_time":"2024-08-06T14:00:00+00:00","article_modified_time":"2024-09-07T23:25:36+00:00","og_image":[{"width":2000,"height":1100,"url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1722622586\/video_processing-blog\/video_processing-blog-jpg?_i=AA","type":"image\/jpeg"}],"author":"melindapham","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/cloudinary.com\/blog\/creating-video-processing-pipelines#article","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/creating-video-processing-pipelines"},"author":{"name":"melindapham","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/0d5ad601e4c3b5be89245dfb14be42d9"},"headline":"Creating Video Processing Pipelines With Cloudinary","datePublished":"2024-08-06T14:00:00+00:00","dateModified":"2024-09-07T23:25:36+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/creating-video-processing-pipelines"},"wordCount":862,"publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/creating-video-processing-pipelines#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1722622586\/video_processing-blog\/video_processing-blog.jpg?_i=AA","keywords":["Video","Video API","Video Transformation"],"inLanguage":"en-US","copyrightYear":"2024","copyrightHolder":{"@id":"https:\/\/cloudinary.com\/#organization"}},{"@type":"WebPage","@id":"https:\/\/cloudinary.com\/blog\/creating-video-processing-pipelines","url":"https:\/\/cloudinary.com\/blog\/creating-video-processing-pipelines","name":"Creating Video Processing Pipelines With Cloudinary","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/creating-video-processing-pipelines#primaryimage"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/creating-video-processing-pipelines#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1722622586\/video_processing-blog\/video_processing-blog.jpg?_i=AA","datePublished":"2024-08-06T14:00:00+00:00","dateModified":"2024-09-07T23:25:36+00:00","description":"The Cloudinary API provides several strategies for processing video with a wide range of optimizations, effects, and editing capabilities. Learn how.","breadcrumb":{"@id":"https:\/\/cloudinary.com\/blog\/creating-video-processing-pipelines#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudinary.com\/blog\/creating-video-processing-pipelines"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/creating-video-processing-pipelines#primaryimage","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1722622586\/video_processing-blog\/video_processing-blog.jpg?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1722622586\/video_processing-blog\/video_processing-blog.jpg?_i=AA","width":2000,"height":1100},{"@type":"BreadcrumbList","@id":"https:\/\/cloudinary.com\/blog\/creating-video-processing-pipelines#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudinary.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Creating Video Processing Pipelines With Cloudinary"}]},{"@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":"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/0d5ad601e4c3b5be89245dfb14be42d9","name":"melindapham","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/e6f989fa97fe94be61596259d8629c3df65aec4c7da5c0000f90d810f313d4f4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e6f989fa97fe94be61596259d8629c3df65aec4c7da5c0000f90d810f313d4f4?s=96&d=mm&r=g","caption":"melindapham"}}]}},"jetpack_featured_media_url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1722622586\/video_processing-blog\/video_processing-blog.jpg?_i=AA","_links":{"self":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/35111","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\/87"}],"replies":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/comments?post=35111"}],"version-history":[{"count":2,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/35111\/revisions"}],"predecessor-version":[{"id":35602,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/35111\/revisions\/35602"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media\/35130"}],"wp:attachment":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media?parent=35111"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/categories?post=35111"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/tags?post=35111"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}