当前位置: 首页 > 知识库问答 >
问题:

DASH MPD中的段持续时间

狄冥夜
2023-03-14

如果没有指定,但给定mp4视频的内容长度和索引范围,如何确定MPD文件中的片段持续时间?例如,如下所示的mpd文件(http://dash.edgesuite.net/akamai/streamroot/050714/Spring_4Ktest.mpd):

<?xml version="1.0"?>
<!-- MPD file Generated with GPAC version 0.5.1-DEV-rev5208  on 2014-05-08T15:14:47Z-->
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" minBufferTime="PT1.500000S" type="static" mediaPresentationDuration="PT0H2M45.76S" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011">
 <ProgramInformation moreInformationURL="http://gpac.sourceforge.net">
  <Title>Spring_3000k_dash.mpd generated by GPAC</Title>
 </ProgramInformation>

 <Period id="" duration="PT0H2M45.76S">
  <AdaptationSet segmentAlignment="true" maxWidth="3840" maxHeight="2160" maxFrameRate="24000/1001" par="16:9" subsegmentStartsWithSAP="1">
   <Representation id="1" mimeType="video/mp4" codecs="avc1.640033" width="1280" height="720" frameRate="24000/1001" sar="1:1" startWithSAP="1" bandwidth="2859078">
    <BaseURL>Spring_3000k_track1_dashinit.mp4</BaseURL>
    <SegmentBase indexRangeExact="true" indexRange="896-1419"/>
   </Representation>
   <Representation id="2" mimeType="video/mp4" codecs="avc1.640033" width="1920" height="1080" frameRate="24000/1001" sar="1:1" startWithSAP="1" bandwidth="4872811">
    <BaseURL>Spring_5000k_track1_dashinit.mp4</BaseURL>
    <SegmentBase indexRangeExact="true" indexRange="896-1419"/>
   </Representation>
   <Representation id="3" mimeType="video/mp4" codecs="avc1.640033" width="2880" height="1620" frameRate="24000/1001" sar="1:1" startWithSAP="1" bandwidth="7322004">
    <BaseURL>Spring_7500k_track1_dashinit.mp4</BaseURL>
    <SegmentBase indexRangeExact="true" indexRange="897-1420"/>
   </Representation>
   <Representation id="4" mimeType="video/mp4" codecs="avc1.640033" width="3840" height="2160" frameRate="24000/1001" sar="1:1" startWithSAP="1" bandwidth="9604428">
    <BaseURL>Spring_10000k_track1_dashinit.mp4</BaseURL>
    <SegmentBase indexRangeExact="true" indexRange="896-1419"/>
   </Representation>
   <Representation id="5" mimeType="video/mp4" codecs="avc1.640033" width="3840" height="2160" frameRate="24000/1001" sar="1:1" startWithSAP="1" bandwidth="14658452">
    <BaseURL>Spring_15000k_track1_dashinit.mp4</BaseURL>
    <SegmentBase indexRangeExact="true" indexRange="896-1419"/>
   </Representation>
   <Representation id="6" mimeType="video/mp4" codecs="avc1.640033" width="3840" height="2160" frameRate="24000/1001" sar="1:1" startWithSAP="1" bandwidth="19683583">
    <BaseURL>Spring_20000k_track1_dashinit.mp4</BaseURL>
    <SegmentBase indexRangeExact="true" indexRange="896-1419"/>
   </Representation>
  </AdaptationSet>
  <AdaptationSet segmentAlignment="true" subsegmentStartsWithSAP="1">
   <Representation id="7" mimeType="audio/mp4" codecs="mp4a.40.2" audioSamplingRate="48000" startWithSAP="1" bandwidth="193664">
    <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
    <BaseURL>Spring_3000k_track2_dashinit.mp4</BaseURL>
    <SegmentBase indexRangeExact="true" indexRange="823-1262"/>
   </Representation>
  </AdaptationSet>
 </Period>
</MPD>

非常感谢你!

闪耀

共有1个答案

毋炳
2023-03-14

在这种情况下,似乎没有机会从MPD文件中检索段信息。你只需要分析mp4文件。以下是“Spring_3000k_track1_dashinit.mp4”的分析片段。

   0       24 ftyp
  24        8 free
  2c       3b free
  67      319 moov
 380      20c sidx
 58c      354 moof
 8e0   152f01 mdat
 ...

和“sidx”的数据(位于896-1914范围内,即“0x380”-“0x58b”):

Box type    : sidx
Box version : 0
reference_ID    : 1
timescale   : 24000
earliest_presentation_time  : 0
first_offset    : 0
Entries : size = 41
 - [0]  
reference_type  : 0
referenced_size : 1389141
subsegment_duration : 96096
starts_with_SAP : 1
SAP_type    : 4
SAP_delta_time  : 0
 - [1]  
reference_type  : 0
referenced_size : 1422268
subsegment_duration : 96096
starts_with_SAP : 1
SAP_type    : 4
SAP_delta_time  : 0
...

所以视频中有41个片段,片段持续时间为4秒(subsegment_duration/时间尺度)。交叉检查:41 * 4 = 164~2M45.76S(内容长度)。

 类似资料:
  • 我想把一些h264 mp4视频转换成clearkey加密的dash。现在我想在本地主机上为他们服务。所以我没有带宽限制。我假设我应该使用dashavc264:onDemand配置文件和静态mpd,因为我的视频不是实时的,它们是离线的。 我的问题是: 我应该如何决定我应该使用什么时段?这是否取决于视频中有多少关键帧?它如何影响搜索/玩把戏性能?这会影响其他事情吗?

  • 我不知道如何在iOS7中设置NSLayoutConstraint动画持续时间。这是我的代码:

  • 问题内容: 我有一个价值,我想得到另一个正好是1个月前的时间。 我知道可以用(想要另一个)进行减法,但这会导致a,而我反过来需要它。 问题答案: 尝试AddDate: 产生: 游乐场:http://play.golang.org/p/QChq02kisT

  • 问题内容: 如何获取格式为2个字符串的持续时间? 我正在尝试使用Calendar类并检查。我与此有关的问题是它不一致。知道我在做什么错吗?每次我运行该程序时,如果没有,输出40-70行到控制台。 问题答案: 那是一个已记录的错误。 尝试在设置日历之前清除日历:

  • 许多记者将显示测试持续时间,以及标记缓慢的测试,如“spec”记者所示: 要调整被认为“慢”的东西,您可以使用以下slow()方法: describe('something slow', function() { this.slow(10000); it('should take long enough for me to go make a sandwich', function() { /

  • 我需要一些解释为什么这个代码不编译: 错误: 类型Duration中的(TemporalAmount)方法不适用于参数(ChronoUnit) 正如本文所述: public static Duration from(TemporalAmount amount)从时间量中获取持续时间的实例。这将根据指定的金额获得持续时间。TemporalAmount表示一个时间量,可以是基于日期的,也可以是基于时间