Fix bitrate for DASH on-demand profile too
Removed the logic in MuxerListener to estimate bandwidth from file size and duration, since it is not compliant to the spec. MpdBuilder will estimate bandwidth from segment size and duration if bandwidth is not specified in MediaInfo. Here is the statement from DASH spec (23009-1:2014): Consider a hypothetical constant bitrate channel of bandwidth with the value of this attribute in bits per second (bps). Then, if the Representation is continuously delivered at this bitrate, starting at any SAP that is indicated either by @startwithsap or by any Segment Index box, a client can be assured of having enough data for continuous playout providing playout begins after @minbuffertime * @bandwidth bits have been received (i.e. at time @minbuffertime after the first bit is received). For dependent Representations this value specifies the bandwidth according to the above definition for the aggregation of this Representation and all complementary Representations. Fixes #376. Change-Id: I0fddce39e709d0cded0a4c9ae59adbbcc97ec5ea
This commit is contained in:
parent
60d7a4b2d5
commit
b2932d5a33
|
@ -3,7 +3,7 @@
|
|||
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" minBufferTime="PT2S" type="static" mediaPresentationDuration="PT2.877868413925171S">
|
||||
<Period id="0">
|
||||
<AdaptationSet id="0" contentType="audio" subsegmentAlignment="true">
|
||||
<Representation id="0" bandwidth="68215" codecs="mp4a.40.5" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<Representation id="0" bandwidth="66777" codecs="mp4a.40.5" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
||||
<BaseURL>bear-640x360-aac_he-silent_right-audio.mp4</BaseURL>
|
||||
<SegmentBase indexRange="756-823" timescale="44100">
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" minBufferTime="PT2S" type="static" mediaPresentationDuration="PT2.802799940109253S">
|
||||
<Period id="0">
|
||||
<AdaptationSet id="0" contentType="video" width="640" height="360" frameRate="30000/1001" subsegmentAlignment="true" par="16:9">
|
||||
<Representation id="0" bandwidth="882064" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<Representation id="0" bandwidth="973483" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<BaseURL>bear-640x360-video.mp4</BaseURL>
|
||||
<SegmentBase indexRange="823-890" timescale="30000">
|
||||
<Initialization range="0-822"/>
|
||||
|
@ -11,7 +11,7 @@
|
|||
</Representation>
|
||||
</AdaptationSet>
|
||||
<AdaptationSet id="1" contentType="audio" lang="pt-BR" subsegmentAlignment="true">
|
||||
<Representation id="1" bandwidth="126510" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<Representation id="1" bandwidth="130413" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
||||
<BaseURL>bear-640x360-audio.mp4</BaseURL>
|
||||
<SegmentBase indexRange="757-824" timescale="44100">
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" minBufferTime="PT2S" type="static" mediaPresentationDuration="PT2.802799940109253S">
|
||||
<Period id="0">
|
||||
<AdaptationSet id="0" contentType="video" width="640" height="360" frameRate="30000/1001" subsegmentAlignment="true" par="16:9">
|
||||
<Representation id="0" bandwidth="882064" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<Representation id="0" bandwidth="973483" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<BaseURL>bear-640x360-video.mp4</BaseURL>
|
||||
<SegmentBase indexRange="823-890" timescale="30000">
|
||||
<Initialization range="0-822"/>
|
||||
|
@ -12,7 +12,7 @@
|
|||
</AdaptationSet>
|
||||
<AdaptationSet id="1" contentType="audio" lang="pt" subsegmentAlignment="true">
|
||||
<Role schemeIdUri="urn:mpeg:dash:role:2011" value="main"/>
|
||||
<Representation id="1" bandwidth="126510" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<Representation id="1" bandwidth="130413" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
||||
<BaseURL>bear-640x360-audio.mp4</BaseURL>
|
||||
<SegmentBase indexRange="757-824" timescale="44100">
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" minBufferTime="PT2S" type="static" mediaPresentationDuration="PT2.802799940109253S">
|
||||
<Period id="0">
|
||||
<AdaptationSet id="0" contentType="video" width="640" height="360" frameRate="30000/1001" subsegmentAlignment="true" par="16:9">
|
||||
<Representation id="0" bandwidth="882064" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<Representation id="0" bandwidth="973483" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<BaseURL>bear-640x360-video.mp4</BaseURL>
|
||||
<SegmentBase indexRange="823-890" timescale="30000">
|
||||
<Initialization range="0-822"/>
|
||||
|
@ -12,7 +12,7 @@
|
|||
</AdaptationSet>
|
||||
<AdaptationSet id="1" contentType="video" width="640" height="360" frameRate="30000/30030" subsegmentAlignment="true" par="16:9">
|
||||
<EssentialProperty schemeIdUri="http://dashif.org/guidelines/trickmode" value="0"/>
|
||||
<Representation id="1" bandwidth="156160" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1" maxPlayoutRate="30" codingDependency="false">
|
||||
<Representation id="1" bandwidth="211545" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1" maxPlayoutRate="30" codingDependency="false">
|
||||
<BaseURL>bear-640x360-video-trick_play_factor_1.mp4</BaseURL>
|
||||
<SegmentBase indexRange="823-890" timescale="30000">
|
||||
<Initialization range="0-822"/>
|
||||
|
@ -20,7 +20,7 @@
|
|||
</Representation>
|
||||
</AdaptationSet>
|
||||
<AdaptationSet id="2" contentType="audio" subsegmentAlignment="true">
|
||||
<Representation id="2" bandwidth="126510" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<Representation id="2" bandwidth="130413" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
||||
<BaseURL>bear-640x360-audio.mp4</BaseURL>
|
||||
<SegmentBase indexRange="757-824" timescale="44100">
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" minBufferTime="PT2S" type="static" mediaPresentationDuration="PT2.802799940109253S">
|
||||
<Period id="0">
|
||||
<AdaptationSet id="0" contentType="video" width="640" height="360" frameRate="30000/1001" subsegmentAlignment="true" par="16:9">
|
||||
<Representation id="0" bandwidth="882064" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<Representation id="0" bandwidth="973483" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<BaseURL>bear-640x360-video.mp4</BaseURL>
|
||||
<SegmentBase indexRange="823-890" timescale="30000">
|
||||
<Initialization range="0-822"/>
|
||||
|
@ -12,13 +12,13 @@
|
|||
</AdaptationSet>
|
||||
<AdaptationSet id="1" contentType="video" width="640" height="360" maxFrameRate="30000/30030" par="16:9">
|
||||
<EssentialProperty schemeIdUri="http://dashif.org/guidelines/trickmode" value="0"/>
|
||||
<Representation id="1" bandwidth="103866" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1" frameRate="30000/60060" maxPlayoutRate="60" codingDependency="false">
|
||||
<Representation id="1" bandwidth="211545" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1" frameRate="30000/60060" maxPlayoutRate="60" codingDependency="false">
|
||||
<BaseURL>bear-640x360-video-trick_play_factor_2.mp4</BaseURL>
|
||||
<SegmentBase indexRange="823-878" timescale="30000">
|
||||
<Initialization range="0-822"/>
|
||||
</SegmentBase>
|
||||
</Representation>
|
||||
<Representation id="2" bandwidth="156160" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1" frameRate="30000/30030" maxPlayoutRate="30" codingDependency="false">
|
||||
<Representation id="2" bandwidth="211545" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1" frameRate="30000/30030" maxPlayoutRate="30" codingDependency="false">
|
||||
<BaseURL>bear-640x360-video-trick_play_factor_1.mp4</BaseURL>
|
||||
<SegmentBase indexRange="823-890" timescale="30000">
|
||||
<Initialization range="0-822"/>
|
||||
|
@ -26,7 +26,7 @@
|
|||
</Representation>
|
||||
</AdaptationSet>
|
||||
<AdaptationSet id="2" contentType="audio" subsegmentAlignment="true">
|
||||
<Representation id="3" bandwidth="126510" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<Representation id="3" bandwidth="130413" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
||||
<BaseURL>bear-640x360-audio.mp4</BaseURL>
|
||||
<SegmentBase indexRange="757-824" timescale="44100">
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" minBufferTime="PT2S" type="static" mediaPresentationDuration="PT2.802799940109253S">
|
||||
<Period id="0">
|
||||
<AdaptationSet id="0" contentType="video" width="640" height="360" frameRate="30000/1001" subsegmentAlignment="true" par="16:9">
|
||||
<Representation id="0" bandwidth="882064" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<Representation id="0" bandwidth="973483" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<BaseURL>bear-640x360-video.mp4</BaseURL>
|
||||
<SegmentBase indexRange="823-890" timescale="30000">
|
||||
<Initialization range="0-822"/>
|
||||
|
@ -11,7 +11,7 @@
|
|||
</Representation>
|
||||
</AdaptationSet>
|
||||
<AdaptationSet id="1" contentType="audio" subsegmentAlignment="true">
|
||||
<Representation id="1" bandwidth="126510" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<Representation id="1" bandwidth="130413" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
||||
<BaseURL>bear-640x360-audio.mp4</BaseURL>
|
||||
<SegmentBase indexRange="757-824" timescale="44100">
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<ContentProtection schemeIdUri="urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b">
|
||||
<cenc:pssh>AAAANHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAExMjM0NTY3ODkwMTIzNDU2AAAAAA==</cenc:pssh>
|
||||
</ContentProtection>
|
||||
<Representation id="0" bandwidth="884400" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<Representation id="0" bandwidth="975825" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<BaseURL>bear-640x360-video.mp4</BaseURL>
|
||||
<SegmentBase indexRange="1100-1167" timescale="30000">
|
||||
<Initialization range="0-1099"/>
|
||||
|
@ -19,7 +19,7 @@
|
|||
<ContentProtection schemeIdUri="urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b">
|
||||
<cenc:pssh>AAAANHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAExMjM0NTY3ODkwMTIzNDU2AAAAAA==</cenc:pssh>
|
||||
</ContentProtection>
|
||||
<Representation id="1" bandwidth="127237" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<Representation id="1" bandwidth="130413" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
||||
<BaseURL>bear-640x360-audio.mp4</BaseURL>
|
||||
<SegmentBase indexRange="976-1043" timescale="44100">
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<ContentProtection schemeIdUri="urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b">
|
||||
<cenc:pssh>AAAANHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAExMjM0NTY3ODkwMTIzNDU2AAAAAA==</cenc:pssh>
|
||||
</ContentProtection>
|
||||
<Representation id="0" bandwidth="885590" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<Representation id="0" bandwidth="977743" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<BaseURL>bear-640x360-video.mp4</BaseURL>
|
||||
<SegmentBase indexRange="1091-1158" timescale="30000">
|
||||
<Initialization range="0-1090"/>
|
||||
|
@ -19,7 +19,7 @@
|
|||
<ContentProtection schemeIdUri="urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b">
|
||||
<cenc:pssh>AAAANHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAExMjM0NTY3ODkwMTIzNDU2AAAAAA==</cenc:pssh>
|
||||
</ContentProtection>
|
||||
<Representation id="1" bandwidth="129162" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<Representation id="1" bandwidth="133406" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
||||
<BaseURL>bear-640x360-audio.mp4</BaseURL>
|
||||
<SegmentBase indexRange="967-1034" timescale="44100">
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" minBufferTime="PT2S" type="static" mediaPresentationDuration="PT2.802799940109253S">
|
||||
<Period id="0">
|
||||
<AdaptationSet id="0" contentType="video" width="640" height="360" frameRate="30000/1001" subsegmentAlignment="true" par="16:9">
|
||||
<Representation id="0" bandwidth="885590" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<Representation id="0" bandwidth="977743" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<ContentProtection value="cenc" schemeIdUri="urn:mpeg:dash:mp4protection:2011" cenc:default_KID="31323334-3536-3738-3930-313233343536"/>
|
||||
<ContentProtection schemeIdUri="urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b">
|
||||
<cenc:pssh>AAAANHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAExMjM0NTY3ODkwMTIzNDU2AAAAAA==</cenc:pssh>
|
||||
|
@ -15,7 +15,7 @@
|
|||
</Representation>
|
||||
</AdaptationSet>
|
||||
<AdaptationSet id="1" contentType="audio" subsegmentAlignment="true">
|
||||
<Representation id="1" bandwidth="129162" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<Representation id="1" bandwidth="133406" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
||||
<ContentProtection value="cenc" schemeIdUri="urn:mpeg:dash:mp4protection:2011" cenc:default_KID="31323334-3536-3738-3930-313233343536"/>
|
||||
<ContentProtection schemeIdUri="urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b">
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<ContentProtection schemeIdUri="urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b">
|
||||
<cenc:pssh>AAAANHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAExMjM0NTY3ODkwMTIzNDU2AAAAAA==</cenc:pssh>
|
||||
</ContentProtection>
|
||||
<Representation id="0" bandwidth="129651" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<Representation id="0" bandwidth="174678" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
||||
<BaseURL>bear-640x360-audio.mp4</BaseURL>
|
||||
<SegmentBase indexRange="967-1046" timescale="44100">
|
||||
|
@ -20,7 +20,7 @@
|
|||
<ContentProtection schemeIdUri="urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b">
|
||||
<cenc:pssh>AAAANHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAExMjM0NTY3ODkwMTIzNDU2AAAAAA==</cenc:pssh>
|
||||
</ContentProtection>
|
||||
<Representation id="1" bandwidth="885590" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<Representation id="1" bandwidth="977743" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<BaseURL>bear-640x360-video.mp4</BaseURL>
|
||||
<SegmentBase indexRange="1091-1158" timescale="30000">
|
||||
<Initialization range="0-1090"/>
|
||||
|
@ -34,7 +34,7 @@
|
|||
<ContentProtection schemeIdUri="urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b">
|
||||
<cenc:pssh>AAAANHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAExMjM0NTY3ODkwMTIzNDU2AAAAAA==</cenc:pssh>
|
||||
</ContentProtection>
|
||||
<Representation id="0" bandwidth="129651" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<Representation id="0" bandwidth="108126" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
||||
<BaseURL>bear-640x360-audio.mp4</BaseURL>
|
||||
<SegmentBase indexRange="967-1046" timescale="44100" presentationTimeOffset="91231">
|
||||
|
@ -47,7 +47,7 @@
|
|||
<ContentProtection schemeIdUri="urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b">
|
||||
<cenc:pssh>AAAANHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAExMjM0NTY3ODkwMTIzNDU2AAAAAA==</cenc:pssh>
|
||||
</ContentProtection>
|
||||
<Representation id="1" bandwidth="885590" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<Representation id="1" bandwidth="872586" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<BaseURL>bear-640x360-video.mp4</BaseURL>
|
||||
<SegmentBase indexRange="1091-1158" timescale="30000" presentationTimeOffset="62062">
|
||||
<Initialization range="0-1090"/>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<ContentProtection schemeIdUri="urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b">
|
||||
<cenc:pssh>AAAANHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAExMjM0NTY3ODkwMTIzNDU2AAAAAA==</cenc:pssh>
|
||||
</ContentProtection>
|
||||
<Representation id="0" bandwidth="886751" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<Representation id="0" bandwidth="977743" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<BaseURL>bear-640x360-video.mp4</BaseURL>
|
||||
<SegmentBase indexRange="955-1022" timescale="30000">
|
||||
<Initialization range="0-954"/>
|
||||
|
@ -19,7 +19,7 @@
|
|||
<ContentProtection schemeIdUri="urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b">
|
||||
<cenc:pssh>AAAANHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAExMjM0NTY3ODkwMTIzNDU2AAAAAA==</cenc:pssh>
|
||||
</ContentProtection>
|
||||
<Representation id="1" bandwidth="130109" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<Representation id="1" bandwidth="133585" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
||||
<BaseURL>bear-640x360-audio.mp4</BaseURL>
|
||||
<SegmentBase indexRange="889-956" timescale="44100">
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<ContentProtection schemeIdUri="urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b">
|
||||
<cenc:pssh>AAAANHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAExMjM0NTY3ODkwMTIzNDU2AAAAAA==</cenc:pssh>
|
||||
</ContentProtection>
|
||||
<Representation id="0" bandwidth="885438" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<Representation id="0" bandwidth="977743" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<BaseURL>bear-640x360-video.mp4</BaseURL>
|
||||
<SegmentBase indexRange="1039-1106" timescale="30000">
|
||||
<Initialization range="0-1038"/>
|
||||
|
@ -19,7 +19,7 @@
|
|||
<ContentProtection schemeIdUri="urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b">
|
||||
<cenc:pssh>AAAANHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAExMjM0NTY3ODkwMTIzNDU2AAAAAA==</cenc:pssh>
|
||||
</ContentProtection>
|
||||
<Representation id="1" bandwidth="129012" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<Representation id="1" bandwidth="133406" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
||||
<BaseURL>bear-640x360-audio.mp4</BaseURL>
|
||||
<SegmentBase indexRange="915-982" timescale="44100">
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
bandwidth: 129162
|
||||
bandwidth: 133406
|
||||
audio_info {
|
||||
codec: "mp4a.40.2"
|
||||
sampling_frequency: 44100
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
bandwidth: 885590
|
||||
bandwidth: 977743
|
||||
video_info {
|
||||
codec: "avc1.64001e"
|
||||
width: 640
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<ContentProtection schemeIdUri="urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b">
|
||||
<cenc:pssh>AAAANHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAExMjM0NTY3ODkwMTIzNDU2AAAAAA==</cenc:pssh>
|
||||
</ContentProtection>
|
||||
<Representation id="0" bandwidth="885590" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<Representation id="0" bandwidth="977743" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<BaseURL>bear-640x360-video.mp4</BaseURL>
|
||||
<SegmentBase indexRange="1091-1158" timescale="30000">
|
||||
<Initialization range="0-1090"/>
|
||||
|
@ -20,7 +20,7 @@
|
|||
<cenc:pssh>AAAANHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAExMjM0NTY3ODkwMTIzNDU2AAAAAA==</cenc:pssh>
|
||||
</ContentProtection>
|
||||
<EssentialProperty schemeIdUri="http://dashif.org/guidelines/trickmode" value="0"/>
|
||||
<Representation id="1" bandwidth="157348" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1" maxPlayoutRate="30" codingDependency="false">
|
||||
<Representation id="1" bandwidth="212297" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1" maxPlayoutRate="30" codingDependency="false">
|
||||
<BaseURL>bear-640x360-video-trick_play_factor_1.mp4</BaseURL>
|
||||
<SegmentBase indexRange="1091-1158" timescale="30000">
|
||||
<Initialization range="0-1090"/>
|
||||
|
@ -32,7 +32,7 @@
|
|||
<ContentProtection schemeIdUri="urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b">
|
||||
<cenc:pssh>AAAANHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAExMjM0NTY3ODkwMTIzNDU2AAAAAA==</cenc:pssh>
|
||||
</ContentProtection>
|
||||
<Representation id="2" bandwidth="129162" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<Representation id="2" bandwidth="133406" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
||||
<BaseURL>bear-640x360-audio.mp4</BaseURL>
|
||||
<SegmentBase indexRange="967-1034" timescale="44100">
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<ContentProtection schemeIdUri="urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b">
|
||||
<cenc:pssh>AAAANHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAExMjM0NTY3ODkwMTIzNDU2AAAAAA==</cenc:pssh>
|
||||
</ContentProtection>
|
||||
<Representation id="0" bandwidth="885590" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<Representation id="0" bandwidth="977743" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<BaseURL>bear-640x360-video.mp4</BaseURL>
|
||||
<SegmentBase indexRange="1091-1158" timescale="30000">
|
||||
<Initialization range="0-1090"/>
|
||||
|
@ -20,13 +20,13 @@
|
|||
<cenc:pssh>AAAANHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAExMjM0NTY3ODkwMTIzNDU2AAAAAA==</cenc:pssh>
|
||||
</ContentProtection>
|
||||
<EssentialProperty schemeIdUri="http://dashif.org/guidelines/trickmode" value="0"/>
|
||||
<Representation id="1" bandwidth="104852" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1" frameRate="30000/60060" maxPlayoutRate="60" codingDependency="false">
|
||||
<Representation id="1" bandwidth="212297" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1" frameRate="30000/60060" maxPlayoutRate="60" codingDependency="false">
|
||||
<BaseURL>bear-640x360-video-trick_play_factor_2.mp4</BaseURL>
|
||||
<SegmentBase indexRange="1091-1146" timescale="30000">
|
||||
<Initialization range="0-1090"/>
|
||||
</SegmentBase>
|
||||
</Representation>
|
||||
<Representation id="2" bandwidth="157348" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1" frameRate="30000/30030" maxPlayoutRate="30" codingDependency="false">
|
||||
<Representation id="2" bandwidth="212297" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1" frameRate="30000/30030" maxPlayoutRate="30" codingDependency="false">
|
||||
<BaseURL>bear-640x360-video-trick_play_factor_1.mp4</BaseURL>
|
||||
<SegmentBase indexRange="1091-1158" timescale="30000">
|
||||
<Initialization range="0-1090"/>
|
||||
|
@ -38,7 +38,7 @@
|
|||
<ContentProtection schemeIdUri="urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b">
|
||||
<cenc:pssh>AAAANHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAExMjM0NTY3ODkwMTIzNDU2AAAAAA==</cenc:pssh>
|
||||
</ContentProtection>
|
||||
<Representation id="3" bandwidth="129162" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<Representation id="3" bandwidth="133406" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
||||
<BaseURL>bear-640x360-audio.mp4</BaseURL>
|
||||
<SegmentBase indexRange="967-1034" timescale="44100">
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<ContentProtection schemeIdUri="urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b">
|
||||
<cenc:pssh>AAAANHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAExMjM0NTY3ODkwMTIzNDU2AAAAAA==</cenc:pssh>
|
||||
</ContentProtection>
|
||||
<Representation id="0" bandwidth="885590" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<Representation id="0" bandwidth="977743" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<BaseURL>bear-640x360-video.mp4</BaseURL>
|
||||
<SegmentBase indexRange="1091-1158" timescale="30000">
|
||||
<Initialization range="0-1090"/>
|
||||
|
@ -19,7 +19,7 @@
|
|||
<ContentProtection schemeIdUri="urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b">
|
||||
<cenc:pssh>AAAANHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAExMjM0NTY3ODkwMTIzNDU2AAAAAA==</cenc:pssh>
|
||||
</ContentProtection>
|
||||
<Representation id="1" bandwidth="129162" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<Representation id="1" bandwidth="133406" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
||||
<BaseURL>bear-640x360-audio.mp4</BaseURL>
|
||||
<SegmentBase indexRange="967-1034" timescale="44100">
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<ContentProtection schemeIdUri="urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b">
|
||||
<cenc:pssh>AAAANHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAExMjM0NTY3ODkwMTIzNDU2AAAAAA==</cenc:pssh>
|
||||
</ContentProtection>
|
||||
<Representation id="0" bandwidth="885590" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<Representation id="0" bandwidth="977743" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<BaseURL>bear-640x360-video.mp4</BaseURL>
|
||||
<SegmentBase indexRange="1091-1158" timescale="30000">
|
||||
<Initialization range="0-1090"/>
|
||||
|
@ -19,7 +19,7 @@
|
|||
<ContentProtection schemeIdUri="urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b">
|
||||
<cenc:pssh>AAAANHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAExMjM0NTY3ODkwMTIzNDU2AAAAAA==</cenc:pssh>
|
||||
</ContentProtection>
|
||||
<Representation id="1" bandwidth="129162" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<Representation id="1" bandwidth="133406" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
||||
<BaseURL>bear-640x360-audio.mp4</BaseURL>
|
||||
<SegmentBase indexRange="967-1034" timescale="44100">
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<ContentProtection schemeIdUri="urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b">
|
||||
<cenc:pssh>AAAARHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAIQERITFBUWFxgZICEiIyQlICEiIyQlJicoKTAxMjM0NQAAAAA=</cenc:pssh>
|
||||
</ContentProtection>
|
||||
<Representation id="0" bandwidth="885637" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<Representation id="0" bandwidth="977743" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<BaseURL>bear-640x360-video.mp4</BaseURL>
|
||||
<SegmentBase indexRange="1107-1174" timescale="30000">
|
||||
<Initialization range="0-1106"/>
|
||||
|
@ -19,7 +19,7 @@
|
|||
<ContentProtection schemeIdUri="urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b">
|
||||
<cenc:pssh>AAAARHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAIQERITFBUWFxgZICEiIyQlICEiIyQlJicoKTAxMjM0NQAAAAA=</cenc:pssh>
|
||||
</ContentProtection>
|
||||
<Representation id="1" bandwidth="129208" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<Representation id="1" bandwidth="133406" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
||||
<BaseURL>bear-640x360-audio.mp4</BaseURL>
|
||||
<SegmentBase indexRange="983-1050" timescale="44100">
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<ContentProtection schemeIdUri="urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b">
|
||||
<cenc:pssh>AAAARHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAIQERITFBUWFxgZICEiIyQlICEiIyQlJicoKTAxMjM0NQAAAAA=</cenc:pssh>
|
||||
</ContentProtection>
|
||||
<Representation id="0" bandwidth="885637" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<Representation id="0" bandwidth="977743" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<BaseURL>bear-640x360-video.mp4</BaseURL>
|
||||
<SegmentBase indexRange="1107-1174" timescale="30000">
|
||||
<Initialization range="0-1106"/>
|
||||
|
@ -19,7 +19,7 @@
|
|||
<ContentProtection schemeIdUri="urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b">
|
||||
<cenc:pssh>AAAARHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAIQERITFBUWFxgZICEiIyQlICEiIyQlJicoKTAxMjM0NQAAAAA=</cenc:pssh>
|
||||
</ContentProtection>
|
||||
<Representation id="1" bandwidth="129208" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<Representation id="1" bandwidth="133406" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
||||
<BaseURL>bear-640x360-audio.mp4</BaseURL>
|
||||
<SegmentBase indexRange="983-1050" timescale="44100">
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<ContentProtection schemeIdUri="urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b">
|
||||
<cenc:pssh>AAAANHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAExMjM0NTY3ODkwMTIzNDU2AAAAAA==</cenc:pssh>
|
||||
</ContentProtection>
|
||||
<Representation id="0" bandwidth="885590" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<Representation id="0" bandwidth="977743" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<BaseURL>bear-640x360-video.mp4</BaseURL>
|
||||
<SegmentBase indexRange="1091-1158" timescale="30000">
|
||||
<Initialization range="0-1090"/>
|
||||
|
@ -15,7 +15,7 @@
|
|||
</Representation>
|
||||
</AdaptationSet>
|
||||
<AdaptationSet id="1" contentType="audio" subsegmentAlignment="true">
|
||||
<Representation id="1" bandwidth="126510" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<Representation id="1" bandwidth="130413" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
||||
<BaseURL>bear-640x360-audio-skip_encryption.mp4</BaseURL>
|
||||
<SegmentBase indexRange="757-824" timescale="44100">
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<ContentProtection schemeIdUri="urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b">
|
||||
<cenc:pssh>AAAANHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAExMjM0NTY3ODkwMTIzNDU2AAAAAA==</cenc:pssh>
|
||||
</ContentProtection>
|
||||
<Representation id="0" bandwidth="885590" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<Representation id="0" bandwidth="977743" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<BaseURL>bear-640x360-video.mp4</BaseURL>
|
||||
<SegmentBase indexRange="1091-1158" timescale="30000">
|
||||
<Initialization range="0-1090"/>
|
||||
|
@ -19,7 +19,7 @@
|
|||
<ContentProtection schemeIdUri="urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b">
|
||||
<cenc:pssh>AAAANHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAExMjM0NTY3ODkwMTIzNDU2AAAAAA==</cenc:pssh>
|
||||
</ContentProtection>
|
||||
<Representation id="1" bandwidth="129162" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<Representation id="1" bandwidth="133406" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
||||
<BaseURL>bear-640x360-audio.mp4</BaseURL>
|
||||
<SegmentBase indexRange="967-1034" timescale="44100">
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<ContentProtection schemeIdUri="urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b">
|
||||
<cenc:pssh>AAAANHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAExMjM0NTY3ODkwMTIzNDU2AAAAAA==</cenc:pssh>
|
||||
</ContentProtection>
|
||||
<Representation id="0" bandwidth="885590" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<Representation id="0" bandwidth="977743" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<BaseURL>bear-640x360-video.mp4</BaseURL>
|
||||
<SegmentBase indexRange="1091-1158" timescale="30000">
|
||||
<Initialization range="0-1090"/>
|
||||
|
@ -19,7 +19,7 @@
|
|||
<ContentProtection schemeIdUri="urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b">
|
||||
<cenc:pssh>AAAANHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAExMjM0NTY3ODkwMTIzNDU2AAAAAA==</cenc:pssh>
|
||||
</ContentProtection>
|
||||
<Representation id="1" bandwidth="129162" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<Representation id="1" bandwidth="133406" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
||||
<BaseURL>bear-640x360-audio.mp4</BaseURL>
|
||||
<SegmentBase indexRange="967-1034" timescale="44100">
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" minBufferTime="PT2S" type="static" mediaPresentationDuration="PT2.802799940109253S">
|
||||
<Period id="0">
|
||||
<AdaptationSet id="0" contentType="video" width="640" height="360" frameRate="30000/1001" subsegmentAlignment="true" par="16:9">
|
||||
<Representation id="0" bandwidth="882064" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<Representation id="0" bandwidth="973483" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<BaseURL>bear-640x360-0.mp4</BaseURL>
|
||||
<SegmentBase indexRange="823-890" timescale="30000">
|
||||
<Initialization range="0-822"/>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<ContentProtection schemeIdUri="urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b">
|
||||
<cenc:pssh>AAAANHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAExMjM0NTY3ODkwMTIzNDU2AAAAAA==</cenc:pssh>
|
||||
</ContentProtection>
|
||||
<Representation id="0" bandwidth="264881" codecs="hev1.1.6.L63.90" mimeType="video/mp4" sar="1:1">
|
||||
<Representation id="0" bandwidth="281671" codecs="hev1.1.6.L63.90" mimeType="video/mp4" sar="1:1">
|
||||
<BaseURL>bear-640x360-hevc-video.mp4</BaseURL>
|
||||
<SegmentBase indexRange="3175-3242" timescale="30000">
|
||||
<Initialization range="0-3174"/>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<ContentProtection schemeIdUri="urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b">
|
||||
<cenc:pssh>AAAANHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAExMjM0NTY3ODkwMTIzNDU2AAAAAA==</cenc:pssh>
|
||||
</ContentProtection>
|
||||
<Representation id="0" bandwidth="81568" codecs="opus" mimeType="audio/mp4" audioSamplingRate="48000">
|
||||
<Representation id="0" bandwidth="86874" codecs="opus" mimeType="audio/mp4" audioSamplingRate="48000">
|
||||
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
||||
<BaseURL>bear-320x240-vp9-opus-audio.mp4</BaseURL>
|
||||
<SegmentBase indexRange="975-1042" timescale="1000000" presentationTimeOffset="37000">
|
||||
|
@ -20,7 +20,7 @@
|
|||
<ContentProtection schemeIdUri="urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b">
|
||||
<cenc:pssh>AAAANHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAExMjM0NTY3ODkwMTIzNDU2AAAAAA==</cenc:pssh>
|
||||
</ContentProtection>
|
||||
<Representation id="1" bandwidth="210205" codecs="vp09.00.10.08.01.02.02.02.00" mimeType="video/mp4" sar="427:320">
|
||||
<Representation id="1" bandwidth="231745" codecs="vp09.00.10.08.01.02.02.02.00" mimeType="video/mp4" sar="427:320">
|
||||
<BaseURL>bear-320x240-vp9-opus-video.mp4</BaseURL>
|
||||
<SegmentBase indexRange="1063-1130" timescale="1000000" presentationTimeOffset="37000">
|
||||
<Initialization range="0-1062"/>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
</Representation>
|
||||
</AdaptationSet>
|
||||
<AdaptationSet id="1" contentType="video" width="640" height="360" frameRate="30000/1001" subsegmentAlignment="true" par="16:9">
|
||||
<Representation id="1" bandwidth="882064" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<Representation id="1" bandwidth="973483" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1">
|
||||
<BaseURL>bear-640x360-video.mp4</BaseURL>
|
||||
<SegmentBase indexRange="823-890" timescale="30000">
|
||||
<Initialization range="0-822"/>
|
||||
|
@ -16,7 +16,7 @@
|
|||
</Representation>
|
||||
</AdaptationSet>
|
||||
<AdaptationSet id="2" contentType="audio" subsegmentAlignment="true">
|
||||
<Representation id="2" bandwidth="126510" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<Representation id="2" bandwidth="130413" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
||||
<BaseURL>bear-640x360-audio.mp4</BaseURL>
|
||||
<SegmentBase indexRange="757-824" timescale="44100">
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" minBufferTime="PT2S" type="static" mediaPresentationDuration="PT2.7679998874664307S">
|
||||
<Period id="0">
|
||||
<AdaptationSet id="0" contentType="audio" subsegmentAlignment="true">
|
||||
<Representation id="0" bandwidth="69362" codecs="vorbis" mimeType="audio/webm" audioSamplingRate="44100">
|
||||
<Representation id="0" bandwidth="59463" codecs="vorbis" mimeType="audio/webm" audioSamplingRate="44100">
|
||||
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
||||
<BaseURL>bear-320x240-audio-only-audio.webm</BaseURL>
|
||||
<SegmentBase indexRange="4159-4207" timescale="1000000">
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<ContentProtection schemeIdUri="urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b">
|
||||
<cenc:pssh>AAAANHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAExMjM0NTY3ODkwMTIzNDU2AAAAAA==</cenc:pssh>
|
||||
</ContentProtection>
|
||||
<Representation id="0" bandwidth="341018" codecs="vp08.00.10.08.01.02.02.02.00" mimeType="video/mp4" sar="1:1">
|
||||
<Representation id="0" bandwidth="474142" codecs="vp08.00.10.08.01.02.02.02.00" mimeType="video/mp4" sar="1:1">
|
||||
<BaseURL>bear-640x360-video.mp4</BaseURL>
|
||||
<SegmentBase indexRange="1031-1098" timescale="1000000" presentationTimeOffset="26000">
|
||||
<Initialization range="0-1030"/>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" minBufferTime="PT2S" type="static" mediaPresentationDuration="PT2.7360000610351562S">
|
||||
<Period id="0">
|
||||
<AdaptationSet id="0" contentType="video" width="640" height="360" frameRate="1000000/33000" subsegmentAlignment="true" par="16:9">
|
||||
<Representation id="0" bandwidth="335457" codecs="vp8" mimeType="video/webm" sar="1:1">
|
||||
<Representation id="0" bandwidth="472384" codecs="vp8" mimeType="video/webm" sar="1:1">
|
||||
<BaseURL>bear-640x360-video.webm</BaseURL>
|
||||
<SegmentBase indexRange="289-338" timescale="1000000" presentationTimeOffset="26000">
|
||||
<Initialization range="0-288"/>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" minBufferTime="PT2S" type="static" mediaPresentationDuration="PT2.7360000610351562S">
|
||||
<Period id="0">
|
||||
<AdaptationSet id="0" contentType="video" width="320" height="240" frameRate="1000000/33000" subsegmentAlignment="true" par="4:3">
|
||||
<Representation id="0" bandwidth="196977" codecs="vp9" mimeType="video/webm" sar="1:1">
|
||||
<Representation id="0" bandwidth="196039" codecs="vp9" mimeType="video/webm" sar="1:1">
|
||||
<BaseURL>bear-vp9-blockgroup-video.webm</BaseURL>
|
||||
<SegmentBase indexRange="302-320" timescale="1000000">
|
||||
<Initialization range="0-301"/>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" minBufferTime="PT2S" type="static" mediaPresentationDuration="PT2.7360000610351562S">
|
||||
<Period id="0">
|
||||
<AdaptationSet id="0" contentType="audio" subsegmentAlignment="true">
|
||||
<Representation id="0" bandwidth="76531" codecs="opus" mimeType="audio/webm" audioSamplingRate="48000">
|
||||
<Representation id="0" bandwidth="81650" codecs="opus" mimeType="audio/webm" audioSamplingRate="48000">
|
||||
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
||||
<BaseURL>bear-320x240-vp9-opus-audio.webm</BaseURL>
|
||||
<SegmentBase indexRange="323-371" timescale="1000000" presentationTimeOffset="37000">
|
||||
|
@ -12,7 +12,7 @@
|
|||
</Representation>
|
||||
</AdaptationSet>
|
||||
<AdaptationSet id="1" contentType="video" width="320" height="240" frameRate="1000000/34000" subsegmentAlignment="true" par="16:9">
|
||||
<Representation id="1" bandwidth="203360" codecs="vp9" mimeType="video/webm" sar="427:320">
|
||||
<Representation id="1" bandwidth="225727" codecs="vp9" mimeType="video/webm" sar="427:320">
|
||||
<BaseURL>bear-320x240-vp9-opus-video.webm</BaseURL>
|
||||
<SegmentBase indexRange="302-350" timescale="1000000" presentationTimeOffset="37000">
|
||||
<Initialization range="0-301"/>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
<ContentProtection schemeIdUri="urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b" cenc:default_KID="31323334-3536-3738-3930-313233343536">
|
||||
<cenc:pssh>AAAANHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAExMjM0NTY3ODkwMTIzNDU2AAAAAA==</cenc:pssh>
|
||||
</ContentProtection>
|
||||
<Representation id="0" bandwidth="185084" codecs="vp9" mimeType="video/webm" sar="1:1">
|
||||
<Representation id="0" bandwidth="184009" codecs="vp9" mimeType="video/webm" sar="1:1">
|
||||
<BaseURL>bear-320x180-vp9-altref-video.webm</BaseURL>
|
||||
<SegmentBase indexRange="353-371" timescale="1000000">
|
||||
<Initialization range="0-352"/>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
<ContentProtection schemeIdUri="urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b" cenc:default_KID="31323334-3536-3738-3930-313233343536">
|
||||
<cenc:pssh>AAAANHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAExMjM0NTY3ODkwMTIzNDU2AAAAAA==</cenc:pssh>
|
||||
</ContentProtection>
|
||||
<Representation id="0" bandwidth="185084" codecs="vp9" mimeType="video/webm" sar="1:1">
|
||||
<Representation id="0" bandwidth="184009" codecs="vp9" mimeType="video/webm" sar="1:1">
|
||||
<BaseURL>bear-320x180-vp9-altref-video.webm</BaseURL>
|
||||
<SegmentBase indexRange="353-371" timescale="1000000">
|
||||
<Initialization range="0-352"/>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
<ContentProtection schemeIdUri="urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b" cenc:default_KID="31323334-3536-3738-3930-313233343536">
|
||||
<cenc:pssh>AAAANHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAExMjM0NTY3ODkwMTIzNDU2AAAAAA==</cenc:pssh>
|
||||
</ContentProtection>
|
||||
<Representation id="0" bandwidth="337062" codecs="vp8" mimeType="video/webm" sar="1:1">
|
||||
<Representation id="0" bandwidth="472624" codecs="vp8" mimeType="video/webm" sar="1:1">
|
||||
<BaseURL>bear-640x360-video.webm</BaseURL>
|
||||
<SegmentBase indexRange="340-389" timescale="1000000" presentationTimeOffset="26000">
|
||||
<Initialization range="0-339"/>
|
||||
|
|
|
@ -3,13 +3,13 @@
|
|||
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" minBufferTime="PT2S" type="static" mediaPresentationDuration="PT2.802799940109253S">
|
||||
<Period id="0">
|
||||
<AdaptationSet id="0" contentType="video" maxWidth="640" maxHeight="360" frameRate="90000/3003" subsegmentAlignment="true" par="16:9">
|
||||
<Representation id="0" bandwidth="354240" codecs="avc3.64000d" mimeType="video/mp4" sar="1:1" width="320" height="180">
|
||||
<Representation id="0" bandwidth="378998" codecs="avc3.64000d" mimeType="video/mp4" sar="1:1" width="320" height="180">
|
||||
<BaseURL>bear-multi-configs-0.mp4</BaseURL>
|
||||
<SegmentBase indexRange="818-885" timescale="90000" presentationTimeOffset="18000">
|
||||
<Initialization range="0-817"/>
|
||||
</SegmentBase>
|
||||
</Representation>
|
||||
<Representation id="2" bandwidth="888442" codecs="avc3.64001e" mimeType="video/mp4" sar="1:1" width="640" height="360">
|
||||
<Representation id="2" bandwidth="973795" codecs="avc3.64001e" mimeType="video/mp4" sar="1:1" width="640" height="360">
|
||||
<BaseURL>bear-multi-configs-2.mp4</BaseURL>
|
||||
<SegmentBase indexRange="819-886" timescale="90000" presentationTimeOffset="18000">
|
||||
<Initialization range="0-818"/>
|
||||
|
@ -17,14 +17,14 @@
|
|||
</Representation>
|
||||
</AdaptationSet>
|
||||
<AdaptationSet id="1" contentType="audio" subsegmentAlignment="true">
|
||||
<Representation id="1" bandwidth="132362" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<Representation id="1" bandwidth="131925" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
||||
<BaseURL>bear-multi-configs-1.mp4</BaseURL>
|
||||
<SegmentBase indexRange="757-824" timescale="90000" presentationTimeOffset="18000">
|
||||
<Initialization range="0-756"/>
|
||||
</SegmentBase>
|
||||
</Representation>
|
||||
<Representation id="3" bandwidth="136806" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<Representation id="3" bandwidth="138922" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
||||
<BaseURL>bear-multi-configs-3.mp4</BaseURL>
|
||||
<SegmentBase indexRange="757-824" timescale="90000" presentationTimeOffset="18000">
|
||||
|
|
|
@ -3,13 +3,13 @@
|
|||
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" minBufferTime="PT2S" type="static" mediaPresentationDuration="PT2.802799940109253S">
|
||||
<Period id="0">
|
||||
<AdaptationSet id="0" contentType="video" maxWidth="640" maxHeight="360" frameRate="90000/3003" subsegmentAlignment="true" par="16:9">
|
||||
<Representation id="0" bandwidth="353919" codecs="avc1.64000d" mimeType="video/mp4" sar="1:1" width="320" height="180">
|
||||
<Representation id="0" bandwidth="378694" codecs="avc1.64000d" mimeType="video/mp4" sar="1:1" width="320" height="180">
|
||||
<BaseURL>bear-multi-configs-0.mp4</BaseURL>
|
||||
<SegmentBase indexRange="822-889" timescale="90000" presentationTimeOffset="18000">
|
||||
<Initialization range="0-821"/>
|
||||
</SegmentBase>
|
||||
</Representation>
|
||||
<Representation id="2" bandwidth="888108" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1" width="640" height="360">
|
||||
<Representation id="2" bandwidth="973483" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1" width="640" height="360">
|
||||
<BaseURL>bear-multi-configs-2.mp4</BaseURL>
|
||||
<SegmentBase indexRange="823-890" timescale="90000" presentationTimeOffset="18000">
|
||||
<Initialization range="0-822"/>
|
||||
|
@ -17,14 +17,14 @@
|
|||
</Representation>
|
||||
</AdaptationSet>
|
||||
<AdaptationSet id="1" contentType="audio" subsegmentAlignment="true">
|
||||
<Representation id="1" bandwidth="132362" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<Representation id="1" bandwidth="131925" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
||||
<BaseURL>bear-multi-configs-1.mp4</BaseURL>
|
||||
<SegmentBase indexRange="757-824" timescale="90000" presentationTimeOffset="18000">
|
||||
<Initialization range="0-756"/>
|
||||
</SegmentBase>
|
||||
</Representation>
|
||||
<Representation id="3" bandwidth="136806" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<Representation id="3" bandwidth="138922" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
||||
<BaseURL>bear-multi-configs-3.mp4</BaseURL>
|
||||
<SegmentBase indexRange="757-824" timescale="90000" presentationTimeOffset="18000">
|
||||
|
|
|
@ -192,7 +192,6 @@ TEST_F(MpdNotifyMuxerListenerTest, VodOnSampleDurationReady) {
|
|||
CreateVideoStreamInfo(video_params);
|
||||
const uint32_t kSampleDuration = 1234u;
|
||||
const char kExpectedMediaInfo[] =
|
||||
"bandwidth: 7620\n"
|
||||
"video_info {\n"
|
||||
" frame_duration: 1234\n" // Should match the constant above.
|
||||
" codec: 'avc1.010101'\n"
|
||||
|
|
|
@ -25,17 +25,6 @@ namespace internal {
|
|||
|
||||
namespace {
|
||||
|
||||
// This will return a positive value, given that |file_size| and
|
||||
// |duration_seconds| are positive.
|
||||
uint32_t EstimateRequiredBandwidth(uint64_t file_size, float duration_seconds) {
|
||||
const uint64_t file_size_bits = file_size * 8;
|
||||
const float bits_per_second = file_size_bits / duration_seconds;
|
||||
|
||||
// Note that casting |bits_per_second| to an integer might make it 0. Take the
|
||||
// ceiling and make sure that it returns a positive value.
|
||||
return static_cast<uint32_t>(ceil(bits_per_second));
|
||||
}
|
||||
|
||||
// TODO(rkuroiwa): There is shaka::Range in MediaInfo proto and
|
||||
// shaka::media::Range in media/base. Find better names.
|
||||
void SetRange(uint64_t begin, uint64_t end, shaka::Range* range) {
|
||||
|
@ -207,21 +196,6 @@ bool SetVodInformation(const MuxerListener::MediaRanges& media_ranges,
|
|||
|
||||
media_info->set_media_duration_seconds(duration_seconds);
|
||||
|
||||
if (!media_info->has_bandwidth()) {
|
||||
// Calculate file size from media_ranges.
|
||||
uint64_t file_size = 0;
|
||||
if (media_ranges.init_range)
|
||||
file_size = std::max(file_size, media_ranges.init_range->end + 1);
|
||||
if (media_ranges.index_range)
|
||||
file_size = std::max(file_size, media_ranges.index_range->end + 1);
|
||||
if (!media_ranges.subsegment_ranges.empty()) {
|
||||
file_size =
|
||||
std::max(file_size, media_ranges.subsegment_ranges.back().end + 1);
|
||||
}
|
||||
|
||||
media_info->set_bandwidth(
|
||||
EstimateRequiredBandwidth(file_size, duration_seconds));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -28,7 +28,6 @@ const char kExpectedDefaultPsshBox[] =
|
|||
"\\000\\000\\000$pssh\\000\\000\\000\\000\\000\\001\\002\\003\\004\\005"
|
||||
"\\006\\007\\010\\t\\n\\013\\014\\r\\016\\017\\000\\000\\000\\004pssh";
|
||||
const char kExpectedDefaultMediaInfo[] =
|
||||
"bandwidth: 7620\n"
|
||||
"video_info {\n"
|
||||
" codec: 'avc1.010101'\n"
|
||||
" width: 720\n"
|
||||
|
@ -72,6 +71,13 @@ struct VideoStreamInfoParameters {
|
|||
bool is_encrypted;
|
||||
};
|
||||
|
||||
struct OnNewSegmentParameters {
|
||||
std::string file_name;
|
||||
uint64_t start_time;
|
||||
uint64_t duration;
|
||||
uint64_t segment_file_size;
|
||||
};
|
||||
|
||||
// Note that this does not have vector of StreamInfo pointer.
|
||||
struct OnMediaEndParameters {
|
||||
MuxerListener::MediaRanges media_ranges;
|
||||
|
|
|
@ -8,6 +8,8 @@
|
|||
|
||||
#include <google/protobuf/text_format.h>
|
||||
|
||||
#include <cmath>
|
||||
|
||||
#include "packager/base/logging.h"
|
||||
#include "packager/file/file.h"
|
||||
#include "packager/media/base/muxer_options.h"
|
||||
|
@ -21,7 +23,7 @@ namespace media {
|
|||
|
||||
VodMediaInfoDumpMuxerListener::VodMediaInfoDumpMuxerListener(
|
||||
const std::string& output_file_path)
|
||||
: output_file_name_(output_file_path), is_encrypted_(false) {}
|
||||
: output_file_name_(output_file_path) {}
|
||||
|
||||
VodMediaInfoDumpMuxerListener::~VodMediaInfoDumpMuxerListener() {}
|
||||
|
||||
|
@ -80,13 +82,23 @@ void VodMediaInfoDumpMuxerListener::OnMediaEnd(const MediaRanges& media_ranges,
|
|||
LOG(ERROR) << "Failed to generate VOD information from input.";
|
||||
return;
|
||||
}
|
||||
if (!media_info_->has_bandwidth())
|
||||
media_info_->set_bandwidth(max_bitrate_);
|
||||
WriteMediaInfoToFile(*media_info_, output_file_name_);
|
||||
}
|
||||
|
||||
void VodMediaInfoDumpMuxerListener::OnNewSegment(const std::string& file_name,
|
||||
uint64_t start_time,
|
||||
uint64_t duration,
|
||||
uint64_t segment_file_size) {}
|
||||
uint64_t segment_file_size) {
|
||||
const double segment_duration_seconds =
|
||||
static_cast<double>(duration) / media_info_->reference_time_scale();
|
||||
|
||||
const int kBitsInByte = 8;
|
||||
const uint64_t bitrate =
|
||||
ceil(kBitsInByte * segment_file_size / segment_duration_seconds);
|
||||
max_bitrate_ = std::max(max_bitrate_, bitrate);
|
||||
}
|
||||
|
||||
void VodMediaInfoDumpMuxerListener::OnKeyFrame(uint64_t timestamp,
|
||||
uint64_t start_byte_offset,
|
||||
|
|
|
@ -68,8 +68,9 @@ class VodMediaInfoDumpMuxerListener : public MuxerListener {
|
|||
private:
|
||||
std::string output_file_name_;
|
||||
std::unique_ptr<MediaInfo> media_info_;
|
||||
uint64_t max_bitrate_ = 0;
|
||||
|
||||
bool is_encrypted_;
|
||||
bool is_encrypted_ = false;
|
||||
// Storage for values passed to OnEncryptionInfoReady().
|
||||
FourCC protection_scheme_;
|
||||
std::vector<uint8_t> default_key_id_;
|
||||
|
|
|
@ -93,6 +93,11 @@ class VodMediaInfoDumpMuxerListenerTest : public ::testing::Test {
|
|||
MuxerListener::kContainerMp4);
|
||||
}
|
||||
|
||||
void FireOnNewSegmentWithParams(const OnNewSegmentParameters& params) {
|
||||
listener_->OnNewSegment(params.file_name, params.start_time,
|
||||
params.duration, params.segment_file_size);
|
||||
}
|
||||
|
||||
void FireOnMediaEndWithParams(const OnMediaEndParameters& params) {
|
||||
// On success, this writes the result to |temp_file_path_|.
|
||||
listener_->OnMediaEnd(params.media_ranges, params.duration_seconds);
|
||||
|
@ -125,7 +130,7 @@ TEST_F(VodMediaInfoDumpMuxerListenerTest, UnencryptedStream_Normal) {
|
|||
FireOnMediaEndWithParams(media_end_param);
|
||||
|
||||
const char kExpectedProtobufOutput[] =
|
||||
"bandwidth: 7620\n"
|
||||
"bandwidth: 0\n"
|
||||
"video_info {\n"
|
||||
" codec: 'avc1.010101'\n"
|
||||
" width: 720\n"
|
||||
|
@ -157,7 +162,7 @@ TEST_F(VodMediaInfoDumpMuxerListenerTest, EncryptedStream_Normal) {
|
|||
FireOnMediaEndWithParams(media_end_param);
|
||||
|
||||
const std::string kExpectedProtobufOutput =
|
||||
"bandwidth: 7620\n"
|
||||
"bandwidth: 0\n"
|
||||
"video_info {\n"
|
||||
" codec: 'avc1.010101'\n"
|
||||
" width: 720\n"
|
||||
|
@ -181,7 +186,9 @@ TEST_F(VodMediaInfoDumpMuxerListenerTest, EncryptedStream_Normal) {
|
|||
"protected_content {\n"
|
||||
" content_protection_entry {\n"
|
||||
" uuid: '00010203-0405-0607-0809-0a0b0c0d0e0f'\n"
|
||||
" pssh: '" + std::string(kExpectedDefaultPsshBox) + "'\n"
|
||||
" pssh: '" +
|
||||
std::string(kExpectedDefaultPsshBox) +
|
||||
"'\n"
|
||||
" }\n"
|
||||
" default_key_id: '_default_key_id_'\n"
|
||||
" protection_scheme: 'cenc'\n"
|
||||
|
@ -203,7 +210,7 @@ TEST_F(VodMediaInfoDumpMuxerListenerTest, CheckPixelWidthAndHeightSet) {
|
|||
FireOnMediaEndWithParams(media_end_param);
|
||||
|
||||
const char kExpectedProtobufOutput[] =
|
||||
"bandwidth: 7620\n"
|
||||
"bandwidth: 0\n"
|
||||
"video_info {\n"
|
||||
" codec: 'avc1.010101'\n"
|
||||
" width: 720\n"
|
||||
|
@ -227,5 +234,46 @@ TEST_F(VodMediaInfoDumpMuxerListenerTest, CheckPixelWidthAndHeightSet) {
|
|||
ASSERT_NO_FATAL_FAILURE(ExpectTempFileToEqual(kExpectedProtobufOutput));
|
||||
}
|
||||
|
||||
TEST_F(VodMediaInfoDumpMuxerListenerTest, CheckBandwidth) {
|
||||
VideoStreamInfoParameters params = GetDefaultVideoStreamInfoParams();
|
||||
|
||||
std::shared_ptr<StreamInfo> stream_info = CreateVideoStreamInfo(params);
|
||||
FireOnMediaStartWithDefaultMuxerOptions(*stream_info, !kEnableEncryption);
|
||||
|
||||
OnNewSegmentParameters new_segment_param;
|
||||
new_segment_param.segment_file_size = 100;
|
||||
new_segment_param.duration = 1000;
|
||||
FireOnNewSegmentWithParams(new_segment_param);
|
||||
new_segment_param.segment_file_size = 200;
|
||||
FireOnNewSegmentWithParams(new_segment_param);
|
||||
|
||||
OnMediaEndParameters media_end_param = GetDefaultOnMediaEndParams();
|
||||
FireOnMediaEndWithParams(media_end_param);
|
||||
|
||||
const char kExpectedProtobufOutput[] =
|
||||
"bandwidth: 1600\n"
|
||||
"video_info {\n"
|
||||
" codec: 'avc1.010101'\n"
|
||||
" width: 720\n"
|
||||
" height: 480\n"
|
||||
" time_scale: 10\n"
|
||||
" pixel_width: 1\n"
|
||||
" pixel_height: 1\n"
|
||||
"}\n"
|
||||
"init_range {\n"
|
||||
" begin: 0\n"
|
||||
" end: 120\n"
|
||||
"}\n"
|
||||
"index_range {\n"
|
||||
" begin: 121\n"
|
||||
" end: 221\n"
|
||||
"}\n"
|
||||
"reference_time_scale: 1000\n"
|
||||
"container_type: 1\n"
|
||||
"media_file_name: 'test_output_file_name.mp4'\n"
|
||||
"media_duration_seconds: 10.5\n";
|
||||
ASSERT_NO_FATAL_FAILURE(ExpectTempFileToEqual(kExpectedProtobufOutput));
|
||||
}
|
||||
|
||||
} // namespace media
|
||||
} // namespace shaka
|
||||
|
|
|
@ -160,17 +160,6 @@ TEST_F(OnDemandMpdBuilderTest, VideoAndAudio) {
|
|||
EXPECT_NO_FATAL_FAILURE(CheckMpd(kFileNameExpectedMpdOutputAudio1AndVideo1));
|
||||
}
|
||||
|
||||
// Static profile requires bandwidth to be set because it has no other way to
|
||||
// get the bandwidth for the Representation.
|
||||
TEST_F(OnDemandMpdBuilderTest, MediaInfoMissingBandwidth) {
|
||||
MediaInfo video_media_info = GetTestMediaInfo(kFileNameVideoMediaInfo1);
|
||||
video_media_info.clear_bandwidth();
|
||||
AddRepresentation(video_media_info);
|
||||
|
||||
std::string mpd_doc;
|
||||
ASSERT_FALSE(mpd_.ToString(&mpd_doc));
|
||||
}
|
||||
|
||||
TEST_F(OnDemandMpdBuilderTest, CheckXmlTest) {
|
||||
const double kPeriod1StartTimeSeconds = 0.0;
|
||||
|
||||
|
|
|
@ -341,16 +341,6 @@ bool Representation::HasRequiredMediaInfoFields() const {
|
|||
return false;
|
||||
}
|
||||
|
||||
if (HasVODOnlyFields(media_info_) && !media_info_.has_bandwidth()) {
|
||||
LOG(ERROR) << "Missing 'bandwidth' field. MediaInfo requires bandwidth for "
|
||||
"static profile for generating a valid MPD.";
|
||||
return false;
|
||||
}
|
||||
|
||||
VLOG_IF(3, HasLiveOnlyFields(media_info_) && !media_info_.has_bandwidth())
|
||||
<< "MediaInfo missing field 'bandwidth'. Using estimated from "
|
||||
"segment size.";
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue