Валидатор MPEG-DASH сообщает об ошибках синхронизации
Моя проблема может быть связана с любым из нескольких компонентов в моей установке, поэтому я просто опишу все это здесь.
Я собираю пакеты h.264 NAL с устройства Blackmagic h.264 Pro Recorder и сам упаковываю их в контейнеры mp4 для DASH. Моя цель - настроить прямую трансляцию MPEG-DASH с рекордера.
Мои файлы инициализации и сегмента mp4 выглядят нормально (я могу открыть их с помощью MP4Explorer и подтвердить, что различные поля были настроены так, как я хочу), и мой файл mpd проходит проверку с использованием валидатора на http://dashif.org/conformance.html
Я обслуживаю поток DASH с сервера IIS и пытаюсь проверить его с помощью того же средства проверки, и я получаю следующие ошибки:
WARNING: unknown mvex atom 'trep'
WARNING: unknown/unexpected atom 'meta'
tfdt base media decode time 2.816000 not equal to accumulated decode time 0.000000 for track 1 for the first fragment of the movie. This software does not handle incomplete presentations. Applying correction.
### error:
### tfdt base media decode time 4.816000 not equal to accumulated decode time 6.656000 for track 1 for sequence_number 2 (fragment absolute count 2)
### error:
### tfdt base media decode time 6.816000 not equal to accumulated decode time 12.416000 for track 1 for sequence_number 3 (fragment absolute count 3)
### error:
### tfdt base media decode time 8.816000 not equal to accumulated decode time 20.096000 for track 1 for sequence_number 4 (fragment absolute count 4)
### error:
### tfdt base media decode time 10.816000 not equal to accumulated decode time 29.696000 for track 1 for sequence_number 5 (fragment absolute count 5)
### error:
### tfdt base media decode time 12.816000 not equal to accumulated decode time 41.216000 for track 1 for sequence_number 6 (fragment absolute count 6)
### error:
### tfdt base media decode time 14.816000 not equal to accumulated decode time 54.656000 for track 1 for sequence_number 7 (fragment absolute count 7)
...more of the same, and finally...
### error:
### Buffer underrun conformance error: first (and only one reported here) for sample 1 of run 1 of track fragment 1 of fragment 1 of track id 1 (sample absolute file offset 3835, fragment absolute file offset 863, bandwidth: 5000)
Так что я подозреваю, что либо неправильно заполняю поля времени tfdt, либо неправильно настраиваю поток DASH. Я сравнил свои файлы с другими mp4, и кажется, что поле времени должно линейно увеличиваться, как и мое (возможно, я неправильно понимаю спецификацию: ISO/IEC 14496-12). Кто-нибудь там со знанием h.264 и DASH, кто мог бы помочь мне разобраться в этом?
Мой файл mpd:
<?xml version="1.0"?>
<MPD
availabilityStartTime="1970-01-01T00:00:00Z"
publishTime="2016-07-14T13:59:43Z"
maxSegmentDuration="PT2S"
minBufferTime="PT1S"
minimumUpdatePeriod="P100Y"
profiles="urn:mpeg:dash:profile:isoff-live:2011"
timeShiftBufferDepth="PT1M"
type="dynamic"
xmlns="urn:mpeg:dash:schema:mpd:2011">
<ProgramInformation moreInformationURL="http://gpac.sourceforge.net">
<Title>BLACKMAGIC DASH</Title>
</ProgramInformation>
<Period id="p0" start="PT0S">
<AdaptationSet segmentAlignment="true" maxWidth="1920" maxHeight="1080" maxFrameRate="60" par="16:9" lang="und">
<ContentComponent id="1" contentType="video" />
<!--ContentComponent id="2" contentType="audio" /-->
<Representation id="V300" mimeType="video/mp4" codecs="avc3.640028,mp4a.40.2" width="1280" height="720" frameRate="60" sar="1:1" audioSamplingRate="48000" startWithSAP="1" bandwidth="5000">
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
<SegmentTemplate timescale="1000" media="$RepresentationID$/$Number$.m4s" startNumber="0" duration="2000" initialization="$RepresentationID$/init.mp4"/>
</Representation>
</AdaptationSet>
</Period>
</MPD>
Я могу предоставить дополнительную информацию (и ссылку на поток DASH) по запросу.