{"id":1194,"date":"2022-08-29T00:00:00","date_gmt":"2022-08-28T21:00:00","guid":{"rendered":"https:\/\/www.aimp.ru\/blogs\/?p=1194"},"modified":"2022-08-29T08:36:37","modified_gmt":"2022-08-29T05:36:37","slug":"","status":"publish","type":"post","link":"https:\/\/aimp.ru\/blogs\/?p=1194&language=en","title":{"rendered":"XSPF as default playlist format","raw":"XSPF as default playlist format"},"content":{"rendered":"\n<p>As you can see, the XSPF file format became a default playlist format in both AIMP version (in <a rel=\"noreferrer noopener\" href=\"https:\/\/www.aimp.ru\/?do=changelog&amp;os=windows&amp;s=2370&amp;f=2399&amp;merge=1\" target=\"_blank\">AIMP v5.03 for Windows<\/a> and <a rel=\"noreferrer noopener\" href=\"https:\/\/www.aimp.ru\/?do=changelog&amp;os=android&amp;ver=330&amp;merge=1\" target=\"_blank\">AIMP v3.30 for Android<\/a>). What is XSPF? What is the reason to make it default playlist format in AIMP?<\/p>\n\n\n\n<!--more-->\n\n\n\n<p><strong>About<\/strong><\/p>\n\n\n\n<p><a href=\"https:\/\/xspf.org\/\" data-type=\"URL\" data-id=\"https:\/\/xspf.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">XSPF<\/a> (XML Shareable Playlist Format) is the XML-base file format for sharing playlists. XSPF was created by <a rel=\"noreferrer noopener\" href=\"https:\/\/xiph.org\/\" data-type=\"URL\" data-id=\"https:\/\/xiph.org\/\" target=\"_blank\">Xiph.Org Foundation<\/a> and released in 2005. Main features of the format are: <span style=\"text-decoration: underline;\">opensource<\/span>, <span style=\"text-decoration: underline;\">patent-free<\/span>, <span style=\"text-decoration: underline;\">cross-platform<\/span> and <span style=\"text-decoration: underline;\">extendable<\/span>.<\/p>\n\n\n\n<p>In AIMP, XSPF support has been implemented in v2.60 in far 2009. But the player was only able to import playlist, not export them. Export support has been added now, in v5.03 where the XSPF became a default playlist format for AIMP.<\/p>\n\n\n\n<p><strong>Default format<\/strong><\/p>\n\n\n\n<p>Experimenting with synchronization between devices, we decided to small start: ensure the playlist files are compatible with mobile and desktop versions of the player.<\/p>\n\n\n\n<p>Untile recently, mobile version used binary file format (AIMPBPL) as default playlist format, while desktop version used text format (AIMPPL4). This was due to the fact that parsing a text-based playlist on Android required more time and memory than a binary one. One way to share playlists between PC and mobile is export them to the M3U8 file format using relative paths. But the M3U8 does not support even a half of the features that AIMP has. For example, CUE-splitted tracks become an invalid after export to the M3U8.<\/p>\n\n\n\n<p>In beginning, we were planning to add the AIMPPL4 playlist format support to the mobile version of player, but revoke this idea after first tests. Tests shown that AIMPPL4 has no features for cross-platform sharing and we need to enhance it. Is it reason to create a new AIMPPL5 format that will only supported by latest versions of AIMP?<\/p>\n\n\n\n<p>So, we chose XSPF:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>It is open and free<\/li><li>It has a strict specification<br><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-medium-gray-color\">The specification strictly regulates the fields and data types.<\/mark><br><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-medium-gray-color\">No inconsistencies.<\/mark><\/li><li>It is cross-platform <br><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-medium-gray-color\">File paths always stored in URL-like form, taking windows and unix specifics into account. Relative paths are supported.<\/mark><\/li><li>It is extendable <br><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-medium-gray-color\">We will able to store a custom data to the file. For example: smart-playlist&#8217;s preimage, appearance and grouping settings. <\/mark><\/li><li>It is supported by other players<br><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-medium-gray-color\">Resulting playlist can be opened in any other player that supports for XSPF, not only in AIMP.<\/mark><\/li><\/ul>\n\n\n\n<p><strong>Cross-platform<\/strong><\/p>\n\n\n\n<p>Now, playlist became a shareable between mobile and PC version of AIMP. It doesn&#8217;t matter if you saving them using absolute or relative paths &#8211; the main thing here is that they are shared along with the music folder.<\/p>\n\n\n\n<p>Additionally, now shared following things:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>CUE-splitted tracks<\/li><li>Smart-playlists based on folders or playlists<br><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-medium-gray-color\">Note that mobile version has less number of smart-playlists features than PC&#8217;s one. It is temporary limitation, I hope.<\/mark>  <\/li><\/ul>\n\n\n\n<p>So, migrating to the XSPF became a first step towards synchronization between mobile and desktop versions of AIMP.<\/p>\n\n\n\n<p><strong>Performance<\/strong><\/p>\n\n\n\n<p>During first tests, we have found a main disadvantage of the format: XML markup takes to much space in XSPF specification. It leads to increase the size of resulting playlist files  and increase the playlist loading time. <\/p>\n\n\n\n<p>For example, the playlist contains a <span style=\"text-decoration: underline;\">50 000<\/span> of audio files with fully filled tags (all tag fields supported by AIMP were not empty):<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>Format<\/strong><\/td><td><strong>File size (MB)<\/strong><\/td><td><strong>Loading time (sec)<\/strong><\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">XSPF<\/td><td>37.2<\/td><td>1.6<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">M3U8<\/td><td>6.8<\/td><td>0.4<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">AIMPPL4<\/td><td>20.7<\/td><td>0.9<\/td><\/tr><\/tbody><\/table><figcaption>Comparing formats performance<\/figcaption><\/figure>\n\n\n\n<p>Is it a big price for cross-platform?<\/p>\n\n\n\n<p>List of all AIMP&#8217;s extensions for the XSPF file format and their descriptions you can find in the <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\">AIMP Extensions for XSPF<\/mark> document that included to the <a rel=\"noreferrer noopener\" href=\"https:\/\/www.aimp.ru\/?do=download&amp;os=windows&amp;cat=sdk\" data-type=\"URL\" data-id=\"https:\/\/www.aimp.ru\/?do=download&amp;os=windows&amp;cat=sdk\" target=\"_blank\">SDK<\/a> package.<\/p>\n","protected":false,"raw":"<!-- wp:paragraph -->\n<p>As you can see, the XSPF file format became a default playlist format in both AIMP version (in <a rel=\"noreferrer noopener\" href=\"https:\/\/www.aimp.ru\/?do=changelog&amp;os=windows&amp;s=2370&amp;f=2399&amp;merge=1\" target=\"_blank\">AIMP v5.03 for Windows<\/a> and <a rel=\"noreferrer noopener\" href=\"https:\/\/www.aimp.ru\/?do=changelog&amp;os=android&amp;ver=330&amp;merge=1\" target=\"_blank\">AIMP v3.30 for Android<\/a>). What is XSPF? What is the reason to make it default playlist format in AIMP?<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:more -->\n<!--more-->\n<!-- \/wp:more -->\n\n<!-- wp:paragraph -->\n<p><strong>About<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><a href=\"https:\/\/xspf.org\/\" data-type=\"URL\" data-id=\"https:\/\/xspf.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">XSPF<\/a> (XML Shareable Playlist Format) is the XML-base file format for sharing playlists. XSPF was created by <a rel=\"noreferrer noopener\" href=\"https:\/\/xiph.org\/\" data-type=\"URL\" data-id=\"https:\/\/xiph.org\/\" target=\"_blank\">Xiph.Org Foundation<\/a> and released in 2005. Main features of the format are: <span style=\"text-decoration: underline;\">opensource<\/span>, <span style=\"text-decoration: underline;\">patent-free<\/span>, <span style=\"text-decoration: underline;\">cross-platform<\/span> and <span style=\"text-decoration: underline;\">extendable<\/span>.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>In AIMP, XSPF support has been implemented in v2.60 in far 2009. But the player was only able to import playlist, not export them. Export support has been added now, in v5.03 where the XSPF became a default playlist format for AIMP.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>Default format<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Experimenting with synchronization between devices, we decided to small start: ensure the playlist files are compatible with mobile and desktop versions of the player.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Untile recently, mobile version used binary file format (AIMPBPL) as default playlist format, while desktop version used text format (AIMPPL4). This was due to the fact that parsing a text-based playlist on Android required more time and memory than a binary one. One way to share playlists between PC and mobile is export them to the M3U8 file format using relative paths. But the M3U8 does not support even a half of the features that AIMP has. For example, CUE-splitted tracks become an invalid after export to the M3U8.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>In beginning, we were planning to add the AIMPPL4 playlist format support to the mobile version of player, but revoke this idea after first tests. Tests shown that AIMPPL4 has no features for cross-platform sharing and we need to enhance it. Is it reason to create a new AIMPPL5 format that will only supported by latest versions of AIMP?<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>So, we chose XSPF:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul><li>It is open and free<\/li><li>It has a strict specification<br><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-medium-gray-color\">The specification strictly regulates the fields and data types.<\/mark><br><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-medium-gray-color\">No inconsistencies.<\/mark><\/li><li>It is cross-platform <br><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-medium-gray-color\">File paths always stored in URL-like form, taking windows and unix specifics into account. Relative paths are supported.<\/mark><\/li><li>It is extendable <br><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-medium-gray-color\">We will able to store a custom data to the file. For example: smart-playlist's preimage, appearance and grouping settings. <\/mark><\/li><li>It is supported by other players<br><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-medium-gray-color\">Resulting playlist can be opened in any other player that supports for XSPF, not only in AIMP.<\/mark><\/li><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p><strong>Cross-platform<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Now, playlist became a shareable between mobile and PC version of AIMP. It doesn't matter if you saving them using absolute or relative paths - the main thing here is that they are shared along with the music folder.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Additionally, now shared following things:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul><li>CUE-splitted tracks<\/li><li>Smart-playlists based on folders or playlists<br><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-medium-gray-color\">Note that mobile version has less number of smart-playlists features than PC's one. It is temporary limitation, I hope.<\/mark>  <\/li><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p>So, migrating to the XSPF became a first step towards synchronization between mobile and desktop versions of AIMP.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>Performance<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>During first tests, we have found a main disadvantage of the format: XML markup takes to much space in XSPF specification. It leads to increase the size of resulting playlist files  and increase the playlist loading time. <\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>For example, the playlist contains a <span style=\"text-decoration: underline;\">50 000<\/span> of audio files with fully filled tags (all tag fields supported by AIMP were not empty):<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table><tbody><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>Format<\/strong><\/td><td><strong>File size (MB)<\/strong><\/td><td><strong>Loading time (sec)<\/strong><\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">XSPF<\/td><td>37.2<\/td><td>1.6<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">M3U8<\/td><td>6.8<\/td><td>0.4<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">AIMPPL4<\/td><td>20.7<\/td><td>0.9<\/td><\/tr><\/tbody><\/table><figcaption>Comparing formats performance<\/figcaption><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Is it a big price for cross-platform?<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>List of all AIMP's extensions for the XSPF file format and their descriptions you can find in the <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\">AIMP Extensions for XSPF<\/mark> document that included to the <a rel=\"noreferrer noopener\" href=\"https:\/\/www.aimp.ru\/?do=download&amp;os=windows&amp;cat=sdk\" data-type=\"URL\" data-id=\"https:\/\/www.aimp.ru\/?do=download&amp;os=windows&amp;cat=sdk\" target=\"_blank\">SDK<\/a> package.<\/p>\n<!-- \/wp:paragraph -->"},"excerpt":{"rendered":"","protected":false,"raw":""},"author":1,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_ru_post_content":"<!-- wp:paragraph -->\n<p>\u041a\u0430\u043a \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0432 <a rel=\"noreferrer noopener\" href=\"https:\/\/www.aimp.ru\/?do=changelog&amp;os=windows&amp;s=2370&amp;f=2399&amp;merge=1\" target=\"_blank\">AIMP v5.03 \u0434\u043b\u044f Windows<\/a> \u0438 \u0432 <a rel=\"noreferrer noopener\" href=\"https:\/\/www.aimp.ru\/?do=changelog&amp;os=android&amp;ver=330&amp;merge=1\" target=\"_blank\">AIMP v3.30 \u0434\u043b\u044f Android<\/a> \u0444\u043e\u0440\u043c\u0430\u0442 XSPF \u0441\u0442\u0430\u043b \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u043c \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u043e\u0432 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u0427\u0442\u043e \u044d\u0442\u043e \u0437\u0430 \u0444\u043e\u0440\u043c\u0430\u0442 \u0438 \u0437\u0430\u0447\u0435\u043c \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e?<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:more -->\n<!--more-->\n<!-- \/wp:more -->\n\n<!-- wp:paragraph -->\n<p><strong>\u041e \u0444\u043e\u0440\u043c\u0430\u0442\u0435<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><a href=\"https:\/\/xspf.org\/\" data-type=\"URL\" data-id=\"https:\/\/xspf.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">XSPF<\/a> (XML Shareable Playlist Format) \u044d\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u043e\u0432, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 XML. \u0424\u043e\u0440\u043c\u0430\u0442 \u0431\u044b\u043b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d <a rel=\"noreferrer noopener\" href=\"https:\/\/xiph.org\/\" data-type=\"URL\" data-id=\"https:\/\/xiph.org\/\" target=\"_blank\">Xiph.Org Foundation<\/a> \u0438 \u0432\u044b\u043f\u0443\u0449\u0435\u043d \u0432 2005 \u0433\u043e\u0434\u0443. \u0413\u043b\u0430\u0432\u043d\u044b\u043c\u0438 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f: <span style=\"text-decoration: underline;\">\u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0441\u0442\u044c<\/span>, <span style=\"text-decoration: underline;\">\u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u0441\u0442\u044c<\/span>, <span style=\"text-decoration: underline;\">\u043f\u043e\u0440\u0442\u0430\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c<\/span> \u0438 <span style=\"text-decoration: underline;\">\u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u043e\u0441\u0442\u044c<\/span>.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u0412 AIMP \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 XSPF \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c v2.60 \u0432 2009 \u0433\u043e\u0434\u0443. \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u043b\u0435\u0435\u0440 \u043d\u0430\u0443\u0447\u0438\u043b\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u044b \u044d\u0442\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430 - \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430 \u043d\u0435 \u0431\u044b\u043b\u043e. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043b\u0438\u0448\u044c \u0441\u0435\u0439\u0447\u0430\u0441, \u0432 v5.03, \u043a\u043e\u0433\u0434\u0430 XSPF \u0441\u0442\u0430\u043b \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u043c \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u043e\u0432 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>\u0424\u043e\u0440\u043c\u0430\u0442 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u042d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u044f \u0441 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043c\u0435\u0436\u0434\u0443 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438, \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043d\u0430\u0447\u0430\u0442\u044c \u0441 \u043c\u0430\u043b\u043e\u0433\u043e - \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u043f\u0440\u0435\u0435\u043c\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u0438 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 \u043f\u043b\u0435\u0435\u0440\u0430. <\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u0414\u043e \u043d\u0435\u0434\u0430\u0432\u043d\u0435\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u043e\u0432 (AIMPBPL), \u0430 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043d\u0430\u044f - \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 (AIMPPL4). \u041e\u0431\u0443\u0441\u043b\u043e\u0432\u043b\u0435\u043d\u043e \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u0442\u0435\u043c, \u0447\u0442\u043e \u0440\u0430\u0437\u0431\u043e\u0440 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0430 \u043d\u0430 \u0430\u043d\u0434\u0440\u043e\u0438\u0434 \u0437\u0430\u043d\u0438\u043c\u0430\u043b \u043d\u0430 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0447\u0435\u043c \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0433\u043e. \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u043c \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442 \u0441 \u041f\u041a \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u0431\u044b\u043b\u043e \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0432 \u0444\u043e\u0440\u043c\u0430\u0442 M3U8. \u041e\u0434\u043d\u0430\u043a\u043e M3U8 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043b \u0438 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u044b \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0432 AIMP. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0440\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u043e\u0432 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c CU\u0415 - \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0442\u0430\u043a\u0438\u0435 \u0444\u0430\u0439\u043b\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438\u0441\u044c \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u043c\u0438.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u041f\u043e \u043d\u0430\u0447\u0430\u043b\u0443, \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043d\u0430\u0443\u0447\u0438\u0442\u044c \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u043c AIMPPL4, \u043d\u043e \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430 \u0441\u0442\u0430\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u0438\u043c\u0435\u044e\u0449\u0438\u0445\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0434\u043b\u044f \u043a\u0440\u043e\u0441\u0441-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0438 \u0444\u043e\u0440\u043c\u0430\u0442 \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c. \u041d\u043e \u0441\u0442\u043e\u0438\u0442 \u043b\u0438 \u0434\u0435\u043b\u0430\u0442\u044c AIMPPL5, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e AIMP \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u0439?<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u0412\u044b\u0431\u043e\u0440 \u043f\u0430\u043b \u043d\u0430 XSPF:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul><li>\u041e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0438 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439<\/li><li>\u0427\u0435\u0442\u043a\u0430\u044f \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f<br><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-medium-gray-color\">\u0421\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0447\u0435\u0442\u043a\u043e \u0440\u0435\u0433\u043b\u0430\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u043a\u0430\u043a \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u043f\u043e\u043b\u044f.<\/mark><br><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-medium-gray-color\">\u041d\u0438\u043a\u0430\u043a\u0438\u0445 \u0440\u0430\u0437\u043d\u043e\u0447\u0442\u0435\u043d\u0438\u0439.<\/mark><\/li><li>\u041a\u0440\u043e\u0441\u0441-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u0439 <br><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-medium-gray-color\">\u041f\u0443\u0442\u0438 \u043a \u0444\u0430\u0439\u043b\u0430\u043c \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, <\/mark><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-medium-gray-color\">c<\/mark> <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-medium-gray-color\">\u0443\u0447\u0435\u0442\u043e\u043c \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 \u0438 Linux, \u0438 Windows. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0443\u0442\u0438.<\/mark><\/li><li>\u0420\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u044b\u0439<br><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-medium-gray-color\">\u0412 \u0444\u0430\u0439\u043b \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0438 \u0438 \u043f\u0440\u043e\u043e\u0431\u0440\u0430\u0437\u0430 \u0441\u043c\u0430\u0440\u0442-\u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0430. <\/mark><\/li><li>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0433\u0438\u043c\u0438 \u043f\u043b\u0435\u0435\u0440\u0430\u043c\u0438<br><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-medium-gray-color\">\u042d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 AIMP, \u043d\u043e \u0438 \u0432 \u043b\u044e\u0431\u043e\u043c \u0434\u0440\u0443\u0433\u043e\u043c \u043f\u043b\u0435\u0435\u0440\u0435 \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 XSPF.<\/mark><\/li><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p><strong>\u041a\u0440\u043e\u0441\u0441-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u043e\u0441\u0442\u044c<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u041f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u044b \u0441\u0442\u0430\u043b\u0438 \u043b\u0435\u0433\u043a\u043e\u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043c\u044b\u043c\u0438 \u043c\u0435\u0436\u0434\u0443 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u0438 \u041f\u041a \u0432\u0435\u0440\u0441\u0438\u0435\u0439 AIMP. \u041d\u0435 \u0432\u0430\u0436\u043d\u043e, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u043b\u0438 \u0432 \u0438\u0445 \u0441 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u043c\u0438 \u043f\u0443\u0442\u044f\u043c\u0438 \u0438\u043b\u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 - \u0433\u043b\u0430\u0432\u043d\u043e\u0435, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0438 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043b\u0438\u0441\u044c \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043f\u0430\u043f\u043a\u043e\u0439 \u0441 \u043c\u0443\u0437\u044b\u043a\u043e\u0439. <\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u041f\u043e\u043c\u0438\u043c\u043e \u044d\u0442\u043e\u0433\u043e, \u0442\u0435\u043f\u0435\u0440\u044c \u0442\u0430\u043a \u0436\u0435 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u044f\u0442\u0441\u044f:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul><li>\u0410\u0443\u0434\u0438\u043e-\u0441\u0435\u0442\u044b, \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u043d\u0430 \u0442\u0440\u0435\u043a\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0430\u0439\u043b\u0430 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438 (CUE)<\/li><li>\u0421\u043c\u0430\u0440\u0442-\u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u044b \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u0430\u043f\u043e\u043a \u0438 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u043e\u0432<br><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-medium-gray-color\">\u0421\u0442\u043e\u0438\u0442 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043f\u043e\u043a\u0430 \u0435\u0449\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043d\u0435 \u0432\u0441\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u0447\u0442\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432 \u041f\u041a \u0432\u0435\u0440\u0441\u0438\u0438 \u0434\u043b\u044f \u0441\u043c\u0430\u0440\u0442-\u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u043e\u0432 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432.<\/mark><\/li><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 XSPF \u0441\u0442\u0430\u043b \u043f\u0435\u0440\u0432\u044b\u043c \u0448\u0430\u0433\u043e\u043c \u043a \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u0435\u0436\u0434\u0443 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u0438 \u041f\u041a \u0432\u0435\u0440\u0441\u0438\u0435\u0439 AIMP.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u0412 \u0445\u043e\u0434\u0435 \u043f\u043e\u043b\u0435\u0432\u044b\u0445 \u0438\u0441\u043f\u044b\u0442\u0430\u043d\u0438\u0439 \u043d\u0430\u0448\u0435\u043b\u0441\u044f \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u043c\u0438\u043d\u0443\u0441 \u043d\u043e\u0432\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430: \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0430 XML \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430, \u0447\u0442\u043e \u043d\u0435\u0433\u0430\u0442\u0438\u0432\u043d\u043e \u0432\u043b\u0438\u044f\u0435\u0442 \u043a\u0430\u043a \u043d\u0430 \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430, \u0442\u0430\u043a \u0438 \u043d\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0435\u0433\u043e \u0447\u0442\u0435\u043d\u0438\u044f. <\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0437\u0446\u0430 \u0431\u044b\u043b \u0432\u0437\u044f\u0442 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442 \u043d\u0430 <span style=\"text-decoration: underline;\">50 000<\/span> \u0444\u0430\u0439\u043b\u043e\u0432 \u0441 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u043c\u0438 \u0442\u0435\u0433\u0430\u043c\u0438 (\u0442\u0435, \u0447\u0442\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f AIMP \u0438 \u043f\u0438\u0448\u0443\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0430):<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table><tbody><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>\u0424\u043e\u0440\u043c\u0430\u0442<\/strong><\/td><td><strong>\u0420\u0430\u0437\u043c\u0435\u0440 (\u041c\u0411)<\/strong><\/td><td><strong>\u0412\u0440\u0435\u043c\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 (\u0441\u0435\u043a)<\/strong><\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">XSPF<\/td><td>37.2<\/td><td>1.6<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">M3U8<\/td><td>6.8<\/td><td>0.4<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">AIMPPL4<\/td><td>20.7<\/td><td>0.9<\/td><\/tr><\/tbody><\/table><figcaption>\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432<\/figcaption><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>\u0411\u043e\u043b\u044c\u0448\u0430\u044f \u043b\u0438 \u044d\u0442\u043e \u043f\u043b\u0430\u0442\u0430 \u0437\u0430 \u043a\u0440\u043e\u0441\u0441-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u043e\u0441\u0442\u044c?<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u0421\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 AIMP \u0434\u043b\u044f XSPF \u0438 \u0438\u0445 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0435 <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\">AIMP Extensions for XSPF<\/mark> \u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 <a rel=\"noreferrer noopener\" href=\"https:\/\/www.aimp.ru\/?do=download&amp;os=windows&amp;cat=sdk\" data-type=\"URL\" data-id=\"https:\/\/www.aimp.ru\/?do=download&amp;os=windows&amp;cat=sdk\" target=\"_blank\">SDK<\/a>.<\/p>\n<!-- \/wp:paragraph -->","_ru_post_name":"xspf-%d1%84%d0%be%d1%80%d0%bc%d0%b0%d1%82-%d0%bf%d0%bb%d0%b5%d0%b9%d0%bb%d0%b8%d1%81%d1%82%d0%be%d0%b2-%d0%bf%d0%be-%d1%83%d0%bc%d0%be%d0%bb%d1%87%d0%b0%d0%bd%d0%b8%d1%8e","_ru_post_excerpt":"","_ru_post_title":"XSPF - \u0444\u043e\u0440\u043c\u0430\u0442 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u043e\u0432 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e","_en_post_content":"<!-- wp:paragraph -->\n<p>As you can see, the XSPF file format became a default playlist format in both AIMP version (in <a rel=\"noreferrer noopener\" href=\"https:\/\/www.aimp.ru\/?do=changelog&amp;os=windows&amp;s=2370&amp;f=2399&amp;merge=1\" target=\"_blank\">AIMP v5.03 for Windows<\/a> and <a rel=\"noreferrer noopener\" href=\"https:\/\/www.aimp.ru\/?do=changelog&amp;os=android&amp;ver=330&amp;merge=1\" target=\"_blank\">AIMP v3.30 for Android<\/a>). What is XSPF? What is the reason to make it default playlist format in AIMP?<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:more -->\n<!--more-->\n<!-- \/wp:more -->\n\n<!-- wp:paragraph -->\n<p><strong>About<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><a href=\"https:\/\/xspf.org\/\" data-type=\"URL\" data-id=\"https:\/\/xspf.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">XSPF<\/a> (XML Shareable Playlist Format) is the XML-base file format for sharing playlists. XSPF was created by <a rel=\"noreferrer noopener\" href=\"https:\/\/xiph.org\/\" data-type=\"URL\" data-id=\"https:\/\/xiph.org\/\" target=\"_blank\">Xiph.Org Foundation<\/a> and released in 2005. Main features of the format are: <span style=\"text-decoration: underline;\">opensource<\/span>, <span style=\"text-decoration: underline;\">patent-free<\/span>, <span style=\"text-decoration: underline;\">cross-platform<\/span> and <span style=\"text-decoration: underline;\">extendable<\/span>.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>In AIMP, XSPF support has been implemented in v2.60 in far 2009. But the player was only able to import playlist, not export them. Export support has been added now, in v5.03 where the XSPF became a default playlist format for AIMP.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>Default format<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Experimenting with synchronization between devices, we decided to small start: ensure the playlist files are compatible with mobile and desktop versions of the player.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Untile recently, mobile version used binary file format (AIMPBPL) as default playlist format, while desktop version used text format (AIMPPL4). This was due to the fact that parsing a text-based playlist on Android required more time and memory than a binary one. One way to share playlists between PC and mobile is export them to the M3U8 file format using relative paths. But the M3U8 does not support even a half of the features that AIMP has. For example, CUE-splitted tracks become an invalid after export to the M3U8.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>In beginning, we were planning to add the AIMPPL4 playlist format support to the mobile version of player, but revoke this idea after first tests. Tests shown that AIMPPL4 has no features for cross-platform sharing and we need to enhance it. Is it reason to create a new AIMPPL5 format that will only supported by latest versions of AIMP?<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>So, we chose XSPF:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul><li>It is open and free<\/li><li>It has a strict specification<br><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-medium-gray-color\">The specification strictly regulates the fields and data types.<\/mark><br><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-medium-gray-color\">No inconsistencies.<\/mark><\/li><li>It is cross-platform <br><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-medium-gray-color\">File paths always stored in URL-like form, taking windows and unix specifics into account. Relative paths are supported.<\/mark><\/li><li>It is extendable <br><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-medium-gray-color\">We will able to store a custom data to the file. For example: smart-playlist's preimage, appearance and grouping settings. <\/mark><\/li><li>It is supported by other players<br><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-medium-gray-color\">Resulting playlist can be opened in any other player that supports for XSPF, not only in AIMP.<\/mark><\/li><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p><strong>Cross-platform<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Now, playlist became a shareable between mobile and PC version of AIMP. It doesn't matter if you saving them using absolute or relative paths - the main thing here is that they are shared along with the music folder.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Additionally, now shared following things:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul><li>CUE-splitted tracks<\/li><li>Smart-playlists based on folders or playlists<br><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-medium-gray-color\">Note that mobile version has less number of smart-playlists features than PC's one. It is temporary limitation, I hope.<\/mark>  <\/li><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p>So, migrating to the XSPF became a first step towards synchronization between mobile and desktop versions of AIMP.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>Performance<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>During first tests, we have found a main disadvantage of the format: XML markup takes to much space in XSPF specification. It leads to increase the size of resulting playlist files  and increase the playlist loading time. <\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>For example, the playlist contains a <span style=\"text-decoration: underline;\">50 000<\/span> of audio files with fully filled tags (all tag fields supported by AIMP were not empty):<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table><tbody><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>Format<\/strong><\/td><td><strong>File size (MB)<\/strong><\/td><td><strong>Loading time (sec)<\/strong><\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">XSPF<\/td><td>37.2<\/td><td>1.6<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">M3U8<\/td><td>6.8<\/td><td>0.4<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">AIMPPL4<\/td><td>20.7<\/td><td>0.9<\/td><\/tr><\/tbody><\/table><figcaption>Comparing formats performance<\/figcaption><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Is it a big price for cross-platform?<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>List of all AIMP's extensions for the XSPF file format and their descriptions you can find in the <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\">AIMP Extensions for XSPF<\/mark> document that included to the <a rel=\"noreferrer noopener\" href=\"https:\/\/www.aimp.ru\/?do=download&amp;os=windows&amp;cat=sdk\" data-type=\"URL\" data-id=\"https:\/\/www.aimp.ru\/?do=download&amp;os=windows&amp;cat=sdk\" target=\"_blank\">SDK<\/a> package.<\/p>\n<!-- \/wp:paragraph -->","_en_post_name":"","_en_post_excerpt":"","_en_post_title":"XSPF as default playlist format","edit_language":"en","footnotes":""},"categories":[8,3,1],"tags":[101],"class_list":["post-1194","post","type-post","status-publish","format-standard","hentry","category-aimp-mobile","category-aimp","category-1","tag-xspf"],"views":6540,"_links":{"self":[{"href":"https:\/\/aimp.ru\/blogs?language=en%2Findex.php&rest_route=\/wp\/v2\/posts\/1194","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aimp.ru\/blogs?language=en%2Findex.php&rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aimp.ru\/blogs?language=en%2Findex.php&rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aimp.ru\/blogs?language=en%2Findex.php&rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aimp.ru\/blogs?language=en%2Findex.php&rest_route=%2Fwp%2Fv2%2Fcomments&post=1194"}],"version-history":[{"count":0,"href":"https:\/\/aimp.ru\/blogs?language=en%2Findex.php&rest_route=\/wp\/v2\/posts\/1194\/revisions"}],"wp:attachment":[{"href":"https:\/\/aimp.ru\/blogs?language=en%2Findex.php&rest_route=%2Fwp%2Fv2%2Fmedia&parent=1194"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aimp.ru\/blogs?language=en%2Findex.php&rest_route=%2Fwp%2Fv2%2Fcategories&post=1194"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aimp.ru\/blogs?language=en%2Findex.php&rest_route=%2Fwp%2Fv2%2Ftags&post=1194"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}