如果没有指定,但给定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>
非常感谢你!
闪耀
在这种情况下,似乎没有机会从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表示一个时间量,可以是基于日期的,也可以是基于时间