0

我在下面有这个清单文件。问题是播放器在开始播放之前等待流完全下载,这对用户体验不利。知道如何解决吗?我希望播放器启动范围请求并使用部分请求提供媒体源,而不是等待流完全下载。

<MPD xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 http://standards.iso.org/ittf/PubliclyAvailableStandards/MPEG-DASH_schema_files/DASH-MPD.xsd" profiles="urn:mpeg:dash:profile:isoff-live:2011" type="static" mediaPresentationDuration="PT30M67.6S" minBufferTime="PT2S">
<ProgramInformation></ProgramInformation>
<Period id="0" start="PT0.0S">
<AdaptationSet id="0" contentType="video" segmentAlignment="true" bitstreamSwitching="true" lang="und">
<Representation id="0" mimeType="video/webm" codecs="vp9" bandwidth="770153" width="854" height="480" frameRate="23421/1000">
<BaseURL>https://liveradio.s3.eu-central-1.amazonaws.com/video.webm</BaseURL>
<SegmentList duration="1840613" startNumber="1">
<Initialization range="0-219"/>
<SegmentURL indexRange="220-6592"/>
</SegmentList>
</Representation>
</AdaptationSet>
<AdaptationSet id="1" contentType="audio" segmentAlignment="true" bitstreamSwitching="true" lang="und">
<Representation id="1" mimeType="audio/webm" codecs="opus" bandwidth="115412" audioSamplingRate="48000">
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
<BaseURL>https://liveradio.s3.eu-central-1.amazonaws.com/audio.webm</BaseURL>
<SegmentList duration="1840641" startNumber="1">
<Initialization range="0-258"/>
<SegmentURL  indexRange="259-3444"/>
</SegmentList>
</Representation>
</AdaptationSet>
</Period>
</MPD>
4

1 回答 1

1

您似乎正在使用 DASH 'live' 配置文件方法和 'on-demand' 配置文件之一的组合 - 您可以在 profiles="urn:mpeg:dash:profile:isoff-live:2011" 中看到配置文件清单的顶部。

在非常高的水平上,区别是:

  • “实时”配置文件清单包含要下载的每个段的 url 列表。
  • “按需”配置文件清单包含文件的 URL 和可以在文件中找到段的索引,因此客户端可以根据需要下载块。

DASH 是一个复杂的规范,可能有些玩家会接受一些配置文件的混合而其他人不接受,并且并非所有玩家都支持所有功能 - 例如 Shaka 玩家声称不支持“indexRange”(或在 2017 年支持:https:/ /github.com/google/shaka-player/issues/765

于 2019-12-17T12:58:44.357 回答