{"id":2940,"date":"2016-02-03T05:00:00","date_gmt":"2016-02-03T05:00:00","guid":{"rendered":"http:\/\/jwplayer.com\/jw-player-mobile-sdks-now-featuring-avplayer-and-id3-timed-metadata\/"},"modified":"2023-02-06T14:28:22","modified_gmt":"2023-02-06T19:28:22","slug":"jw-player-mobile-sdks-now-featuring-avplayer-and-id3-timed-metadata","status":"publish","type":"post","link":"https:\/\/jwplayer.com\/blog\/jw-player-mobile-sdks-now-featuring-avplayer-and-id3-timed-metadata\/","title":{"rendered":"JW Player Mobile SDKs Now Featuring AVPlayer and ID3 Timed Metadata"},"content":{"rendered":"<div>\n<p>The JW Mobile team is excited to bring you our latest update to the JW Player Mobile SDKs. Version 2.1 of the JW Player SDK for iOS now uses Apple\u2019s AVPlayer as its native media playback engine. Not only does this give iOS developers some valuable features right out of the gate, but this will speed up the JW Mobile team\u2019s delivery of future HLS updates &#038; iOS features.<\/p>\n<p>Both our iOS and Android SDKs now support ID3 timed metadata, a frequently requested feature that will provide developers more power and flexibility to build functionality on top of HLS live streams.<\/p>\n<p>Read on for more details!<\/p>\n<p class=\" block-img\"><img decoding=\"async\" src=\"https:\/\/f.hubspotusercontent30.net\/hubfs\/20577834\/Imported_Blog_Media\/29867b20f056acfc7f2b1c63c7d3e6fb8604a7ba_id3_apple_android.png\" alt=\"\"><\/p>\n<h2>AVPlayer<\/h2>\n<p>In 2015 the JW Mobile team switched our Android SDK\u2019s native media playback engine to Google\u2019s open-source <a href=\"https:\/\/github.com\/google\/ExoPlayer\">ExoPlayer<\/a>. We were able to keep all of JW Player\u2019s rich features (e.g. UI customization, captions, and advertising) and still maintain a fully native Java API library for Android developers. Since switching to ExoPlayer, we\u2019ve measured vast improvements in <a href=\"http:\/\/www.jwplayer.com\/blog\/improving-hls-android-sdk-1-2\/\">HLS speed<\/a>, performance, and feature support. A diagram and explanation of this approach can be found <a href=\"http:\/\/www.jwplayer.com\/blog\/calling-all-robots-jw-player-sdk-for-android-2-0\/\">here<\/a>.<\/p>\n<p>Based on the success of this architecture, the JW Mobile team decided to similarly redesign the JW Player SDK for iOS to use Apple\u2019s iOS AVFoundation <a href=\"https:\/\/developer.apple.com\/library\/ios\/documentation\/AVFoundation\/Reference\/AVPlayer_Class\/index.html#\/\/apple_ref\/doc\/uid\/TP40009530\">AVPlayer<\/a> as its native media playback engine. Once again, by keeping our JW Player core features intact and switching to AVPlayer we are able to quickly introduce new features in version 2.1 such as DVR live streaming, HLS multiple track audio, picture-in-picture, and ID3 timed metadata. All the while, iOS developers still get our fully native Obj-C \/ Swift APIs and the media playback performance of AVPlayer.<\/p>\n<p>Furthermore, as Apple releases updates to HLS and new features to iOS through AVPlayer, the JW Mobile team will be able to pass on these benefits to our customers more swiftly than before.<\/p>\n<h2>ID3 Timed Metadata<\/h2>\n<p>As part of this release, our mobile SDKs will support <a href=\"http:\/\/id3.org\/\">ID3<\/a> timed metadata in HLS streams.<\/p>\n<p>Traditionally, ID3 has been used for MP3 music metadata such as title, artist, year, cover art, etc. But more recently, another valuable use case for ID3 has been for <a href=\"https:\/\/developer.apple.com\/library\/ios\/documentation\/AudioVideo\/Conceptual\/HTTP_Live_Streaming_Metadata_Spec\/2\/2.html\">Timed Metadata for HTTP Live Streaming<\/a> (HLS).<\/p>\n<p>An excerpt from Eric Boyd\u2019s <a href=\"http:\/\/www.jwplayer.com\/blog\/introducing-jw-player-6-11-industry-leading-hls\/\">blog post<\/a> on ID3 support in the JW Player for Web:<\/p>\n<pre><em>ID3 tags are keyed to a specific moment in time within a video. When the JW Player plays that video frame, it will let the client-side know the metadata. This opens up the possibility to implement some really powerful applications. Here are a few that are top of mind:<\/em><\/pre>\n<ul>\n<li><em>Keeping presentation slides in sync with a video timeline.<\/em><\/li>\n<li><em>Updating a news ticker in a live stream.<\/em><\/li>\n<li><em>Letting the JW Player know that a live video stream is going into a commercial break.<\/em><\/li>\n<\/ul>\n<p>The third bullet point regarding ad breaks in live video streams is where I will dive into further detail.<\/p>\n<h2>Ads in HLS Live Streams using ID3 Timed Metadata<\/h2>\n<p>In HLS live streams, the challenge for publishers is how to insert either client-side ads into the broadcast, or how to extract ad tracking data from server-side ads stitched directly into the broadcast.<\/p>\n<p>In the case of client-side ads, during a live broadcast you may want to insert an ad. But since the stream is happening live, how do you indicate to your app when to switch from the live broadcast to the ad?<\/p>\n<p>The solution is to add ID3 metadata containing details of your ad tag into the HLS stream (here\u2019s an <a href=\"https:\/\/www.wowza.com\/forums\/content.php?322-How-to-convert-onTextData-events-in-a-live-or-VOD-stream-to-timed-events-%2528ID3-tags%2529-in-an-Apple-HLS-stream\">example<\/a> of how to do this using Wowza). When the ID3 metadata containing your ad data is detected in the live broadcast, this effectively signals the desired ad break and the ad data is passed to your app from JW Player\u2019s onMeta() event. Your app can then act on this ad break with the ad data contained in the ID3 container to cut from the live broadcast to your ad.<\/p>\n<p class=\" block-img\"><img decoding=\"async\" src=\"https:\/\/f.hubspotusercontent30.net\/hubfs\/20577834\/Imported_Blog_Media\/d29bd76fab603784be8ab44969033dc6170b2fa4_id3-client-ads.png\" alt=\"\"><\/p>\n<p>This approach can also work for server-side ads stitched into HLS live streams. In this case, the server-side ad will seamlessly play as if it was part of the live broadcast. But how will your app know the difference between your live broadcast and the ad to send ad tracking data (ie. how do you track when the ad starts and ends)? The solution is to use ID3 Timed Metadata in the HLS stream to help you track when JW Player is playing your server-side ad and when it\u2019s playing your live broadcast.<\/p>\n<p class=\" block-img\"><img decoding=\"async\" src=\"https:\/\/f.hubspotusercontent30.net\/hubfs\/20577834\/Imported_Blog_Media\/e0b26d3193f6b6e870d10f369965656c6ddf9e99_id3-stitched-ads.png\" alt=\"\"><\/p>\n<h2>Other New Features in JW Player SDK 2.1<\/h2>\n<h3>What&#8217;s new in JW Player SDK for iOS (<a href=\"http:\/\/developer.jwplayer.com\/sdk\/ios\/docs\/developer-guide\/about\/release-notes\/\">release notes<\/a>)<\/h3>\n<ul>\n<li>ID3 Timed Meta Data<\/li>\n<li>Live DVR<\/li>\n<li>HLS Multiple Track Audio<\/li>\n<li>Picture in Picture (iOS 9 iPad only)<\/li>\n<\/ul>\n<h3>What&#8217;s new in JW Player SDK for Android (<a href=\"http:\/\/developer.jwplayer.com\/sdk\/android\/docs\/developer-guide\/about\/release-notes\/\">release notes<\/a>)<\/h3>\n<ul>\n<li>ID3 Timed Metadata<\/li>\n<li>Media playback from local file storage<\/li>\n<\/ul>\n<h3>Where do I download the latest JW Player SDKs?<\/h3>\n<p>If you are an existing JW Player SDK customer, you can sign in to your <a href=\"https:\/\/account.jwplayer.com\/\">JW Player Dashboard<\/a> and download the latest SDK packages from your Account tab. Otherwise, if you\u2019d like more information to purchase or get a free trial of our SDKs to build a native iOS or Android video player, please visit our <a href=\"http:\/\/www.jwplayer.com\/products\/mobile-sdk\/\">Mobile SDK<\/a> page.<\/p>\n<p>Do you have a feature suggestion for our SDKs? Your <a href=\"mailto:sdk@jwplayer.com\">feedback<\/a> is welcome and encouraged as we continue to improve and enhance the JW Player SDKs for Android &#038; iOS with regular feature and performance updates!<\/p>\n<p>\u00a0<\/p>\n<p>Henry Lee,<\/p>\n<p>Product Manager, Mobile Devices<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>The JW Mobile team is excited to bring you our latest update to the JW Player Mobile SDKs. Version 2.1 of the JW Player SDK for iOS now uses Apple\u2019s AVPlayer as its native media playback engine. Not only does this give iOS developers some valuable features right out of the gate, but this will [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2940","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v23.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>JW Player Mobile SDKs Now Featuring AVPlayer and ID3 Timed Metadata - JW Player<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jwplayer.com\/blog\/jw-player-mobile-sdks-now-featuring-avplayer-and-id3-timed-metadata\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JW Player Mobile SDKs Now Featuring AVPlayer and ID3 Timed Metadata - JW Player\" \/>\n<meta property=\"og:description\" content=\"The JW Mobile team is excited to bring you our latest update to the JW Player Mobile SDKs. Version 2.1 of the JW Player SDK for iOS now uses Apple\u2019s AVPlayer as its native media playback engine. Not only does this give iOS developers some valuable features right out of the gate, but this will [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jwplayer.com\/blog\/jw-player-mobile-sdks-now-featuring-avplayer-and-id3-timed-metadata\/\" \/>\n<meta property=\"og:site_name\" content=\"JW Player\" \/>\n<meta property=\"article:published_time\" content=\"2016-02-03T05:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-02-06T19:28:22+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/f.hubspotusercontent30.net\/hubfs\/20577834\/Imported_Blog_Media\/29867b20f056acfc7f2b1c63c7d3e6fb8604a7ba_id3_apple_android.png\" \/>\n<meta name=\"author\" content=\"JW Player\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"JW Player\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jwplayer.com\/blog\/jw-player-mobile-sdks-now-featuring-avplayer-and-id3-timed-metadata\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jwplayer.com\/blog\/jw-player-mobile-sdks-now-featuring-avplayer-and-id3-timed-metadata\/\"},\"author\":{\"name\":\"JW Player\",\"@id\":\"https:\/\/jwplayer.com\/#\/schema\/person\/4ce3d83ed5ba775537e8e6c8307f3c6f\"},\"headline\":\"JW Player Mobile SDKs Now Featuring AVPlayer and ID3 Timed Metadata\",\"datePublished\":\"2016-02-03T05:00:00+00:00\",\"dateModified\":\"2023-02-06T19:28:22+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jwplayer.com\/blog\/jw-player-mobile-sdks-now-featuring-avplayer-and-id3-timed-metadata\/\"},\"wordCount\":876,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/jwplayer.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/jwplayer.com\/blog\/jw-player-mobile-sdks-now-featuring-avplayer-and-id3-timed-metadata\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/f.hubspotusercontent30.net\/hubfs\/20577834\/Imported_Blog_Media\/29867b20f056acfc7f2b1c63c7d3e6fb8604a7ba_id3_apple_android.png\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/jwplayer.com\/blog\/jw-player-mobile-sdks-now-featuring-avplayer-and-id3-timed-metadata\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jwplayer.com\/blog\/jw-player-mobile-sdks-now-featuring-avplayer-and-id3-timed-metadata\/\",\"url\":\"https:\/\/jwplayer.com\/blog\/jw-player-mobile-sdks-now-featuring-avplayer-and-id3-timed-metadata\/\",\"name\":\"JW Player Mobile SDKs Now Featuring AVPlayer and ID3 Timed Metadata - JW Player\",\"isPartOf\":{\"@id\":\"https:\/\/jwplayer.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/jwplayer.com\/blog\/jw-player-mobile-sdks-now-featuring-avplayer-and-id3-timed-metadata\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/jwplayer.com\/blog\/jw-player-mobile-sdks-now-featuring-avplayer-and-id3-timed-metadata\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/f.hubspotusercontent30.net\/hubfs\/20577834\/Imported_Blog_Media\/29867b20f056acfc7f2b1c63c7d3e6fb8604a7ba_id3_apple_android.png\",\"datePublished\":\"2016-02-03T05:00:00+00:00\",\"dateModified\":\"2023-02-06T19:28:22+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jwplayer.com\/blog\/jw-player-mobile-sdks-now-featuring-avplayer-and-id3-timed-metadata\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jwplayer.com\/blog\/jw-player-mobile-sdks-now-featuring-avplayer-and-id3-timed-metadata\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jwplayer.com\/blog\/jw-player-mobile-sdks-now-featuring-avplayer-and-id3-timed-metadata\/#primaryimage\",\"url\":\"https:\/\/f.hubspotusercontent30.net\/hubfs\/20577834\/Imported_Blog_Media\/29867b20f056acfc7f2b1c63c7d3e6fb8604a7ba_id3_apple_android.png\",\"contentUrl\":\"https:\/\/f.hubspotusercontent30.net\/hubfs\/20577834\/Imported_Blog_Media\/29867b20f056acfc7f2b1c63c7d3e6fb8604a7ba_id3_apple_android.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jwplayer.com\/blog\/jw-player-mobile-sdks-now-featuring-avplayer-and-id3-timed-metadata\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jwplayer.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JW Player Mobile SDKs Now Featuring AVPlayer and ID3 Timed Metadata\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jwplayer.com\/#website\",\"url\":\"https:\/\/jwplayer.com\/\",\"name\":\"JW Player\",\"description\":\"End-to-End Solution for Streaming &amp; Monetizing Video\",\"publisher\":{\"@id\":\"https:\/\/jwplayer.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jwplayer.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jwplayer.com\/#organization\",\"name\":\"JW Player\",\"url\":\"https:\/\/jwplayer.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jwplayer.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/jwplayer.com\/wp-content\/uploads\/2023\/02\/logo-jwp-primary.png\",\"contentUrl\":\"https:\/\/jwplayer.com\/wp-content\/uploads\/2023\/02\/logo-jwp-primary.png\",\"width\":1000,\"height\":417,\"caption\":\"JW Player\"},\"image\":{\"@id\":\"https:\/\/jwplayer.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/jwplayer.com\/#\/schema\/person\/4ce3d83ed5ba775537e8e6c8307f3c6f\",\"name\":\"JW Player\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jwplayer.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/2db7398616357b21568fd90b8357560b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/2db7398616357b21568fd90b8357560b?s=96&d=mm&r=g\",\"caption\":\"JW Player\"},\"url\":\"https:\/\/jwplayer.com\/blog\/author\/jw-player\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"JW Player Mobile SDKs Now Featuring AVPlayer and ID3 Timed Metadata - JW Player","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:\/\/jwplayer.com\/blog\/jw-player-mobile-sdks-now-featuring-avplayer-and-id3-timed-metadata\/","og_locale":"en_US","og_type":"article","og_title":"JW Player Mobile SDKs Now Featuring AVPlayer and ID3 Timed Metadata - JW Player","og_description":"The JW Mobile team is excited to bring you our latest update to the JW Player Mobile SDKs. Version 2.1 of the JW Player SDK for iOS now uses Apple\u2019s AVPlayer as its native media playback engine. Not only does this give iOS developers some valuable features right out of the gate, but this will [&hellip;]","og_url":"https:\/\/jwplayer.com\/blog\/jw-player-mobile-sdks-now-featuring-avplayer-and-id3-timed-metadata\/","og_site_name":"JW Player","article_published_time":"2016-02-03T05:00:00+00:00","article_modified_time":"2023-02-06T19:28:22+00:00","og_image":[{"url":"https:\/\/f.hubspotusercontent30.net\/hubfs\/20577834\/Imported_Blog_Media\/29867b20f056acfc7f2b1c63c7d3e6fb8604a7ba_id3_apple_android.png"}],"author":"JW Player","twitter_card":"summary_large_image","twitter_misc":{"Written by":"JW Player","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jwplayer.com\/blog\/jw-player-mobile-sdks-now-featuring-avplayer-and-id3-timed-metadata\/#article","isPartOf":{"@id":"https:\/\/jwplayer.com\/blog\/jw-player-mobile-sdks-now-featuring-avplayer-and-id3-timed-metadata\/"},"author":{"name":"JW Player","@id":"https:\/\/jwplayer.com\/#\/schema\/person\/4ce3d83ed5ba775537e8e6c8307f3c6f"},"headline":"JW Player Mobile SDKs Now Featuring AVPlayer and ID3 Timed Metadata","datePublished":"2016-02-03T05:00:00+00:00","dateModified":"2023-02-06T19:28:22+00:00","mainEntityOfPage":{"@id":"https:\/\/jwplayer.com\/blog\/jw-player-mobile-sdks-now-featuring-avplayer-and-id3-timed-metadata\/"},"wordCount":876,"commentCount":0,"publisher":{"@id":"https:\/\/jwplayer.com\/#organization"},"image":{"@id":"https:\/\/jwplayer.com\/blog\/jw-player-mobile-sdks-now-featuring-avplayer-and-id3-timed-metadata\/#primaryimage"},"thumbnailUrl":"https:\/\/f.hubspotusercontent30.net\/hubfs\/20577834\/Imported_Blog_Media\/29867b20f056acfc7f2b1c63c7d3e6fb8604a7ba_id3_apple_android.png","inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/jwplayer.com\/blog\/jw-player-mobile-sdks-now-featuring-avplayer-and-id3-timed-metadata\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/jwplayer.com\/blog\/jw-player-mobile-sdks-now-featuring-avplayer-and-id3-timed-metadata\/","url":"https:\/\/jwplayer.com\/blog\/jw-player-mobile-sdks-now-featuring-avplayer-and-id3-timed-metadata\/","name":"JW Player Mobile SDKs Now Featuring AVPlayer and ID3 Timed Metadata - JW Player","isPartOf":{"@id":"https:\/\/jwplayer.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/jwplayer.com\/blog\/jw-player-mobile-sdks-now-featuring-avplayer-and-id3-timed-metadata\/#primaryimage"},"image":{"@id":"https:\/\/jwplayer.com\/blog\/jw-player-mobile-sdks-now-featuring-avplayer-and-id3-timed-metadata\/#primaryimage"},"thumbnailUrl":"https:\/\/f.hubspotusercontent30.net\/hubfs\/20577834\/Imported_Blog_Media\/29867b20f056acfc7f2b1c63c7d3e6fb8604a7ba_id3_apple_android.png","datePublished":"2016-02-03T05:00:00+00:00","dateModified":"2023-02-06T19:28:22+00:00","breadcrumb":{"@id":"https:\/\/jwplayer.com\/blog\/jw-player-mobile-sdks-now-featuring-avplayer-and-id3-timed-metadata\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jwplayer.com\/blog\/jw-player-mobile-sdks-now-featuring-avplayer-and-id3-timed-metadata\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jwplayer.com\/blog\/jw-player-mobile-sdks-now-featuring-avplayer-and-id3-timed-metadata\/#primaryimage","url":"https:\/\/f.hubspotusercontent30.net\/hubfs\/20577834\/Imported_Blog_Media\/29867b20f056acfc7f2b1c63c7d3e6fb8604a7ba_id3_apple_android.png","contentUrl":"https:\/\/f.hubspotusercontent30.net\/hubfs\/20577834\/Imported_Blog_Media\/29867b20f056acfc7f2b1c63c7d3e6fb8604a7ba_id3_apple_android.png"},{"@type":"BreadcrumbList","@id":"https:\/\/jwplayer.com\/blog\/jw-player-mobile-sdks-now-featuring-avplayer-and-id3-timed-metadata\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jwplayer.com\/"},{"@type":"ListItem","position":2,"name":"JW Player Mobile SDKs Now Featuring AVPlayer and ID3 Timed Metadata"}]},{"@type":"WebSite","@id":"https:\/\/jwplayer.com\/#website","url":"https:\/\/jwplayer.com\/","name":"JW Player","description":"End-to-End Solution for Streaming &amp; Monetizing Video","publisher":{"@id":"https:\/\/jwplayer.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jwplayer.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jwplayer.com\/#organization","name":"JW Player","url":"https:\/\/jwplayer.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jwplayer.com\/#\/schema\/logo\/image\/","url":"https:\/\/jwplayer.com\/wp-content\/uploads\/2023\/02\/logo-jwp-primary.png","contentUrl":"https:\/\/jwplayer.com\/wp-content\/uploads\/2023\/02\/logo-jwp-primary.png","width":1000,"height":417,"caption":"JW Player"},"image":{"@id":"https:\/\/jwplayer.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jwplayer.com\/#\/schema\/person\/4ce3d83ed5ba775537e8e6c8307f3c6f","name":"JW Player","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jwplayer.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/2db7398616357b21568fd90b8357560b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2db7398616357b21568fd90b8357560b?s=96&d=mm&r=g","caption":"JW Player"},"url":"https:\/\/jwplayer.com\/blog\/author\/jw-player\/"}]}},"_links":{"self":[{"href":"https:\/\/jwplayer.com\/wp-json\/wp\/v2\/posts\/2940","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jwplayer.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jwplayer.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jwplayer.com\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/jwplayer.com\/wp-json\/wp\/v2\/comments?post=2940"}],"version-history":[{"count":1,"href":"https:\/\/jwplayer.com\/wp-json\/wp\/v2\/posts\/2940\/revisions"}],"predecessor-version":[{"id":5883,"href":"https:\/\/jwplayer.com\/wp-json\/wp\/v2\/posts\/2940\/revisions\/5883"}],"wp:attachment":[{"href":"https:\/\/jwplayer.com\/wp-json\/wp\/v2\/media?parent=2940"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jwplayer.com\/wp-json\/wp\/v2\/categories?post=2940"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jwplayer.com\/wp-json\/wp\/v2\/tags?post=2940"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}