{"id":35753,"date":"2024-09-25T07:00:00","date_gmt":"2024-09-25T14:00:00","guid":{"rendered":"https:\/\/cloudinary.com\/blog\/?p=35753"},"modified":"2024-09-25T12:01:25","modified_gmt":"2024-09-25T19:01:25","slug":"ios-video-preprocessing","status":"publish","type":"post","link":"https:\/\/cloudinary.com\/blog\/ios-video-preprocessing","title":{"rendered":"iOS Video Preprocessing"},"content":{"rendered":"\n<p>Imagine this: you\u2019re on vacation, you shoot an amazing 4K video, and now you want to upload it to the cloud to share with your friends or to store it safely. You hit \u201cupload\u201d and then learn that the file is too large. What\u2019s worse, the app crashes because it\u2019s trying to handle too much data at once. We\u2019ve all been there. This is where <a href=\"https:\/\/github.com\/cloudinary\/cloudinary_ios\">Cloudinary\u2019s iOS SDK<\/a> comes to the rescue.<\/p>\n\n\n\n<p>In this blog post, we\u2019ll show you how to efficiently compress, format, and validate videos before uploading, using a feature from the Cloudinary iOS SDK. This feature ensures your large videos are uploaded quickly and without unnecessary memory overhead.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Why Compress Video Before Uploading?<\/h2>\n\n\n\n<p>These days, videos are incredibly detailed. Smartphones can capture high-resolution 4K and even 8K footage. However, higher resolution means larger file sizes, and that can lead to a few problems:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Bandwidth<\/strong>. Uploading large video files can consume a lot of data. Not everyone has a fast or unlimited internet connection.<\/li>\n\n\n\n<li><strong>Upload time<\/strong>. Large files take longer to upload, leading to frustrating delays.<\/li>\n\n\n\n<li><strong>Memory consumption<\/strong>. Handling large files all in memory can cause apps to crash due to limited resources on mobile devices.<\/li>\n<\/ul>\n\n\n\n<p>To solve these issues, we need to compress videos before uploading. Compression reduces the file size while maintaining quality, making it easier to handle, upload, and store your files.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How Cloudinary\u2019s Preprocessing Feature Simplifies Video Uploads<\/h2>\n\n\n\n<p>Cloudinary\u2019s iOS SDK offers a feature called Preprocessing, which allows developers to resize, compress, and validate videos before uploading. The SDK handles these operations in a chain, making it easy to fine-tune each step of the upload process.<\/p>\n\n\n\n<p>Here\u2019s how the preprocessing chain works:<\/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\">let<\/span> preprocessChain = CLDVideoPreprocessChain()\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0.addStep(CLDVideoPreprocessHelpers.setOutputDimensions(dimensions: CGSize(width: <span class=\"hljs-number\">640<\/span>, <span class=\"hljs-attr\">height<\/span>: <span class=\"hljs-number\">640<\/span>)))\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0.addStep(CLDVideoPreprocessHelpers.setOutputFormat(format: .mov))\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0.addStep(CLDVideoPreprocessHelpers.setCompressionPreset(preset: AVAssetExportPresetHighestQuality))\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0.addStep(CLDVideoPreprocessHelpers.dimensionsValidator(minWidth: <span class=\"hljs-number\">100<\/span>, <span class=\"hljs-attr\">maxWidth<\/span>: <span class=\"hljs-number\">2000<\/span>, <span class=\"hljs-attr\">minHeight<\/span>: <span class=\"hljs-number\">100<\/span>, <span class=\"hljs-attr\">maxHeight<\/span>: <span class=\"hljs-number\">1000<\/span>))<\/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<h2 class=\"wp-block-heading\">What Does Each Function Do?<\/h2>\n\n\n\n<p>Let\u2019s break down the different steps in the preprocessing chain:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Set Output Dimensions<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css shcb-wrap-lines\"><span class=\"hljs-selector-class\">.addStep<\/span>(<span class=\"hljs-selector-tag\">CLDVideoPreprocessHelpers<\/span><span class=\"hljs-selector-class\">.setOutputDimensions<\/span>(<span class=\"hljs-selector-tag\">dimensions<\/span>: <span class=\"hljs-selector-tag\">CGSize<\/span>(<span class=\"hljs-selector-tag\">width<\/span>: 640, <span class=\"hljs-selector-tag\">height<\/span>: 640)))<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>This step resizes the video to the specified dimensions. In this example, we\u2019ve resized the video to 640&#215;640 pixels, which is great for social media or any platform where a smaller size is preferred.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Set Output Format<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css shcb-wrap-lines\"><span class=\"hljs-selector-class\">.addStep<\/span>(<span class=\"hljs-selector-tag\">CLDVideoPreprocessHelpers<\/span><span class=\"hljs-selector-class\">.setOutputFormat<\/span>(<span class=\"hljs-selector-tag\">format<\/span>: <span class=\"hljs-selector-class\">.mov<\/span>))<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Videos can be exported in different formats, such as MOV or MP4. This step allows you to change the format to ensure compatibility with the platform where the video will be uploaded.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Set Compression Preset<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css shcb-wrap-lines\"><span class=\"hljs-selector-class\">.addStep<\/span>(<span class=\"hljs-selector-tag\">CLDVideoPreprocessHelpers<\/span><span class=\"hljs-selector-class\">.setCompressionPreset<\/span>(<span class=\"hljs-selector-tag\">preset<\/span>: <span class=\"hljs-selector-tag\">AVAssetExportPresetHighestQuality<\/span>))<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Compression presets are used to balance between quality and file size. You can choose different presets like highest quality or medium quality, depending on your use case. In this case, we\u2019re maintaining the highest quality possible while still compressing the file.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Validate Dimensions<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css shcb-wrap-lines\"><span class=\"hljs-selector-class\">.addStep<\/span>(<span class=\"hljs-selector-tag\">CLDVideoPreprocessHelpers<\/span><span class=\"hljs-selector-class\">.dimensionsValidator<\/span>(<span class=\"hljs-selector-tag\">minWidth<\/span>: 100, <span class=\"hljs-selector-tag\">maxWidth<\/span>: 2000, <span class=\"hljs-selector-tag\">minHeight<\/span>: 100, <span class=\"hljs-selector-tag\">maxHeight<\/span>: 1000))<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>The dimensions validator ensures that your video falls within a specific range of width and height. For example, this step checks that the video is at least 100&#215;100 pixels and no more than 2000&#215;1000 pixels. This can prevent uploading unreasonably large videos that could cause issues.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">A Real-World Example<\/h2>\n\n\n\n<p>If you\u2019re developing an app that allows users to upload videos to a social media platform, the videos need to be compressed for faster uploading and converted to a compatible format. Their size should be within certain limits to avoid slowing down the app or breaking the user experience.<\/p>\n\n\n\n<p>Here\u2019s how you can use the Cloudinary iOS SDK to make this process efficient:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript shcb-wrap-lines\"><span class=\"hljs-keyword\">let<\/span> preprocessChain = CLDVideoPreprocessChain()\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0.addStep(CLDVideoPreprocessHelpers.setOutputDimensions(dimensions: CGSize(width: <span class=\"hljs-number\">640<\/span>, <span class=\"hljs-attr\">height<\/span>: <span class=\"hljs-number\">640<\/span>)))\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0.addStep(CLDVideoPreprocessHelpers.setOutputFormat(format: .mov))\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0.addStep(CLDVideoPreprocessHelpers.setCompressionPreset(preset: AVAssetExportPresetHighestQuality))\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0.addStep(CLDVideoPreprocessHelpers.dimensionsValidator(minWidth: <span class=\"hljs-number\">100<\/span>, <span class=\"hljs-attr\">maxWidth<\/span>: <span class=\"hljs-number\">2000<\/span>, <span class=\"hljs-attr\">minHeight<\/span>: <span class=\"hljs-number\">100<\/span>, <span class=\"hljs-attr\">maxHeight<\/span>: <span class=\"hljs-number\">1000<\/span>))\n\n<span class=\"hljs-keyword\">let<\/span> params = CLDUploadRequestParams()\n\nparams.setResourceType(<span class=\"hljs-string\">\"video\"<\/span>)\n\ncloudinary.createUploader().upload(url: url <span class=\"hljs-keyword\">as<\/span> URL, <span class=\"hljs-attr\">uploadPreset<\/span>: <span class=\"hljs-string\">\"ios_sample\"<\/span>, <span class=\"hljs-attr\">params<\/span>: params, <span class=\"hljs-attr\">preprocessChain<\/span>: preprocessChain, <span class=\"hljs-attr\">completionHandler<\/span>: { response, error <span class=\"hljs-keyword\">in<\/span>\n\n\u00a0\u00a0\u00a0\u00a0<span class=\"hljs-keyword\">if<\/span> <span class=\"hljs-keyword\">let<\/span> response = response {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"hljs-comment\">\/\/ Handle success, e.g., save the uploaded video details to the database<\/span>\n\n\u00a0\u00a0\u00a0\u00a0} <span class=\"hljs-keyword\">else<\/span> <span class=\"hljs-keyword\">if<\/span> <span class=\"hljs-keyword\">let<\/span> error = error {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"hljs-comment\">\/\/ Handle the error, e.g., show a message to the user<\/span>\n\n\u00a0\u00a0\u00a0\u00a0}\n\n})<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><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>This example shows how you can configure the video upload, including setting the resource type, applying the preprocessing chain, and handling the response or error after the upload completes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>Uploading large videos shouldn\u2019t be a hassle. By using <a href=\"https:\/\/github.com\/cloudinary\/cloudinary_ios\">Cloudinary\u2019s iOS<\/a> SDK, you can take advantage of preprocessing features that compress, resize, and validate your videos before uploading. This ensures faster uploads, reduced memory usage, and a smoother user experience.<\/p>\n\n\n\n<p>Whether you\u2019re building a video-sharing app or just want to streamline your app\u2019s upload functionality, this preprocessing chain is a must-have tool. It takes the complexity out of handling large files and gives developers the flexibility to fine-tune their uploads.<\/p>\n\n\n\n<p>If you haven\u2019t already, give the Cloudinary iOS SDK a try and see how it can optimize video uploads in your app!<\/p>\n\n\n\n<p>Ready to make your app\u2019s video uploads smoother? <a href=\"https:\/\/github.com\/cloudinary\/cloudinary_ios\">Explore<\/a> the Cloudinary iOS SDK features or <a href=\"https:\/\/cloudinary.com\/\">sign up for a free Cloudinary<\/a> account today.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Imagine this: you\u2019re on vacation, you shoot an amazing 4K video, and now you want to upload it to the cloud to share with your friends or to store it safely. You hit \u201cupload\u201d and then learn that the file is too large. What\u2019s worse, the app crashes because it\u2019s trying to handle too much [&hellip;]<\/p>\n","protected":false},"author":87,"featured_media":35758,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_cloudinary_featured_overwrite":false,"footnotes":""},"categories":[1],"tags":[174,202,227,303],"class_list":["post-35753","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-ios","tag-mobile","tag-performance-optimization","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>iOS Video Preprocessing<\/title>\n<meta name=\"description\" content=\"Imagine this: you\u2019re on vacation, you shoot an amazing 4K video, and now you want to upload it to the cloud to share with your friends or to store it\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/medium.com\/@adi.mizrahi\/ios-video-preprocessing-ab36110397aa\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"iOS Video Preprocessing\" \/>\n<meta property=\"og:description\" content=\"Imagine this: you\u2019re on vacation, you shoot an amazing 4K video, and now you want to upload it to the cloud to share with your friends or to store it\" \/>\n<meta property=\"og:url\" content=\"https:\/\/medium.com\/@adi.mizrahi\/ios-video-preprocessing-ab36110397aa\" \/>\n<meta property=\"og:site_name\" content=\"Cloudinary Blog\" \/>\n<meta property=\"article:published_time\" content=\"2024-09-25T14:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-25T19:01:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1727124830\/ios_preprocessing-blog\/ios_preprocessing-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:\/\/medium.com\/@adi.mizrahi\/ios-video-preprocessing-ab36110397aa#article\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/ios-video-preprocessing\"},\"author\":{\"name\":\"melindapham\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/0d5ad601e4c3b5be89245dfb14be42d9\"},\"headline\":\"iOS Video Preprocessing\",\"datePublished\":\"2024-09-25T14:00:00+00:00\",\"dateModified\":\"2024-09-25T19:01:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/ios-video-preprocessing\"},\"wordCount\":701,\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/medium.com\/@adi.mizrahi\/ios-video-preprocessing-ab36110397aa#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1727124830\/ios_preprocessing-blog\/ios_preprocessing-blog.jpg?_i=AA\",\"keywords\":[\"iOS\",\"Mobile\",\"Performance Optimization\",\"Video\"],\"inLanguage\":\"en-US\",\"copyrightYear\":\"2024\",\"copyrightHolder\":{\"@id\":\"https:\/\/cloudinary.com\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cloudinary.com\/blog\/ios-video-preprocessing\",\"url\":\"https:\/\/medium.com\/@adi.mizrahi\/ios-video-preprocessing-ab36110397aa\",\"name\":\"iOS Video Preprocessing\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/medium.com\/@adi.mizrahi\/ios-video-preprocessing-ab36110397aa#primaryimage\"},\"image\":{\"@id\":\"https:\/\/medium.com\/@adi.mizrahi\/ios-video-preprocessing-ab36110397aa#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1727124830\/ios_preprocessing-blog\/ios_preprocessing-blog.jpg?_i=AA\",\"datePublished\":\"2024-09-25T14:00:00+00:00\",\"dateModified\":\"2024-09-25T19:01:25+00:00\",\"description\":\"Imagine this: you\u2019re on vacation, you shoot an amazing 4K video, and now you want to upload it to the cloud to share with your friends or to store it\",\"breadcrumb\":{\"@id\":\"https:\/\/medium.com\/@adi.mizrahi\/ios-video-preprocessing-ab36110397aa#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/medium.com\/@adi.mizrahi\/ios-video-preprocessing-ab36110397aa\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/medium.com\/@adi.mizrahi\/ios-video-preprocessing-ab36110397aa#primaryimage\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1727124830\/ios_preprocessing-blog\/ios_preprocessing-blog.jpg?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1727124830\/ios_preprocessing-blog\/ios_preprocessing-blog.jpg?_i=AA\",\"width\":2000,\"height\":1100},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/medium.com\/@adi.mizrahi\/ios-video-preprocessing-ab36110397aa#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cloudinary.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"iOS Video Preprocessing\"}]},{\"@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":"iOS Video Preprocessing","description":"Imagine this: you\u2019re on vacation, you shoot an amazing 4K video, and now you want to upload it to the cloud to share with your friends or to store it","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:\/\/medium.com\/@adi.mizrahi\/ios-video-preprocessing-ab36110397aa","og_locale":"en_US","og_type":"article","og_title":"iOS Video Preprocessing","og_description":"Imagine this: you\u2019re on vacation, you shoot an amazing 4K video, and now you want to upload it to the cloud to share with your friends or to store it","og_url":"https:\/\/medium.com\/@adi.mizrahi\/ios-video-preprocessing-ab36110397aa","og_site_name":"Cloudinary Blog","article_published_time":"2024-09-25T14:00:00+00:00","article_modified_time":"2024-09-25T19:01:25+00:00","og_image":[{"width":2000,"height":1100,"url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1727124830\/ios_preprocessing-blog\/ios_preprocessing-blog-jpg?_i=AA","type":"image\/jpeg"}],"author":"melindapham","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/medium.com\/@adi.mizrahi\/ios-video-preprocessing-ab36110397aa#article","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/ios-video-preprocessing"},"author":{"name":"melindapham","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/0d5ad601e4c3b5be89245dfb14be42d9"},"headline":"iOS Video Preprocessing","datePublished":"2024-09-25T14:00:00+00:00","dateModified":"2024-09-25T19:01:25+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/ios-video-preprocessing"},"wordCount":701,"publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"image":{"@id":"https:\/\/medium.com\/@adi.mizrahi\/ios-video-preprocessing-ab36110397aa#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1727124830\/ios_preprocessing-blog\/ios_preprocessing-blog.jpg?_i=AA","keywords":["iOS","Mobile","Performance Optimization","Video"],"inLanguage":"en-US","copyrightYear":"2024","copyrightHolder":{"@id":"https:\/\/cloudinary.com\/#organization"}},{"@type":"WebPage","@id":"https:\/\/cloudinary.com\/blog\/ios-video-preprocessing","url":"https:\/\/medium.com\/@adi.mizrahi\/ios-video-preprocessing-ab36110397aa","name":"iOS Video Preprocessing","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/medium.com\/@adi.mizrahi\/ios-video-preprocessing-ab36110397aa#primaryimage"},"image":{"@id":"https:\/\/medium.com\/@adi.mizrahi\/ios-video-preprocessing-ab36110397aa#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1727124830\/ios_preprocessing-blog\/ios_preprocessing-blog.jpg?_i=AA","datePublished":"2024-09-25T14:00:00+00:00","dateModified":"2024-09-25T19:01:25+00:00","description":"Imagine this: you\u2019re on vacation, you shoot an amazing 4K video, and now you want to upload it to the cloud to share with your friends or to store it","breadcrumb":{"@id":"https:\/\/medium.com\/@adi.mizrahi\/ios-video-preprocessing-ab36110397aa#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/medium.com\/@adi.mizrahi\/ios-video-preprocessing-ab36110397aa"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/medium.com\/@adi.mizrahi\/ios-video-preprocessing-ab36110397aa#primaryimage","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1727124830\/ios_preprocessing-blog\/ios_preprocessing-blog.jpg?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1727124830\/ios_preprocessing-blog\/ios_preprocessing-blog.jpg?_i=AA","width":2000,"height":1100},{"@type":"BreadcrumbList","@id":"https:\/\/medium.com\/@adi.mizrahi\/ios-video-preprocessing-ab36110397aa#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudinary.com\/blog\/"},{"@type":"ListItem","position":2,"name":"iOS Video Preprocessing"}]},{"@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\/v1727124830\/ios_preprocessing-blog\/ios_preprocessing-blog.jpg?_i=AA","_links":{"self":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/35753","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=35753"}],"version-history":[{"count":2,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/35753\/revisions"}],"predecessor-version":[{"id":35755,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/35753\/revisions\/35755"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media\/35758"}],"wp:attachment":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media?parent=35753"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/categories?post=35753"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/tags?post=35753"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}