Where the segments listed in a HLS playlist are located?










1















I have the next HLS playlist: https://digitacdn.akamaized.net/hls/live/629243/radiosuomipop/master-128000.m3u8.
It contains AAC audio file segments links.
File content is:



#EXTM3U
#EXT-X-VERSION:3
## Created with Z/IPStream R/2 v1.03.23
#EXT-X-MEDIA-SEQUENCE:2984548
#EXT-X-TARGETDURATION:6
#EXT-X-PROGRAM-DATE-TIME:2018-10-23T11:44:44Z
#EXTINF:5.99, no desc
01493/seg128000-02984548.aac
#EXTINF:5.99, no desc
01493/seg128000-02984549.aac
#EXTINF:5.99, no desc
01493/seg128000-02984550.aac
#EXTINF:5.99, no desc
01493/seg128000-02984551.aac
#EXTINF:5.99, no desc
01493/seg128000-02984552.aac
#EXTINF:5.99, no desc
01493/seg128000-02984553.aac


I can not understand where these segments are located. Could anybody explain me that? How can I reach each separate segment to play it, for instance, with NAudio MediaFoundationReader?










share|improve this question
























  • They exist relative to the source document, in exactly the same way as links in HTML pages work. So: for instance 01593/seg128000-03184874.aac found in the document exists at https://digitacdn.akamaized.net/hls/live/629243/radiosuomipop/01593/seg128000-03184874.aac

    – spender
    Nov 6 '18 at 9:10











  • Thank you very much!

    – Liidia
    Nov 6 '18 at 9:24











  • FYI, this is an HLS playlist. It doesn't have anything to do with SHOUTcast.

    – Brad
    Nov 9 '18 at 20:53











  • Ok, I will read about HLS playlists. Thank you, Brad!

    – Liidia
    Nov 10 '18 at 10:17















1















I have the next HLS playlist: https://digitacdn.akamaized.net/hls/live/629243/radiosuomipop/master-128000.m3u8.
It contains AAC audio file segments links.
File content is:



#EXTM3U
#EXT-X-VERSION:3
## Created with Z/IPStream R/2 v1.03.23
#EXT-X-MEDIA-SEQUENCE:2984548
#EXT-X-TARGETDURATION:6
#EXT-X-PROGRAM-DATE-TIME:2018-10-23T11:44:44Z
#EXTINF:5.99, no desc
01493/seg128000-02984548.aac
#EXTINF:5.99, no desc
01493/seg128000-02984549.aac
#EXTINF:5.99, no desc
01493/seg128000-02984550.aac
#EXTINF:5.99, no desc
01493/seg128000-02984551.aac
#EXTINF:5.99, no desc
01493/seg128000-02984552.aac
#EXTINF:5.99, no desc
01493/seg128000-02984553.aac


I can not understand where these segments are located. Could anybody explain me that? How can I reach each separate segment to play it, for instance, with NAudio MediaFoundationReader?










share|improve this question
























  • They exist relative to the source document, in exactly the same way as links in HTML pages work. So: for instance 01593/seg128000-03184874.aac found in the document exists at https://digitacdn.akamaized.net/hls/live/629243/radiosuomipop/01593/seg128000-03184874.aac

    – spender
    Nov 6 '18 at 9:10











  • Thank you very much!

    – Liidia
    Nov 6 '18 at 9:24











  • FYI, this is an HLS playlist. It doesn't have anything to do with SHOUTcast.

    – Brad
    Nov 9 '18 at 20:53











  • Ok, I will read about HLS playlists. Thank you, Brad!

    – Liidia
    Nov 10 '18 at 10:17













1












1








1








I have the next HLS playlist: https://digitacdn.akamaized.net/hls/live/629243/radiosuomipop/master-128000.m3u8.
It contains AAC audio file segments links.
File content is:



#EXTM3U
#EXT-X-VERSION:3
## Created with Z/IPStream R/2 v1.03.23
#EXT-X-MEDIA-SEQUENCE:2984548
#EXT-X-TARGETDURATION:6
#EXT-X-PROGRAM-DATE-TIME:2018-10-23T11:44:44Z
#EXTINF:5.99, no desc
01493/seg128000-02984548.aac
#EXTINF:5.99, no desc
01493/seg128000-02984549.aac
#EXTINF:5.99, no desc
01493/seg128000-02984550.aac
#EXTINF:5.99, no desc
01493/seg128000-02984551.aac
#EXTINF:5.99, no desc
01493/seg128000-02984552.aac
#EXTINF:5.99, no desc
01493/seg128000-02984553.aac


I can not understand where these segments are located. Could anybody explain me that? How can I reach each separate segment to play it, for instance, with NAudio MediaFoundationReader?










share|improve this question
















I have the next HLS playlist: https://digitacdn.akamaized.net/hls/live/629243/radiosuomipop/master-128000.m3u8.
It contains AAC audio file segments links.
File content is:



#EXTM3U
#EXT-X-VERSION:3
## Created with Z/IPStream R/2 v1.03.23
#EXT-X-MEDIA-SEQUENCE:2984548
#EXT-X-TARGETDURATION:6
#EXT-X-PROGRAM-DATE-TIME:2018-10-23T11:44:44Z
#EXTINF:5.99, no desc
01493/seg128000-02984548.aac
#EXTINF:5.99, no desc
01493/seg128000-02984549.aac
#EXTINF:5.99, no desc
01493/seg128000-02984550.aac
#EXTINF:5.99, no desc
01493/seg128000-02984551.aac
#EXTINF:5.99, no desc
01493/seg128000-02984552.aac
#EXTINF:5.99, no desc
01493/seg128000-02984553.aac


I can not understand where these segments are located. Could anybody explain me that? How can I reach each separate segment to play it, for instance, with NAudio MediaFoundationReader?







c# naudio hls internet-radio naudio-framework






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 13 '18 at 7:59







Liidia

















asked Nov 6 '18 at 8:33









LiidiaLiidia

165




165












  • They exist relative to the source document, in exactly the same way as links in HTML pages work. So: for instance 01593/seg128000-03184874.aac found in the document exists at https://digitacdn.akamaized.net/hls/live/629243/radiosuomipop/01593/seg128000-03184874.aac

    – spender
    Nov 6 '18 at 9:10











  • Thank you very much!

    – Liidia
    Nov 6 '18 at 9:24











  • FYI, this is an HLS playlist. It doesn't have anything to do with SHOUTcast.

    – Brad
    Nov 9 '18 at 20:53











  • Ok, I will read about HLS playlists. Thank you, Brad!

    – Liidia
    Nov 10 '18 at 10:17

















  • They exist relative to the source document, in exactly the same way as links in HTML pages work. So: for instance 01593/seg128000-03184874.aac found in the document exists at https://digitacdn.akamaized.net/hls/live/629243/radiosuomipop/01593/seg128000-03184874.aac

    – spender
    Nov 6 '18 at 9:10











  • Thank you very much!

    – Liidia
    Nov 6 '18 at 9:24











  • FYI, this is an HLS playlist. It doesn't have anything to do with SHOUTcast.

    – Brad
    Nov 9 '18 at 20:53











  • Ok, I will read about HLS playlists. Thank you, Brad!

    – Liidia
    Nov 10 '18 at 10:17
















They exist relative to the source document, in exactly the same way as links in HTML pages work. So: for instance 01593/seg128000-03184874.aac found in the document exists at https://digitacdn.akamaized.net/hls/live/629243/radiosuomipop/01593/seg128000-03184874.aac

– spender
Nov 6 '18 at 9:10





They exist relative to the source document, in exactly the same way as links in HTML pages work. So: for instance 01593/seg128000-03184874.aac found in the document exists at https://digitacdn.akamaized.net/hls/live/629243/radiosuomipop/01593/seg128000-03184874.aac

– spender
Nov 6 '18 at 9:10













Thank you very much!

– Liidia
Nov 6 '18 at 9:24





Thank you very much!

– Liidia
Nov 6 '18 at 9:24













FYI, this is an HLS playlist. It doesn't have anything to do with SHOUTcast.

– Brad
Nov 9 '18 at 20:53





FYI, this is an HLS playlist. It doesn't have anything to do with SHOUTcast.

– Brad
Nov 9 '18 at 20:53













Ok, I will read about HLS playlists. Thank you, Brad!

– Liidia
Nov 10 '18 at 10:17





Ok, I will read about HLS playlists. Thank you, Brad!

– Liidia
Nov 10 '18 at 10:17












1 Answer
1






active

oldest

votes


















2














Due to the lack of leading /, the resources exist at a location relative to the source document in exactly the same way as links in HTML pages work. So: for instance 01593/seg128000-03184874.aac found in the document at https://digitacdn.akamaized.net/hls/live/629243/radiosuomipop/master-128000.m3u8 exists at https://digitacdn.akamaized.net/hls/live/629243/radiosuomipop/01593/seg128000-03184874.aac.



A safe way of dealing with this is to use existing overloads on the Uri class:



var m3u8Url = 
"https://digitacdn.akamaized.net/hls/live/629243/radiosuomipop/master-128000.m3u8"
var baseUri = new Uri(m3u8Url);
var resourceUri = new Uri(baseUri, "01493/seg128000-02984548.aac");
Console.WriteLine(resourceUri.AbsoluteUri);


Done this way, the resulting Urls will be assembled using the same logic as used by browsers, correctly dealing with relative (32724/foo), local absolute (/32724/foo) and fully qualified URLs (http://somehost/32724/foo).






share|improve this answer






















    Your Answer






    StackExchange.ifUsing("editor", function ()
    StackExchange.using("externalEditor", function ()
    StackExchange.using("snippets", function ()
    StackExchange.snippets.init();
    );
    );
    , "code-snippets");

    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "1"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader:
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    ,
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );













    draft saved

    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53168294%2fwhere-the-segments-listed-in-a-hls-playlist-are-located%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    2














    Due to the lack of leading /, the resources exist at a location relative to the source document in exactly the same way as links in HTML pages work. So: for instance 01593/seg128000-03184874.aac found in the document at https://digitacdn.akamaized.net/hls/live/629243/radiosuomipop/master-128000.m3u8 exists at https://digitacdn.akamaized.net/hls/live/629243/radiosuomipop/01593/seg128000-03184874.aac.



    A safe way of dealing with this is to use existing overloads on the Uri class:



    var m3u8Url = 
    "https://digitacdn.akamaized.net/hls/live/629243/radiosuomipop/master-128000.m3u8"
    var baseUri = new Uri(m3u8Url);
    var resourceUri = new Uri(baseUri, "01493/seg128000-02984548.aac");
    Console.WriteLine(resourceUri.AbsoluteUri);


    Done this way, the resulting Urls will be assembled using the same logic as used by browsers, correctly dealing with relative (32724/foo), local absolute (/32724/foo) and fully qualified URLs (http://somehost/32724/foo).






    share|improve this answer



























      2














      Due to the lack of leading /, the resources exist at a location relative to the source document in exactly the same way as links in HTML pages work. So: for instance 01593/seg128000-03184874.aac found in the document at https://digitacdn.akamaized.net/hls/live/629243/radiosuomipop/master-128000.m3u8 exists at https://digitacdn.akamaized.net/hls/live/629243/radiosuomipop/01593/seg128000-03184874.aac.



      A safe way of dealing with this is to use existing overloads on the Uri class:



      var m3u8Url = 
      "https://digitacdn.akamaized.net/hls/live/629243/radiosuomipop/master-128000.m3u8"
      var baseUri = new Uri(m3u8Url);
      var resourceUri = new Uri(baseUri, "01493/seg128000-02984548.aac");
      Console.WriteLine(resourceUri.AbsoluteUri);


      Done this way, the resulting Urls will be assembled using the same logic as used by browsers, correctly dealing with relative (32724/foo), local absolute (/32724/foo) and fully qualified URLs (http://somehost/32724/foo).






      share|improve this answer

























        2












        2








        2







        Due to the lack of leading /, the resources exist at a location relative to the source document in exactly the same way as links in HTML pages work. So: for instance 01593/seg128000-03184874.aac found in the document at https://digitacdn.akamaized.net/hls/live/629243/radiosuomipop/master-128000.m3u8 exists at https://digitacdn.akamaized.net/hls/live/629243/radiosuomipop/01593/seg128000-03184874.aac.



        A safe way of dealing with this is to use existing overloads on the Uri class:



        var m3u8Url = 
        "https://digitacdn.akamaized.net/hls/live/629243/radiosuomipop/master-128000.m3u8"
        var baseUri = new Uri(m3u8Url);
        var resourceUri = new Uri(baseUri, "01493/seg128000-02984548.aac");
        Console.WriteLine(resourceUri.AbsoluteUri);


        Done this way, the resulting Urls will be assembled using the same logic as used by browsers, correctly dealing with relative (32724/foo), local absolute (/32724/foo) and fully qualified URLs (http://somehost/32724/foo).






        share|improve this answer













        Due to the lack of leading /, the resources exist at a location relative to the source document in exactly the same way as links in HTML pages work. So: for instance 01593/seg128000-03184874.aac found in the document at https://digitacdn.akamaized.net/hls/live/629243/radiosuomipop/master-128000.m3u8 exists at https://digitacdn.akamaized.net/hls/live/629243/radiosuomipop/01593/seg128000-03184874.aac.



        A safe way of dealing with this is to use existing overloads on the Uri class:



        var m3u8Url = 
        "https://digitacdn.akamaized.net/hls/live/629243/radiosuomipop/master-128000.m3u8"
        var baseUri = new Uri(m3u8Url);
        var resourceUri = new Uri(baseUri, "01493/seg128000-02984548.aac");
        Console.WriteLine(resourceUri.AbsoluteUri);


        Done this way, the resulting Urls will be assembled using the same logic as used by browsers, correctly dealing with relative (32724/foo), local absolute (/32724/foo) and fully qualified URLs (http://somehost/32724/foo).







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 6 '18 at 9:47









        spenderspender

        86.4k21157280




        86.4k21157280



























            draft saved

            draft discarded
















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid


            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.

            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53168294%2fwhere-the-segments-listed-in-a-hls-playlist-are-located%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            這個網誌中的熱門文章

            How to read a connectionString WITH PROVIDER in .NET Core?

            Node.js Script on GitHub Pages or Amazon S3

            Museum of Modern and Contemporary Art of Trento and Rovereto