{"id":31284,"date":"2023-09-21T07:00:00","date_gmt":"2023-09-21T14:00:00","guid":{"rendered":"https:\/\/cloudinary.com\/blog\/?p=31284"},"modified":"2025-07-20T09:17:20","modified_gmt":"2025-07-20T16:17:20","slug":"how-to-guide-ios-native-video-player","status":"publish","type":"post","link":"https:\/\/cloudinary.com\/blog\/how-to-guide-ios-native-video-player","title":{"rendered":"Mobile Video Revolution: How-to Guide for Using Cloudinary\u2019s iOS Native Video Player"},"content":{"rendered":"\n<p>In the ever-evolving landscape of mobile technology, one thing has become abundantly clear: Video has taken center stage. Whether it\u2019s for entertainment, education, or communication, mobile devices have become our go-to screens for video consumption. In this blog post, we&#8217;ll embark on a journey through the astonishing growth of mobile video in recent years, explore the challenges of implementing a video player, delve into common considerations for integrating video experiences in your mobile apps, and then dive into a technical guide on how to incorporate video playback in your iOS app using the iOS Native Video Player from Cloudinary.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Mobile Video Explosion<\/h2>\n\n\n\n<p>It\u2019s no longer a secret that video content increases online user engagement and conversion rates. According to the <a href=\"https:\/\/contentmarketinginstitute.com\/articles\/win-video-content-format\" target=\"_blank\" rel=\"noreferrer noopener\">Content Marketing Institute<\/a>, video is the #1 content format used by brands to drive awareness, sell products or services, and build consumer trust.&nbsp;<\/p>\n\n\n\n<p>From a consumer perspective, with the ubiquity of smartphones and the ever-increasing availability of high-speed 5G internet, people are spending a substantial amount of their screen time on mobile devices. Furthermore, 90% of this time on mobile devices is spent on using apps (<a href=\"https:\/\/www.mobiloud.com\/blog\/mobile-apps-vs-mobile-websites#:~:text=Mobile%20app%20use%20is%20increasingly,spent%20using%20apps%2C%20vs%20websites\" target=\"_blank\" rel=\"noreferrer noopener\">source<\/a>).&nbsp;<\/p>\n\n\n\n<p>Video and mobile apps are truly a match made in heaven. There are several ways brands are embedding video experiences in their mobile apps:&nbsp;<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Product demonstrations.<\/strong> Shopping apps often leverage video to showcase products, highlight key benefits or important features that boost sales conversion.&nbsp;<\/li>\n\n\n\n<li><strong>How-to guides. <\/strong>Service-oriented or customer support apps use videos to explain how to use a product in daily life or provide troubleshooting tips. This helps improve customer experience and retention.&nbsp;<\/li>\n\n\n\n<li><strong>User-generated content (UGC).<\/strong> User-generated video reviews are a great way to build customer trust and loyalty. Mobile apps make it even easier for consumers to capture and upload reviews for products, restaurants, or tourist places.&nbsp;&nbsp;&nbsp;<\/li>\n\n\n\n<li><strong>Tutorials.<\/strong> Brands within fitness or education industries are increasingly leveraging video to provide on-demand tutorials and live classes through mobile apps.&nbsp;<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Challenges for Video Integration<\/h2>\n\n\n\n<p>As a mobile app developer, the integration of video playback into your apps is an exciting venture, but it does come with its own set of challenges. Here, we\u2019ll explore some of the key hurdles that developers often encounter:<\/p>\n\n\n\n<p>1. <strong>Compatibility and device fragmentation<\/strong>. Mobile devices come in various models and screen sizes. Ensuring that your video player works seamlessly across this spectrum can be a daunting task. Developers need to optimize video player layouts and controls to accommodate different screen sizes and resolutions.<\/p>\n\n\n\n<p>2. <strong>Network conditions<\/strong>. Mobile users can be on a variety of network conditions, ranging from high-speed WiFi to slow 3G connections. To deliver a smooth video experience, developers must implement adaptive streaming and handle network interruptions gracefully.<\/p>\n\n\n\n<p>3. <strong>Video formats<\/strong>. Supporting different video formats can be challenging, especially when dealing with a wide range of source materials. Developers need to consider format conversion, transcoding, or using versatile codecs to ensure compatibility.<\/p>\n\n\n\n<p>4. <strong>Cross-platform compatibility<\/strong>. If you aim to make your app available on both iOS and Android, you may face challenges in ensuring a consistent video experience across different platforms.<\/p>\n\n\n\n<p>5. <strong>Performance optimization<\/strong>. Ensuring that the video player is resource-efficient, doesn\u2019t drain the device\u2019s battery, and performs well under various conditions is an ongoing task.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Cloudinary iOS Native Video Player SDK<\/h2>\n\n\n\n<p>To help you seamlessly integrate video playback into your app, Cloudinary now offers the iOS Native Video Player SDK and as part of it the CLDVideoPlayer, which is a wrapper for iOS AVPlayer. This will allow you to quickly add videos to your iOS mobile app while ensuring superior performance and user experience.&nbsp;<\/p>\n\n\n\n<p>Here\u2019s how you can get started:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1: Installation<\/h3>\n\n\n\n<p>Begin by integrating the cloudinary_ios SDK into your Xcode project. You can do this using CocoaPods or Swift Package Manager, depending on your preference.<\/p>\n\n\n\n<p>CocoaPods:<\/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\">pod <span class=\"hljs-string\">'Cloudinary'<\/span>, <span class=\"hljs-string\">'~&gt; 4.0'<\/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<h3 class=\"wp-block-heading\">Step 2: Initialize Cloudinary<\/h3>\n\n\n\n<p>Set up your Cloudinary account and initialize it in your app. You\u2019ll need your cloud name and API key for this.<\/p>\n\n\n<pre class=\"wp-block-code\" 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-keyword\">let<\/span> config = CLDConfiguration(cloudName: <span class=\"hljs-string\">\"CLOUD_NAME\"<\/span>, <span class=\"hljs-attr\">apiKey<\/span>: <span class=\"hljs-string\">\"API_KEY\"<\/span>)\n\n<span class=\"hljs-keyword\">let<\/span> cloudinary = CLDCloudinary(configuration: config)<\/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\n\n<h3 class=\"wp-block-heading\">Step 3: Create CLDVideoPlayer<\/h3>\n\n\n\n<p>Now, let\u2019s create an instance of CLDVideoPlayer and set its publicId to the video you want to play.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml shcb-wrap-lines\">CLDVideoPlayer(publicId: \"<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">your_public_id<\/span>&gt;<\/span>\", cloudinary: <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">your_cloudinary_object<\/span>&gt;<\/span>)<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Or you can just send a URL.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml shcb-wrap-lines\">CLDVideoPlayer(url:\"<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">your_url<\/span>&gt;<\/span>\")<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Step 4: Display the Video<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">In Layer<\/h4>\n\n\n\n<p>You can add CLDVIdeoPlayer to an <code>AVPlayerLayer<\/code>.<\/p>\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-keyword\">@IBOutlet<\/span> weak var <span class=\"hljs-attribute\">videoView:<\/span> UIView!\n\nlet player = CLDVideoPlayer(<span class=\"hljs-attribute\">publicId:<\/span> <span class=\"hljs-string\">\"&lt;your_public_id&gt;\"<\/span>, <span class=\"hljs-attribute\">cloudinary:<\/span> &lt;your_cloudinary_object&gt;)\n\nlet playerLayer = AVPlayerLayer(<span class=\"hljs-attribute\">player:<\/span> player)\n\nvideoView.backgroundColor = .black\n\nplayerLayer.frame = self.videoView.bounds\n\nplayerLayer.videoGravity = .resizeAspectFill\n\nvideoView.layer.addSublayer(playerLayer)<\/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<h4 class=\"wp-block-heading\">In AVPlayerViewController<\/h4>\n\n\n\n<p>You can also add CLDVideoPlayer to an AVPlayerViewController.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css shcb-wrap-lines\"><span class=\"hljs-keyword\">@IBOutlet<\/span> weak var <span class=\"hljs-attribute\">videoView:<\/span> UIView!\n\nlet player = CLDVideoPlayer(<span class=\"hljs-attribute\">publicId:<\/span> <span class=\"hljs-string\">\"&lt;your_public_id&gt;\"<\/span>, <span class=\"hljs-attribute\">cloudinary:<\/span> &lt;your_cloudinary_object&gt;)\n\nlet playerController = AVPlayerViewController()\n\nplayerController.player = player\n\naddChild(playerController)\n\nplayerController.videoGravity = .resizeAspectFill\n\nvideoView.addSubview(playerController.view)\n\nplayerController.view.frame = videoView.bounds\n\nplayerController.view.autoresizingMask = &#91;.flexibleWidth, .flexibleHeight]\n\nplayerController.didMove(<span class=\"hljs-attribute\">toParent:<\/span> self)<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><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<h3 class=\"wp-block-heading\">Step 5: Video Action<\/h3>\n\n\n\n<p>To play the video you can just call the <code>play()function<\/code>.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css shcb-wrap-lines\"><span class=\"hljs-selector-tag\">player<\/span><span class=\"hljs-selector-class\">.play<\/span>()<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><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>You can also call various other actions such as <code>pause() , stop()<\/code>.<\/p>\n\n\n\n<p>And that\u2019s it! You\u2019ve successfully integrated video playback into your iOS app using the iOS Native Video Player from Cloudinary.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Key Features<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Adaptive bitrate streaming<\/h3>\n\n\n\n<p>By default, the iOS Native Video Player operates with an adaptive bitrate (ABR) mechanism, which means it automatically receives a manifest file in the form of a <a href=\"https:\/\/cloudinary.com\/glossary\/m3u8\">.m3u8<\/a> file and selects the most suitable playback link for your video.\u00a0<\/p>\n\n\n\n<p>If you wish to explicitly disable the automatic profile selection of the ABR feature, you can achieve this by setting the automaticStreamingProfile flag to false, giving you control over the adaptive streaming behavior of the iOS Native Video Player and so you can fine-tune your video playback experience.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml shcb-wrap-lines\">CLDVideoPlayer(publicId: \"<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">your_public_id<\/span>&gt;<\/span>\", cloudinary: <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">your_cloudinary_object<\/span>&gt;<\/span>, automaticStreamingProfile: false)<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Transformations<\/h3>\n\n\n\n<p>You can also add video transformations to adjust the video on the fly. For instance, you can trim, overlay images, normalize audio, and more along with an automatic streaming profile. However, these transformations must be applied in a chained manner. Learn more <a href=\"https:\/\/cloudinary.com\/documentation\/adaptive_bitrate_streaming#combining_transformations_with_automatic_streaming_profile_selection\" target=\"_blank\" rel=\"noreferrer noopener\">here<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Automatic Subtitles<\/h3>\n\n\n\n<p>If subtitles are enabled via URL, they will be automatically shown by the player. The following link will play a video with English subtitles.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript shcb-wrap-lines\">CLDVideoPlayer(url:<span class=\"hljs-string\">\"https:\/\/res.cloudinary.com\/demo\/video\/upload\/sp_auto:subtitles_(code_en-US;file_docs:narration.vtt)\/sea_turtle.m3u8\"<\/span>)<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><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\">Conclusion<\/h2>\n\n\n\n<p>Mobile video consumption has grown at an astonishing rate. As an iOS developer, you now have the power to tap into this trend by seamlessly integrating video playback into your apps with the iOS Native Video Player. Watch out for more in this space as we continue to invest in adding built-in Analytics as well as native video player SDKs for Android, React Native, and Flutter.&nbsp;<\/p>\n\n\n\n<p>To harness the mobile video revolution and take your iOS app to the next level, <a href=\"https:\/\/cloudinary.com\/users\/register_free\" target=\"_blank\" rel=\"noreferrer noopener\">get started here<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the ever-evolving landscape of mobile technology, one thing has become abundantly clear: Video has taken center stage. Whether it\u2019s for entertainment, education, or communication, mobile devices have become our go-to screens for video consumption. In this blog post, we&#8217;ll embark on a journey through the astonishing growth of mobile video in recent years, explore [&hellip;]<\/p>\n","protected":false},"author":87,"featured_media":31285,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_cloudinary_featured_overwrite":false,"footnotes":""},"categories":[1],"tags":[310],"class_list":["post-31284","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-video-player"],"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>Unlock Mobile Video&#039;s Potential With Cloudinary&#039;s iOS Native Video Player SDK<\/title>\n<meta name=\"description\" content=\"Integrate video playback into your iOS app with Cloudinary&#039;s iOS SDK and CLDVideoPlayer class.\" \/>\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-guide-ios-native-video-player\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Mobile Video Revolution: How-to Guide for Using Cloudinary\u2019s iOS Native Video Player\" \/>\n<meta property=\"og:description\" content=\"Integrate video playback into your iOS app with Cloudinary&#039;s iOS SDK and CLDVideoPlayer class.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudinary.com\/blog\/how-to-guide-ios-native-video-player\" \/>\n<meta property=\"og:site_name\" content=\"Cloudinary Blog\" \/>\n<meta property=\"article:published_time\" content=\"2023-09-21T14:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-07-20T16:17:20+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1694195754\/Blog-mobile-video-feature\/Blog-mobile-video-feature-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\/how-to-guide-ios-native-video-player#article\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/how-to-guide-ios-native-video-player\"},\"author\":{\"name\":\"melindapham\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/0d5ad601e4c3b5be89245dfb14be42d9\"},\"headline\":\"Mobile Video Revolution: How-to Guide for Using Cloudinary\u2019s iOS Native Video Player\",\"datePublished\":\"2023-09-21T14:00:00+00:00\",\"dateModified\":\"2025-07-20T16:17:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/how-to-guide-ios-native-video-player\"},\"wordCount\":1015,\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/how-to-guide-ios-native-video-player#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1694195754\/Blog-mobile-video-feature\/Blog-mobile-video-feature.jpg?_i=AA\",\"keywords\":[\"Video Player\"],\"inLanguage\":\"en-US\",\"copyrightYear\":\"2023\",\"copyrightHolder\":{\"@id\":\"https:\/\/cloudinary.com\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cloudinary.com\/blog\/how-to-guide-ios-native-video-player\",\"url\":\"https:\/\/cloudinary.com\/blog\/how-to-guide-ios-native-video-player\",\"name\":\"Unlock Mobile Video's Potential With Cloudinary's iOS Native Video Player SDK\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/how-to-guide-ios-native-video-player#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/how-to-guide-ios-native-video-player#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1694195754\/Blog-mobile-video-feature\/Blog-mobile-video-feature.jpg?_i=AA\",\"datePublished\":\"2023-09-21T14:00:00+00:00\",\"dateModified\":\"2025-07-20T16:17:20+00:00\",\"description\":\"Integrate video playback into your iOS app with Cloudinary's iOS SDK and CLDVideoPlayer class.\",\"breadcrumb\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/how-to-guide-ios-native-video-player#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cloudinary.com\/blog\/how-to-guide-ios-native-video-player\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/how-to-guide-ios-native-video-player#primaryimage\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1694195754\/Blog-mobile-video-feature\/Blog-mobile-video-feature.jpg?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1694195754\/Blog-mobile-video-feature\/Blog-mobile-video-feature.jpg?_i=AA\",\"width\":2000,\"height\":1100},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cloudinary.com\/blog\/how-to-guide-ios-native-video-player#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cloudinary.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mobile Video Revolution: How-to Guide for Using Cloudinary\u2019s iOS Native Video Player\"}]},{\"@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":"Unlock Mobile Video's Potential With Cloudinary's iOS Native Video Player SDK","description":"Integrate video playback into your iOS app with Cloudinary's iOS SDK and CLDVideoPlayer class.","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-guide-ios-native-video-player","og_locale":"en_US","og_type":"article","og_title":"Mobile Video Revolution: How-to Guide for Using Cloudinary\u2019s iOS Native Video Player","og_description":"Integrate video playback into your iOS app with Cloudinary's iOS SDK and CLDVideoPlayer class.","og_url":"https:\/\/cloudinary.com\/blog\/how-to-guide-ios-native-video-player","og_site_name":"Cloudinary Blog","article_published_time":"2023-09-21T14:00:00+00:00","article_modified_time":"2025-07-20T16:17:20+00:00","og_image":[{"width":2000,"height":1100,"url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1694195754\/Blog-mobile-video-feature\/Blog-mobile-video-feature-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\/how-to-guide-ios-native-video-player#article","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/how-to-guide-ios-native-video-player"},"author":{"name":"melindapham","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/0d5ad601e4c3b5be89245dfb14be42d9"},"headline":"Mobile Video Revolution: How-to Guide for Using Cloudinary\u2019s iOS Native Video Player","datePublished":"2023-09-21T14:00:00+00:00","dateModified":"2025-07-20T16:17:20+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/how-to-guide-ios-native-video-player"},"wordCount":1015,"publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/how-to-guide-ios-native-video-player#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1694195754\/Blog-mobile-video-feature\/Blog-mobile-video-feature.jpg?_i=AA","keywords":["Video Player"],"inLanguage":"en-US","copyrightYear":"2023","copyrightHolder":{"@id":"https:\/\/cloudinary.com\/#organization"}},{"@type":"WebPage","@id":"https:\/\/cloudinary.com\/blog\/how-to-guide-ios-native-video-player","url":"https:\/\/cloudinary.com\/blog\/how-to-guide-ios-native-video-player","name":"Unlock Mobile Video's Potential With Cloudinary's iOS Native Video Player SDK","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/how-to-guide-ios-native-video-player#primaryimage"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/how-to-guide-ios-native-video-player#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1694195754\/Blog-mobile-video-feature\/Blog-mobile-video-feature.jpg?_i=AA","datePublished":"2023-09-21T14:00:00+00:00","dateModified":"2025-07-20T16:17:20+00:00","description":"Integrate video playback into your iOS app with Cloudinary's iOS SDK and CLDVideoPlayer class.","breadcrumb":{"@id":"https:\/\/cloudinary.com\/blog\/how-to-guide-ios-native-video-player#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudinary.com\/blog\/how-to-guide-ios-native-video-player"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/how-to-guide-ios-native-video-player#primaryimage","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1694195754\/Blog-mobile-video-feature\/Blog-mobile-video-feature.jpg?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1694195754\/Blog-mobile-video-feature\/Blog-mobile-video-feature.jpg?_i=AA","width":2000,"height":1100},{"@type":"BreadcrumbList","@id":"https:\/\/cloudinary.com\/blog\/how-to-guide-ios-native-video-player#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudinary.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Mobile Video Revolution: How-to Guide for Using Cloudinary\u2019s iOS Native Video Player"}]},{"@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\/v1694195754\/Blog-mobile-video-feature\/Blog-mobile-video-feature.jpg?_i=AA","_links":{"self":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/31284","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=31284"}],"version-history":[{"count":5,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/31284\/revisions"}],"predecessor-version":[{"id":37998,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/31284\/revisions\/37998"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media\/31285"}],"wp:attachment":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media?parent=31284"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/categories?post=31284"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/tags?post=31284"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}