Где хранить файл .mpd на django для воспроизведения на плеере dash? - PullRequest
0 голосов
/ 03 января 2019

Я пытаюсь собрать видеоплеер на Django. Я использую MPEG-DASH для адаптивной потоковой передачи видеофайла. Я выбрал образец видео в начале. Затем, используя команды ffmpeg, я закодировал видео в видео 240p, 360p, 480p и 720p. Также закодировали аудио отдельно.

Затем, используя mp4box, я сгенерировал файл .mpd. Я прочитал, что MPD файлы не могут быть запущены из локальной файловой системы и должны быть размещены на сервере. У меня есть даш-плеер, настроенный следующим образом:

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>player</title>
    <script src="https://cdn.dashjs.org/latest/dash.all.min.js"></script>
    <style>
    video {
       width: 640px;
       height: 360px;
    }
</style>
  </head>
  <body>
    <div>
       <video data-dashjs-player autoplay src="https://dash.akamaized.net/envivio/EnvivioDash3/manifest.mpd" controls></video>
   </div>
  </body>
</html>

URL-адрес в поле src - это случайный файл манифеста, который я использовал для тестирования проигрывателя. Работает нормально.

Затем в моем проекте django я создал папку мультимедиа, в которой хранятся файлы мультимедиа, загруженные через форму (корень включен в settings.py). У меня вопрос, где я могу хранить видео, аудио и .mpd файл, чтобы я мог воспроизвести их, используя HTML-код, который находится в папке шаблонов. Я попытался использовать медиа-адрес файла .mpd в источнике, но не могу воспроизвести видео.

Вот сгенерированный файл mpd для справки:

<?xml version="1.0"?>
<!-- MPD file Generated with GPAC version 0.7.0-rev0-gbd5c9af-master  at 2018-12-21T18:45:32.091Z-->
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" minBufferTime="PT1.500S" type="static" mediaPresentationDuration="PT0H1M9.869S" maxSegmentDuration="PT0H0M9.985S" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011,http://dashif.org/guidelines/dash264">
 <ProgramInformation moreInformationURL="http://gpac.io">
  <Title>BBB</Title>
 </ProgramInformation>

 <Period duration="PT0H1M9.869S">
  <AdaptationSet segmentAlignment="true" lang="und" subsegmentAlignment="true" subsegmentStartsWithSAP="1">
   <Representation id="1" mimeType="audio/mp4" codecs="mp4a.40.2" audioSamplingRate="44100" startWithSAP="1" bandwidth="130920">
    <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
    <BaseURL>sample_audio_dashinit.mp4</BaseURL>
    <SegmentBase indexRangeExact="true" indexRange="902-1017">
      <Initialization range="0-901"/>
    </SegmentBase>
   </Representation>
  </AdaptationSet>
  <AdaptationSet segmentAlignment="true" group="1" maxWidth="426" maxHeight="240" maxFrameRate="30" par="426:240" lang="und" subsegmentAlignment="true" subsegmentStartsWithSAP="1">
   <Representation id="2" mimeType="video/mp4" codecs="avc1.640015" width="426" height="240" frameRate="30" sar="1:1" startWithSAP="1" bandwidth="590708">
    <BaseURL>sample_video_240_dashinit.mp4</BaseURL>
    <SegmentBase indexRangeExact="true" indexRange="914-1053">
      <Initialization range="0-913"/>
    </SegmentBase>
   </Representation>
  </AdaptationSet>
  <AdaptationSet segmentAlignment="true" group="1" maxWidth="640" maxHeight="480" maxFrameRate="30" par="4:3" lang="und" subsegmentAlignment="true" subsegmentStartsWithSAP="1">
   <Representation id="3" mimeType="video/mp4" codecs="avc1.64001E" width="480" height="360" frameRate="30" sar="1:1" startWithSAP="1" bandwidth="883873">
    <BaseURL>sample_video_360_dashinit.mp4</BaseURL>
    <SegmentBase indexRangeExact="true" indexRange="914-1053">
      <Initialization range="0-913"/>
    </SegmentBase>
   </Representation>
   <Representation id="4" mimeType="video/mp4" codecs="avc1.64001E" width="640" height="480" frameRate="30" sar="1:1" startWithSAP="1" bandwidth="1188712">
    <BaseURL>sample_video_480_dashinit.mp4</BaseURL>
    <SegmentBase indexRangeExact="true" indexRange="913-1052">
      <Initialization range="0-912"/>
    </SegmentBase>
   </Representation>
  </AdaptationSet>
  <AdaptationSet segmentAlignment="true" group="1" maxWidth="1280" maxHeight="720" maxFrameRate="30" par="16:9" lang="und" subsegmentAlignment="true" subsegmentStartsWithSAP="1">
   <Representation id="5" mimeType="video/mp4" codecs="avc1.64001F" width="1280" height="720" frameRate="30" sar="1:1" startWithSAP="1" bandwidth="2365717">
    <BaseURL>sample_video_720_dashinit.mp4</BaseURL>
    <SegmentBase indexRangeExact="true" indexRange="914-1053">
      <Initialization range="0-913"/>
    </SegmentBase>
   </Representation>
  </AdaptationSet>
 </Period>
</MPD>
...