为什么这个破折号清单让播放器卡住,直到流被下载?
Why this dash manifest keeps the player stuck until streams are downloaded?
下面有 this 清单文件。问题是播放器在开始播放之前等待流完全下载,这对用户体验不利。知道如何解决吗?我希望播放器启动范围请求并向媒体源提供部分请求,而不是等待流完全下载。
<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>
您似乎混合使用了 DASH 'live' 配置文件方法和 'on-demand' 配置文件方法 - 您可以在 profiles="urn:mpeg:dash:profile: isoff-live:2011" 在清单的顶部。
在非常高的级别上,差异是:
- 'live' 配置文件清单包含要下载的每个片段的 URL 列表。
- 'on-demand' 配置文件清单包含文件的 URL 和文件中可以找到段的索引,因此客户端可以根据需要下载块。
DASH 是一个复杂的规范,可能有些玩家会接受一些配置文件的混合,而另一些则不会,而且并非所有玩家都支持所有功能 - 例如 Shaka 玩家声称不支持 'indexRange'(或2017 年做过:https://github.com/google/shaka-player/issues/765)
下面有 this 清单文件。问题是播放器在开始播放之前等待流完全下载,这对用户体验不利。知道如何解决吗?我希望播放器启动范围请求并向媒体源提供部分请求,而不是等待流完全下载。
<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>
您似乎混合使用了 DASH 'live' 配置文件方法和 'on-demand' 配置文件方法 - 您可以在 profiles="urn:mpeg:dash:profile: isoff-live:2011" 在清单的顶部。
在非常高的级别上,差异是:
- 'live' 配置文件清单包含要下载的每个片段的 URL 列表。
- 'on-demand' 配置文件清单包含文件的 URL 和文件中可以找到段的索引,因此客户端可以根据需要下载块。
DASH 是一个复杂的规范,可能有些玩家会接受一些配置文件的混合,而另一些则不会,而且并非所有玩家都支持所有功能 - 例如 Shaka 玩家声称不支持 'indexRange'(或2017 年做过:https://github.com/google/shaka-player/issues/765)