MPD MPEG-DASH - показывает только один битрейт - PullRequest
0 голосов
/ 27 июня 2018

Помощь. Я не буду показывать битрейт.
player.getBitrateInfoListFor ( "видео"); Показывает только один битрейт - 454948

manifest.mpd, сгенерированный GPAC

 <Period duration="PT0H21M48.338S">
  <AdaptationSet segmentAlignment="true" group="1" maxWidth="270" maxHeight="480" maxFrameRate="2070000/93437" par="270:480" lang="und">
   <Representation id="1" mimeType="video/mp4" codecs="avc3.640015" width="270" height="480" frameRate="2070000/93437" sar="1:1" startWithSAP="1" bandwidth="454948">
    <SegmentTemplate media="480_bbb/segment__track1_$Number$.m4s" timescale="2070000" startNumber="1" duration="8280000" initialization="480_bbb/segment__track1_init.mp4"/>
   </Representation>
  </AdaptationSet>
  <AdaptationSet segmentAlignment="true" group="1" maxWidth="202" maxHeight="360" maxFrameRate="2070000/93437" par="202:360" lang="und">
   <Representation id="2" mimeType="video/mp4" codecs="avc3.64000D" width="202" height="360" frameRate="2070000/93437" sar="1:1" startWithSAP="1" bandwidth="281508">
    <SegmentTemplate media="360_bbb/segment__track1_$Number$.m4s" timescale="2070000" startNumber="1" duration="8280000" initialization="360_bbb/segment__track1_init.mp4"/>
   </Representation>
  </AdaptationSet>
  <AdaptationSet segmentAlignment="true" group="1" maxWidth="134" maxHeight="240" maxFrameRate="2070000/93437" par="134:240" lang="und">
   <Representation id="3" mimeType="video/mp4" codecs="avc3.64000B" width="134" height="240" frameRate="2070000/93437" sar="1:1" startWithSAP="1" bandwidth="182832">
    <SegmentTemplate media="240_bbb/segment__track1_$Number$.m4s" timescale="2070000" startNumber="1" duration="8280000" initialization="240_bbb/segment__track1_init.mp4"/>
   </Representation>
  </AdaptationSet>
  <AdaptationSet segmentAlignment="true" group="1" maxWidth="80" maxHeight="144" maxFrameRate="2070000/93437" par="80:144" lang="und">
   <Representation id="4" mimeType="video/mp4" codecs="avc3.640009" width="80" height="144" frameRate="2070000/93437" sar="1:1" startWithSAP="1" bandwidth="99667">
    <SegmentTemplate media="144_bbb/segment__track1_$Number$.m4s" timescale="2070000" startNumber="1" duration="8280000" initialization="144_bbb/segment__track1_init.mp4"/>
   </Representation>
  </AdaptationSet>
  <AdaptationSet segmentAlignment="true" lang="und">
   <Representation id="5" mimeType="audio/mp4" codecs="mp4a.40.2" startWithSAP="1" bandwidth="66056">
    <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="1"/>
    <SegmentTemplate media="audio_bbb/segment__track2_$Number$.m4s" timescale="48000" startNumber="1" duration="192000" initialization="audio_bbb/segment__track2_init.mp4"/>
   </Representation>
  </AdaptationSet>
 </Period>
</MPD>

player.getBitrateInfoListFor ( "видео"); Показывает только один битрейт - 454948

Ответы [ 2 ]

0 голосов
/ 13 августа 2018

Ваш файл MPD показывает, что все видео находятся в отдельном наборе адаптации.

Проблема в команде, которую вы используете для сегментирования видео в MP4Box. Вы должны установить параметр "профиль" при сегментировании видео с помощью MP4Box.

-profile NAME указывает целевой профиль DASH: onDemand, live, main, simple, full и два профиля из DASH-IF: dashavc264: live, dashavc264: onDemand. Это установит значения параметров по умолчанию, чтобы обеспечить соответствие желаемому профилю.

Команда MP4Box для сегментирования видео с профилем onDemand:

MP4Box -dash 4000 -frag 4000 -rap -profile onDemand -segment-name %s/segment_ -url-template -out manifest.mpd video144.mp4#video video240.mp4#video video360.mp4#video video480.mp4#video audio.mp4#audio

Источник: Поддержка DAC GPAC в MP4Box

0 голосов
/ 28 июня 2018

Если предположить, что представления видео являются взаимозаменяемыми версиями одного и того же контента, все они должны находиться в одном наборе AdaptationSet, чтобы клиент знал, что он может динамически переключаться между ними.

Как он у вас есть, клиент при запуске выберет наиболее подходящий набор AdaptationSet (вероятно, первый, поскольку других индикаторов нет) и правильно определит, что доступен только один битрейт.

...