如何测试 ABR 流?

How to test ABR streaming?

我正在本地网络上测试 ABR,我可以寻求一些帮助来确认这个 MPD 对两个在直播中工作的适配集是正确的吗? 因为目前我无法模拟较低的带宽:我尝试使用 chrome/console/performance 但没有结果,这是我从 chrome 控制台读取的内容:

[3945283] AbrController (video) stay on 1/1 (buffer: 24.141)

1/1 让我觉得工作不正常。

这是生成的 MPD 文件:

<?xml version="1.0"?>
<!-- MPD file Generated with GPAC version 0.7.2-DEV-rev370-gf3b5c45-master  at 2018-01-31T19:27:36.330Z-->
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" minBufferTime="PT4.000S" type="dynamic" publishTime="2018-01-31T19:27:36Z" availabilityStartTime="2018-01-31T18:58:43.505Z" timeShiftBufferDepth="PT0H0M24.000S" minimumUpdatePeriod="PT0H4M0.000S" maxSegmentDuration="PT0H0M12.000S" profiles="urn:mpeg:dash:profile:isoff-live:2011,http://dashif.org/guidelines/dash264">
 <ProgramInformation moreInformationURL="http://gpac.io">
  <Title>manifest.mpd generated by GPAC</Title>
 </ProgramInformation>

 <Period id="DID1" start="PT0H0M0.000S">
  <AdaptationSet segmentAlignment="true" bitstreamSwitching="true" maxWidth="1920" maxHeight="1080" maxFrameRate="24" par="16:9" lang="und">
   <SegmentTemplate initialization="manifest_set1_init.mp4"/>
   <Representation id="1" mimeType="video/mp4" codecs="avc3.4D4028" width="1920" height="1080" frameRate="24" sar="1:1" startWithSAP="1" bandwidth="7758">
    <SegmentTemplate media="format-1080_dash_track1_$Number$.m4s" timescale="12288" startNumber="1" duration="98304"/>
   </Representation>
   <Representation id="2" mimeType="video/mp4" codecs="avc3.4D401E" width="640" height="360" frameRate="24" sar="1:1" startWithSAP="1" bandwidth="1314">
    <SegmentTemplate media="format-360_dash_track1_$Number$.m4s" timescale="12288" startNumber="1" duration="98304"/>
   </Representation>
  </AdaptationSet>
  <AdaptationSet segmentAlignment="true" bitstreamSwitching="true" lang="eng">
   <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
   <SegmentTemplate initialization="manifest_set2_init.mp4"/>
   <Representation id="3" mimeType="audio/mp4" codecs="mp4a.40.2" audioSamplingRate="48000" startWithSAP="1" bandwidth="261">
    <SegmentTemplate media="format-1080_dash_track2_$Number$.m4s" timescale="48000" startNumber="1" duration="384000"/>
   </Representation>
   <Representation id="4" mimeType="audio/mp4" codecs="mp4a.40.2" audioSamplingRate="48000" startWithSAP="1" bandwidth="135">
    <SegmentTemplate media="format-360_dash_track2_$Number$.m4s" timescale="48000" startNumber="1" duration="384000"/>
   </Representation>
  </AdaptationSet>
 </Period>
</MPD>

通过以下 MP4Box 命令:

MP4Box -dash-live 8000 -subdur 8000 -profile dashavc264:live -mpd-refresh 240.0 -time-shift 24 -min-buffer 4000 -insert-utc -no-cache -out manifest.mpd format-1080.mp4#video format-360.mp4#video format-1080.mp4#audio format-360.mp4#audio

我还可以问一下,如果带宽不足,测试浏览器是否更改表示的正确方法是什么?

非常感谢!

要进行测试,您可以:

  • 使用测试播放器并手动 select 您想要与播放器控件一起使用的比特率。
  • 使用测试播放器和网络测试器将流量注入本地网络或网络适配器以模拟繁忙的网络,并检查测试播放器的日志以查看它是否更改流。
  • 修改一个开源测试播放器,例如Dash.js的ExoPlayer,添加自己的控件或测试。

例如,DASH 行业论坛参考播放器将允许您使用视频的屏幕控件在比特率之间手动切换:

撰写本文时播放器在这里值得搜索以检查您是否拥有最新版本:http://reference.dashif.org/dash.js/v2.5.0/samples/dash-if-reference-player/index.html

还有许多在线 DASH 清单验证器 - 我无法对其中一个的优点进行评论,但这个似乎确实提供了结果并突出显示了清单中的一些错误:

值得一提的是,上面的验证器似乎比某些实现更严格 - 我已经看到在实时站点中播放媒体但未通过此验证的清单示例。但是,它应该可以帮助您确定问题 - 您会在上面的清单中看到它提供了一条注释:

If more than one Media Segment is present the duration attribute or SegmentTimeline element shall be present

您可以在开发者工具中使用 Chrome 的网络选项来限制网络带宽。 如果单击网络选项卡,请查看最右侧,将有一个组合框,应在其中选择 "Online"。打开它并选择一个网络限制选项。您甚至可以添加自己的,但通常预设选项就足够了。 希望对您有所帮助,

干杯。