2016-01-04 4 views
3

Я ищу для преобразования между HLS и MPEG Dash. Я не имею доступа к исходному полностью объединенному видеофайлу, только к отдельным сегментам HLS.Создание сегмента инициализации MPEG-DASH

При выполнении этого преобразования в MPEG Dash мне нужно предоставить сегмент инициализации файла манифеста Dash .mpd.

Мои вопросы:

  1. Какова структура сегмента инициализации черточки видео?
  2. Как я могу создать/создать один без необходимости в полном полном файле?

Возможно, решение будет включать в себя получение MP4Box для преобразования сегментов HLS-х .TS' ринуться сегменты ".m4s', которые являются самостоятельной инициализации, но я не уверен, как идти об этом это?

Любые идеи очень ценятся.

Большое спасибо.

ОБНОВЛЕНИЕ: Фрагмент для потока с использованием оригинальных сегментов hls. Видео воспроизводится полностью, но просто черное.

<Representation width="426" height="238" frameRate="25" id="238p 400kbps" bandwidth="400000"> 
    <SegmentList timescale="25000" duration="112500"> 
      <SegmentURL media="video_0_400000/hls/segment_0.ts"/> 
      <SegmentURL media="video_0_400000/hls/segment_1.ts"/> 
      <SegmentURL media="video_0_400000/hls/segment_2.ts"/> 
    </SegmentList> 
    </Representation> 
</AdaptationSet> 

ответ

4

Какова структура сегмента инициализации черточки видео?

Сегмент инициализации содержит информацию, необходимую для инициализации видеодекодера. Сегмент инициализации является необязательным (см. ISO/IEC 23009-1).

Для ISO BMFF (широко известный как mp4) это включает в себя поле moov (указано в ISO/IEC 14496-12). Обычно для MPEG-TS сегмента инициализации нет. При наличии он содержит несколько пакетов, которые несут данные инициализации в PES.

Как я могу сгенерировать/создать один без необходимости в полном полном файле?

Преобразование HLS в MPEG-DASH тривиальна, если ваш целевой проигрыватель поддерживает необходимые функции. Сначала вам нужен плеер, поддерживающий MPEG-TS. Тогда вам действительно не нужен сегмент инициализации, потому что данные инициализации содержатся внутри каждого сегмента HLS. Для преобразования и списка воспроизведения HLS в MPEG-DASH mpd вам необходимо создать segment list или segment template. Вот пример:

HLS:

#EXTM3U 
#EXT-X-VERSION:3 
#EXT-X-TARGETDURATION:10 
#EXTINF:10.0, 
stream0.ts 
#EXTINF:10.0, 
stream1.ts 
#EXTINF:10.0, 
stream2.ts 

MPD:

... 
<SegmentList duration="10"> 
    <SegmentURL media="stream0.ts"/> 
    <SegmentURL media="stream1.ts"/> 
    <SegmentURL media="stream2.ts"/> 
</SegmentList> 
... 

Если ваш целевой игрок не поддерживает MPEG-TS или SegmentList, то вы должны преобразовать поток HLS в MPEG- DASH с помощью некоторого внешнего инструмента, такого как MP4Box.

+0

Большое спасибо, это действительно проницательно. Я не верю, что у меня есть игрок, который будет поддерживать эти сегменты HLS. Не могли бы вы указать мне в правильном направлении для команды mp4box, которая будет делать это преобразование? – Mahout

+0

К сожалению, у меня не было большого опыта работы с mp4box. Я пробовал это пару раз, но я не помню точных команд. Я предлагаю вам изучить [документацию] (https://gpac.wp.mines-telecom.fr/mp4box/mp4box-documentation/). –

+0

Используя вышеописанный метод SegmentList, я могу воспроизводить видео, но видео полностью черное. Я добавил фрагмент в конце оригинального сообщения. – Mahout

Смежные вопросы