DASH manifest invalid and wrong frameRate?
I have a source RTMP feed (h.264, aac, 30fps, 750kbs, 400 x 400) that I am pushing into evostream. This stream plays back fine in RTMP (flash) and HLS players.
I create an mpeg-dash stream from it via:
createDASHStream localstreamnames=2_400_400_750000 bandwidths=750000 chunkLength=2 playlistType=rolling playlistLength=6 targetfolder=/opt/evostreamms-1.7.1.4491-x86_64-MacOSX_10.11/evo-webroot groupname=testDashIt runs successfully, and I can hit http:localhost:8888/testDash/manifest.mpd to grab the manifest file. However, when I pass the generated manifest file to one of the officially sanctioned validators (i.e. http://dashif.org/conformance.html) it fails validation due to not adhering to the schema rules. Most players still seem to accept the manifest file, however there are some parts that look odd to me. The AdaptationSet as a maxFrameRate of 3000, however the representation has a frameRate of 46. The players that are able to play at all will play for a bit but then get stuck, buffer for a bit and then play again. I guess this could be due to it trying to play back at a higher frameRate than the source material (46 vs 30 fps). Have I configured something wrong? Why would it be generating a frameRate different than the source materials? Why is the manifest invalid? Here is a sample of the generated manifest:
<?xml version="1.0" encoding="utf-8"?>
<MPD
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011"
type="dynamic"
xmlns="urn:mpeg:dash:schema:mpd:2011"
profiles="urn:mpeg:dash:profile:isoff-live:2011"
minBufferTime="PT10S"
minimumUpdatePeriod="PT5S"
timeShiftBufferDepth="PT10M"
suggestedPresentationDelay="PT10S"
availabilityStartTime="2017-02-13T14:44:21Z">
<Period id="evo-dash" start="PT0S">
<AdaptationSet maxFrameRate="3000" maxHeight="1080" maxWidth="1920" par="16:9" segmentAlignment="true" startWithSAP="0">
<ContentComponent contentType="video" id="1"/>
<Representation bandwidth="750000" codecs="avc1.42c01e" frameRate="46" height="400" id="2_400_400_750000Video750000" mimeType="video/mp4" sar="1:1" width="400">
<SegmentTemplate initialization="2_400_400_750000/video/750000/seg_init.mp4" media="2_400_400_750000/video/750000/segment_$Time$.m4s" timescale="1000">
<SegmentTimeline>
<S d="3000" t="78465"/>
<S d="3000" t="81483"/>
<S d="3000" t="84502"/>
<S d="3000" t="87520"/>
<S d="3000" t="90539"/>
<S d="3000" t="93558"/>
</SegmentTimeline>
</SegmentTemplate>
</Representation>
</AdaptationSet>
<AdaptationSet lang="en" segmentAlignment="true" startWithSAP="0">
<ContentComponent contentType="audio" id="2"/>
<Representation audioSamplingRate="44100" bandwidth="750000" codecs="mp4a.40.2" id="2_400_400_750000Audio750000" mimeType="audio/mp4">
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
<SegmentTemplate initialization="2_400_400_750000/audio/750000/seg_init.mp4" media="2_400_400_750000/audio/750000/segment_$Time$.m4s" timescale="1000">
<SegmentTimeline>
<S d="3019" t="78483"/>
<S d="3018" t="81502"/>
<S d="3019" t="84520"/>
<S d="3019" t="87539"/>
<S d="3018" t="90558"/>
<S d="3019" t="93576"/>
</SegmentTimeline>
</SegmentTemplate>
</Representation>
</AdaptationSet>
</Period>
</MPD>