{"id":28342,"date":"2021-05-18T22:02:52","date_gmt":"2021-05-18T22:02:52","guid":{"rendered":"http:\/\/add-video-bumper-with-react-and-cloudinary"},"modified":"2024-05-27T14:32:45","modified_gmt":"2024-05-27T21:32:45","slug":"add-video-bumper-with-react-and-cloudinary","status":"publish","type":"post","link":"https:\/\/cloudinary.com\/blog\/guest_post\/add-video-bumper-with-react-and-cloudinary\/","title":{"rendered":"Add a Video Bumper with React &amp; Cloudinary"},"content":{"rendered":"<div class=\"wp-block-cloudinary-markdown \"><p>Custom bumpers at the beginning of videos can create a consistent experience that makes your content feel more professional and branded. In this tutorial, we\u2019ll learn how to use Cloudinary to insert a <a href=\"https:\/\/cloudinary.com\/glossary\/bumper\">bumper<\/a> into any video. Then, we\u2019ll display the generated video in a React component.<\/p>\n<\/div>\n\n\n  <div class=\"wp-block-cloudinary-code-sandbox \">\n    <iframe\n      src=\"https:\/\/codesandbox.io\/embed\/video-bumpers-react-cloudinary-q6r9v?theme=dark&amp;codemirror=1&amp;highlights=&amp;editorsize=50&amp;fontsize=14&amp;expanddevtools=0&amp;hidedevtools=0&amp;eslint=0&amp;forcerefresh=0&amp;hidenavigation=0&amp;initialpath=%2F&amp;module=%2Fsrc%2FApp.js&amp;moduleview=0&amp;previewwindow=&amp;view=&amp;runonclick=1\"\n      height=\"500\"\n      style=\"width: 100%;\"\n      title=\"Video Bumpers With React &amp; Cloudinary!\"\n      loading=\"lazy\"\n      allow=\"accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking\"\n      sandbox=\"allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts\"\n    ><\/iframe>\n  <\/div>\n\n\n<div class=\"wp-block-cloudinary-markdown \"><h2>Upload your assets to Cloudinary.<\/h2>\n<p>First, upload the videos to Cloudinary. The fastest way to do this is by using the <a href=\"https:\/\/cloudinary.com\/users\/login?RelayState=%2Fconsole%3Fap%3Dlwj\">Cloudinary console<\/a>.<\/p>\n<p>For this tutorial, we\u2019ll use the following video as our bumper video:<\/p>\n<video controls>\n  <source src=\"https:\/\/res.cloudinary.com\/jlengstorf\/video\/upload\/q_auto,f_auto,w_600\/mediajams\/disappointed-coffee.mp4\" \/>\n<\/video>\n<pre class=\"js-syntax-highlighted\"><code>https:\/\/res.cloudinary.com\/jlengstorf\/video\/upload\/mediajams\/disappointed-coffee.mp4\n<\/code><\/pre>\n<p>For the full video, we\u2019ll use this one:<\/p>\n<video controls>\n  <source src=\"https:\/\/res.cloudinary.com\/jlengstorf\/video\/upload\/q_auto,f_auto,w_600\/mediajams\/deploy-to-netlify.mp4\" \/>\n<\/video>\n<pre class=\"js-syntax-highlighted\"><code>https:\/\/res.cloudinary.com\/jlengstorf\/video\/upload\/mediajams\/deploy-to-netlify.mp4\n<\/code><\/pre>\n<p>Once we\u2019re finished, we\u2019ll combine these two videos into a single video!<\/p>\n<h2>Create a Video Component in React<\/h2>\n<p>Before we add the logo, let\u2019s create a React component that displays our Cloudinary video.<\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript shcb-wrap-lines\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">Video<\/span>(<span class=\"hljs-params\">{ cloudName, videoId, bumperId }<\/span>) <\/span>{\n  <span class=\"hljs-comment\">\/\/ set up a Cloudinary URL to use your cloud name and display video<\/span>\n  <span class=\"hljs-keyword\">let<\/span> videoSource = <span class=\"hljs-string\">`https:\/\/res.cloudinary.com\/<span class=\"hljs-subst\">${cloudName}<\/span>\/video\/upload`<\/span>;\n\n  <span class=\"hljs-comment\">\/\/ automatically adjust the quality, and set the video to 600px wide<\/span>\n  videoSource += <span class=\"hljs-string\">\"\/q_auto,w_600\"<\/span>;\n\n  <span class=\"hljs-comment\">\/\/ set the public ID to display the video as an MP4<\/span>\n  videoSource += <span class=\"hljs-string\">`\/<span class=\"hljs-subst\">${videoId}<\/span>.mp4`<\/span>;\n\n  <span class=\"hljs-comment\">\/\/ add the full URL to a standard HTML5 video element<\/span>\n  <span class=\"hljs-keyword\">return<\/span> (\n    <span class=\"xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">video<\/span> <span class=\"hljs-attr\">controls<\/span>&gt;<\/span>\n      <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">source<\/span> <span class=\"hljs-attr\">src<\/span>=<span class=\"hljs-string\">{videoSource}<\/span> <span class=\"hljs-attr\">type<\/span>=<span class=\"hljs-string\">\"video\/mp4\"<\/span> \/&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">video<\/span>&gt;<\/span><\/span>\n  );\n}\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n<p>The component, which we\u2019ve named <code>Video<\/code>, accepts three values as props: <code>cloudName<\/code>, <code>videoId<\/code>, and <code>bumperId<\/code>.<\/p>\n<p>The <code>cloudName<\/code> should contain our Cloudinary cloud name, which is displayed at the top-right of the console.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/jlengstorf\/image\/upload\/q_auto,f_auto,w_600\/c_limit,w_2000\/f_auto\/q_auto\/v1617499746\/mediajams\/cloud-name.png\" alt=\"The Cloudinary console with an arrow pointing to the location of the cloud name.\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"600\" height=\"413\"\/><\/p>\n<p>The <code>videoId<\/code> will contain the public ID of the video asset, which is the name of the file on Cloudinary, including any folders. Using our example video from above, the public ID is <code>mediajams\/deploy-to-netlify<\/code>.<\/p>\n<p>Finally, the <code>bumperId<\/code> will contain the public ID of the bumper video. For our bumper above, the public ID is <code>mediajams\/disappointed-coffee<\/code>.<\/p>\n<p>To set up our video, we build a Cloudinary URL that contains:<\/p>\n<ol>\n<li>The public Cloudinary URL, <code>https:\/\/res.cloudinary.com\/<\/code>\n<\/li>\n<li>Our cloud name<\/li>\n<li>The asset type, <code>\/video\/upload\/<\/code>\n<\/li>\n<li>Transformations to adjust the quality automatically and resize to 600px wide: <code>q_auto,w_600<\/code>\n<\/li>\n<li>The public ID of our video<\/li>\n<li>A file type of MP4 using a file extension<\/li>\n<\/ol>\n<p>Once we have the URL, we can add that as the <code>src<\/code> value in a video element, and return that from our component.<\/p>\n<h2>Add a bumper to our video<\/h2>\n<p>Inserting the bumper requires what\u2019s known as <a href=\"https:\/\/cloudinary.com\/documentation\/video_manipulation_and_delivery?ap=lwj#concatenating_videos\">splicing video<\/a>. The splice flag tells Cloudinary to concatenate the videos instead of laying them over the top of each other, which is the default behavior for <a href=\"https:\/\/cloudinary.com\/documentation\/video_manipulation_and_delivery?ap=lwj#adding_video_overlays\">video overlays<\/a>.<\/p>\n<p>Setting the <a href=\"https:\/\/cloudinary.com\/documentation\/transformation_reference?ap=lwj#so_start_offset\">start offset transformation<\/a> to \u20180\u2019 moves the bumper to the beginning of the video (by default it would be added to the end), and setting the <a href=\"https:\/\/cloudinary.com\/documentation\/transformation_reference?ap=lwj#c_fill\">crop to fill<\/a> and the width to 600px ensures that the bumper is the same size as the video it\u2019s being added to.<\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript shcb-wrap-lines\">  <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">Video<\/span>(<span class=\"hljs-params\">{ cloudName, videoId, bumperId }<\/span>) <\/span>{\n    <span class=\"hljs-comment\">\/\/ set up a Cloudinary URL to use your cloud name and display video<\/span>\n    <span class=\"hljs-keyword\">let<\/span> videoSource = <span class=\"hljs-string\">`https:\/\/res.cloudinary.com\/<span class=\"hljs-subst\">${cloudName}<\/span>\/video\/upload`<\/span>;\n\n    <span class=\"hljs-comment\">\/\/ automatically adjust the quality, and set the video to 600px wide<\/span>\n    videoSource += <span class=\"hljs-string\">\"\/q_auto,w_600\"<\/span>;\n\n+   <span class=\"hljs-comment\">\/\/ for overlays, replace folder slashes in public IDs with colons<\/span>\n+   <span class=\"hljs-keyword\">const<\/span> bumper = bumperId.replace(<span class=\"hljs-string\">\"\/\"<\/span>, <span class=\"hljs-string\">\":\"<\/span>);\n+\n+   <span class=\"hljs-comment\">\/\/ splice in the bumper video at the beginning<\/span>\n+   <span class=\"hljs-comment\">\/\/ set it to the same width, and make sure it fills the space<\/span>\n+   videoSource += <span class=\"hljs-string\">`\/l_video:<span class=\"hljs-subst\">${bumper}<\/span>,c_fill,w_600,fl_splice,so_0`<\/span>;\n\n    <span class=\"hljs-comment\">\/\/ set the public ID to display the video as an MP4<\/span>\n    videoSource += <span class=\"hljs-string\">`\/<span class=\"hljs-subst\">${videoId}<\/span>.mp4`<\/span>;\n\n    <span class=\"hljs-comment\">\/\/ add the full URL to a standard HTML5 video element<\/span>\n    <span class=\"hljs-keyword\">return<\/span> (\n      <span class=\"xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">video<\/span> <span class=\"hljs-attr\">controls<\/span>&gt;<\/span>\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">source<\/span> <span class=\"hljs-attr\">src<\/span>=<span class=\"hljs-string\">{videoSource}<\/span> <span class=\"hljs-attr\">type<\/span>=<span class=\"hljs-string\">\"video\/mp4\"<\/span> \/&gt;<\/span>\n      <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">video<\/span>&gt;<\/span><\/span>\n    );\n  }\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n<h2>Display the branded video in a React component on screen<\/h2>\n<p>With our <code>Video<\/code> component ready to insert bumpers, we can use it!<\/p>\n<p>In any React app, add the component like this:<\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript shcb-wrap-lines\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">App<\/span>(<span class=\"hljs-params\"><\/span>) <\/span>{\n  <span class=\"hljs-keyword\">return<\/span> (\n    <span class=\"xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">main<\/span>&gt;<\/span>\n      <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">h1<\/span>&gt;<\/span>Video Bumpers With React &amp; Cloudinary!<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">h1<\/span>&gt;<\/span>\n      <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">Video<\/span>\n        <span class=\"hljs-attr\">cloudName<\/span>=<span class=\"hljs-string\">\"jlengstorf\"<\/span>\n        <span class=\"hljs-attr\">bumperId<\/span>=<span class=\"hljs-string\">\"mediajams\/disappointed-coffee\"<\/span>\n        <span class=\"hljs-attr\">videoId<\/span>=<span class=\"hljs-string\">\"mediajams\/deploy-to-netlify\"<\/span>\n      \/&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">main<\/span>&gt;<\/span><\/span>\n  );\n}\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n<p>The video that renders on-screen has a short bumper inserted at the beginning, allowing us to quickly level up the branding of any video we display on our site!<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":41,"featured_media":28343,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_cloudinary_featured_overwrite":false,"footnotes":""},"categories":[1],"tags":[134,246,371,303],"class_list":["post-28342","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-guest-post","tag-react","tag-under-review","tag-video"],"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>Add a Video Bumper with React &amp; Cloudinary<\/title>\n<meta name=\"description\" content=\"Custom bumpers at the beginning of videos can create a consistent experience that makes your content feel more professional and branded. In this tutorial, we\u2019ll learn how to use Cloudinary to insert a bumper into any video. Then, we&#039;ll display the generated video in a React component.\" \/>\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\/guest_post\/add-video-bumper-with-react-and-cloudinary\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Add a Video Bumper with React &amp; Cloudinary\" \/>\n<meta property=\"og:description\" content=\"Custom bumpers at the beginning of videos can create a consistent experience that makes your content feel more professional and branded. In this tutorial, we\u2019ll learn how to use Cloudinary to insert a bumper into any video. Then, we&#039;ll display the generated video in a React component.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudinary.com\/blog\/guest_post\/add-video-bumper-with-react-and-cloudinary\" \/>\n<meta property=\"og:site_name\" content=\"Cloudinary Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-05-18T22:02:52+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-27T21:32:45+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681924069\/Web_Assets\/blog\/9a072a10ec6d36bc6babd311ed3c009b25e69bef-2550x1700-1_283434a2a2\/9a072a10ec6d36bc6babd311ed3c009b25e69bef-2550x1700-1_283434a2a2.png?_i=AA\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"NewsArticle\",\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/add-video-bumper-with-react-and-cloudinary#article\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/add-video-bumper-with-react-and-cloudinary\/\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"Add a Video Bumper with React &amp; Cloudinary\",\"datePublished\":\"2021-05-18T22:02:52+00:00\",\"dateModified\":\"2024-05-27T21:32:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/add-video-bumper-with-react-and-cloudinary\/\"},\"wordCount\":8,\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/add-video-bumper-with-react-and-cloudinary#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681924069\/Web_Assets\/blog\/9a072a10ec6d36bc6babd311ed3c009b25e69bef-2550x1700-1_283434a2a2\/9a072a10ec6d36bc6babd311ed3c009b25e69bef-2550x1700-1_283434a2a2.png?_i=AA\",\"keywords\":[\"Guest Post\",\"React\",\"Under Review\",\"Video\"],\"inLanguage\":\"en-US\",\"copyrightYear\":\"2021\",\"copyrightHolder\":{\"@id\":\"https:\/\/cloudinary.com\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/add-video-bumper-with-react-and-cloudinary\/\",\"url\":\"https:\/\/cloudinary.com\/blog\/guest_post\/add-video-bumper-with-react-and-cloudinary\",\"name\":\"Add a Video Bumper with React &amp; Cloudinary\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/add-video-bumper-with-react-and-cloudinary#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/add-video-bumper-with-react-and-cloudinary#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681924069\/Web_Assets\/blog\/9a072a10ec6d36bc6babd311ed3c009b25e69bef-2550x1700-1_283434a2a2\/9a072a10ec6d36bc6babd311ed3c009b25e69bef-2550x1700-1_283434a2a2.png?_i=AA\",\"datePublished\":\"2021-05-18T22:02:52+00:00\",\"dateModified\":\"2024-05-27T21:32:45+00:00\",\"description\":\"Custom bumpers at the beginning of videos can create a consistent experience that makes your content feel more professional and branded. In this tutorial, we\u2019ll learn how to use Cloudinary to insert a bumper into any video. Then, we'll display the generated video in a React component.\",\"breadcrumb\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/add-video-bumper-with-react-and-cloudinary#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cloudinary.com\/blog\/guest_post\/add-video-bumper-with-react-and-cloudinary\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/add-video-bumper-with-react-and-cloudinary#primaryimage\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681924069\/Web_Assets\/blog\/9a072a10ec6d36bc6babd311ed3c009b25e69bef-2550x1700-1_283434a2a2\/9a072a10ec6d36bc6babd311ed3c009b25e69bef-2550x1700-1_283434a2a2.png?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681924069\/Web_Assets\/blog\/9a072a10ec6d36bc6babd311ed3c009b25e69bef-2550x1700-1_283434a2a2\/9a072a10ec6d36bc6babd311ed3c009b25e69bef-2550x1700-1_283434a2a2.png?_i=AA\",\"width\":2550,\"height\":1700},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/add-video-bumper-with-react-and-cloudinary#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cloudinary.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Add a Video Bumper with React &amp; 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\":\"\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Add a Video Bumper with React &amp; Cloudinary","description":"Custom bumpers at the beginning of videos can create a consistent experience that makes your content feel more professional and branded. In this tutorial, we\u2019ll learn how to use Cloudinary to insert a bumper into any video. Then, we'll display the generated video in a React component.","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\/guest_post\/add-video-bumper-with-react-and-cloudinary","og_locale":"en_US","og_type":"article","og_title":"Add a Video Bumper with React &amp; Cloudinary","og_description":"Custom bumpers at the beginning of videos can create a consistent experience that makes your content feel more professional and branded. In this tutorial, we\u2019ll learn how to use Cloudinary to insert a bumper into any video. Then, we'll display the generated video in a React component.","og_url":"https:\/\/cloudinary.com\/blog\/guest_post\/add-video-bumper-with-react-and-cloudinary","og_site_name":"Cloudinary Blog","article_published_time":"2021-05-18T22:02:52+00:00","article_modified_time":"2024-05-27T21:32:45+00:00","twitter_card":"summary_large_image","twitter_image":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681924069\/Web_Assets\/blog\/9a072a10ec6d36bc6babd311ed3c009b25e69bef-2550x1700-1_283434a2a2\/9a072a10ec6d36bc6babd311ed3c009b25e69bef-2550x1700-1_283434a2a2.png?_i=AA","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/cloudinary.com\/blog\/guest_post\/add-video-bumper-with-react-and-cloudinary#article","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/guest_post\/add-video-bumper-with-react-and-cloudinary\/"},"author":{"name":"","@id":""},"headline":"Add a Video Bumper with React &amp; Cloudinary","datePublished":"2021-05-18T22:02:52+00:00","dateModified":"2024-05-27T21:32:45+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/guest_post\/add-video-bumper-with-react-and-cloudinary\/"},"wordCount":8,"publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/guest_post\/add-video-bumper-with-react-and-cloudinary#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681924069\/Web_Assets\/blog\/9a072a10ec6d36bc6babd311ed3c009b25e69bef-2550x1700-1_283434a2a2\/9a072a10ec6d36bc6babd311ed3c009b25e69bef-2550x1700-1_283434a2a2.png?_i=AA","keywords":["Guest Post","React","Under Review","Video"],"inLanguage":"en-US","copyrightYear":"2021","copyrightHolder":{"@id":"https:\/\/cloudinary.com\/#organization"}},{"@type":"WebPage","@id":"https:\/\/cloudinary.com\/blog\/guest_post\/add-video-bumper-with-react-and-cloudinary\/","url":"https:\/\/cloudinary.com\/blog\/guest_post\/add-video-bumper-with-react-and-cloudinary","name":"Add a Video Bumper with React &amp; Cloudinary","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/guest_post\/add-video-bumper-with-react-and-cloudinary#primaryimage"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/guest_post\/add-video-bumper-with-react-and-cloudinary#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681924069\/Web_Assets\/blog\/9a072a10ec6d36bc6babd311ed3c009b25e69bef-2550x1700-1_283434a2a2\/9a072a10ec6d36bc6babd311ed3c009b25e69bef-2550x1700-1_283434a2a2.png?_i=AA","datePublished":"2021-05-18T22:02:52+00:00","dateModified":"2024-05-27T21:32:45+00:00","description":"Custom bumpers at the beginning of videos can create a consistent experience that makes your content feel more professional and branded. In this tutorial, we\u2019ll learn how to use Cloudinary to insert a bumper into any video. Then, we'll display the generated video in a React component.","breadcrumb":{"@id":"https:\/\/cloudinary.com\/blog\/guest_post\/add-video-bumper-with-react-and-cloudinary#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudinary.com\/blog\/guest_post\/add-video-bumper-with-react-and-cloudinary"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/guest_post\/add-video-bumper-with-react-and-cloudinary#primaryimage","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681924069\/Web_Assets\/blog\/9a072a10ec6d36bc6babd311ed3c009b25e69bef-2550x1700-1_283434a2a2\/9a072a10ec6d36bc6babd311ed3c009b25e69bef-2550x1700-1_283434a2a2.png?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681924069\/Web_Assets\/blog\/9a072a10ec6d36bc6babd311ed3c009b25e69bef-2550x1700-1_283434a2a2\/9a072a10ec6d36bc6babd311ed3c009b25e69bef-2550x1700-1_283434a2a2.png?_i=AA","width":2550,"height":1700},{"@type":"BreadcrumbList","@id":"https:\/\/cloudinary.com\/blog\/guest_post\/add-video-bumper-with-react-and-cloudinary#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudinary.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Add a Video Bumper with React &amp; 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":""}]}},"jetpack_featured_media_url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681924069\/Web_Assets\/blog\/9a072a10ec6d36bc6babd311ed3c009b25e69bef-2550x1700-1_283434a2a2\/9a072a10ec6d36bc6babd311ed3c009b25e69bef-2550x1700-1_283434a2a2.png?_i=AA","_links":{"self":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/28342","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=28342"}],"version-history":[{"count":3,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/28342\/revisions"}],"predecessor-version":[{"id":33951,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/28342\/revisions\/33951"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media\/28343"}],"wp:attachment":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media?parent=28342"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/categories?post=28342"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/tags?post=28342"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}