【问题标题】:Where the segments listed in a HLS playlist are located?HLS 播放列表中列出的片段位于何处?
【发布时间】:2019-04-09 15:11:47
【问题描述】:

我有下一个 HLS 播放列表:https://digitacdn.akamaized.net/hls/live/629243/radiosuomipop/master-128000.m3u8。 它包含 AAC 音频文件段链接。 文件内容为:

#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

我无法理解这些段的位置。有人可以解释一下吗?例如,如何使用 NAudio MediaFoundationReader 访问每个单独的片段来播放它?

【问题讨论】:

  • 它们与源文档相对存在,与 HTML 页面中的链接的工作方式完全相同。所以:例如在文档中找到的01593/seg128000-03184874.aac 存在于https://digitacdn.akamaized.net/hls/live/629243/radiosuomipop/01593/seg128000-03184874.aac
  • 仅供参考,这是一个 HLS 播放列表。它与 SHOUTcast 没有任何关系。
  • 好的,我会阅读有关 HLS 播放列表的信息。谢谢你,布拉德!

标签: c# naudio http-live-streaming internet-radio naudio-framework


【解决方案1】:

由于缺少前导/,资源存在于与源文档相对 的位置,其方式与HTML 页面中的链接的工作方式完全相同。所以:例如在https://digitacdn.akamaized.net/hls/live/629243/radiosuomipop/master-128000.m3u8 的文档中找到的01593/seg128000-03184874.aac 存在于https://digitacdn.akamaized.net/hls/live/629243/radiosuomipop/01593/seg128000-03184874.aac

处理此问题的一种安全方法是在 Uri 类上使用现有的重载:

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);

通过这种方式,生成的 URL 将使用与浏览器相同的逻辑进行组合,正确处理相对 (32724/foo)、本地绝对 (/32724/foo) 和完全限定 URL (http://somehost/32724/foo)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-27
    • 1970-01-01
    • 2014-03-10
    • 2018-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多