I'm trying to use Django REST Framework to serve .mpd files. When the user uploads a video, the server creates the MPD and the chunk files. However, I can't seem to able to make it work. I've tried using python-ffmpeg-video-streaming, but the client which is using dash.js to play the video will get only one bitrate (480p). I've also tried running this command 'ffmpeg -i {self.file.path} -map 0 -map 0 -c:a aac -c:v libx264 -b:v:0 800k -b:v:1 300k -var_stream_map "v:0,name:800k v:1,name:300k" -f dash -dash_segment_type mp4 -single_file 1 {file_dir}/dash.mpd' using os.system from Python, but then the player gets stuck at buffering.
<MPD xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="urn:mpeg:dash:schema:mpd:2011"
xmlns:xlink="http://www.w3.org/1999/xlink"
xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 http://standards.iso.org/ittf/PubliclyAvailableStandards/MPEG-DASH_schema_files/DASH-MPD.xsd"
profiles="urn:mpeg:dash:profile:isoff-live:2011"
type="static"
mediaPresentationDuration="PT2M30.5S"
maxSegmentDuration="PT5.0S"
minBufferTime="PT16.6S">
<ProgramInformation>
</ProgramInformation>
<ServiceDescription id="0">
</ServiceDescription>
<Period id="0" start="PT0.0S">
<AdaptationSet id="0" contentType="video" startWithSAP="1" segmentAlignment="true" bitstreamSwitching="true" frameRate="30000/1001" maxWidth="1280" maxHeight="720" par="16:9" lang="und">
<Representation id="0" mimeType="video/mp4" codecs="avc1.64001f" bandwidth="800000" width="1280" height="720" sar="1:1">
<BaseURL>dash-stream0.mp4</BaseURL>
<SegmentList timescale="1000000" duration="5000000" startNumber="1">
<Initialization range="0-854" />
<SegmentURL mediaRange="855-190364" indexRange="855-906" />
<SegmentURL mediaRange="190365-448322" indexRange="190365-190416" />
<SegmentURL mediaRange="448323-628609" indexRange="448323-448374" />
<SegmentURL mediaRange="628610-741660" indexRange="628610-628661" />
<SegmentURL mediaRange="741661-1149015" indexRange="741661-741712" />
<SegmentURL mediaRange="1149016-1761260" indexRange="1149016-1149067" />
<SegmentURL mediaRange="1761261-1829636" indexRange="1761261-1761312" />
<SegmentURL mediaRange="1829637-2343368" indexRange="1829637-1829688" />
<SegmentURL mediaRange="2343369-2759155" indexRange="2343369-2343420" />
<SegmentURL mediaRange="2759156-3120911" indexRange="2759156-2759207" />
<SegmentURL mediaRange="3120912-3255416" indexRange="3120912-3120963" />
<SegmentURL mediaRange="3255417-3617692" indexRange="3255417-3255468" />
<SegmentURL mediaRange="3617693-3910773" indexRange="3617693-3617744" />
<SegmentURL mediaRange="3910774-4097693" indexRange="3910774-3910825" />
<SegmentURL mediaRange="4097694-4266685" indexRange="4097694-4097745" />
<SegmentURL mediaRange="4266686-4609479" indexRange="4266686-4266737" />
<SegmentURL mediaRange="4609480-4719699" indexRange="4609480-4609531" />
<SegmentURL mediaRange="4719700-4833193" indexRange="4719700-4719751" />
<SegmentURL mediaRange="4833194-4905000" indexRange="4833194-4833245" />
<SegmentURL mediaRange="4905001-5046627" indexRange="4905001-4905052" />
</SegmentList>
</Representation>
</AdaptationSet>
<AdaptationSet id="1" contentType="audio" startWithSAP="1" segmentAlignment="true" bitstreamSwitching="true" lang="eng">
<Representation id="1" mimeType="audio/mp4" codecs="mp4a.40.2" bandwidth="128000" audioSamplingRate="44100">
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2" />
<BaseURL>dash-stream1.mp4</BaseURL>
<SegmentList timescale="1000000" duration="5000000" startNumber="1">
<Initialization range="0-764" />
<SegmentURL mediaRange="765-82409" indexRange="765-816" />
<SegmentURL mediaRange="82410-163592" indexRange="82410-82461" />
<SegmentURL mediaRange="163593-244493" indexRange="163593-163644" />
<SegmentURL mediaRange="244494-325181" indexRange="244494-244545" />
<SegmentURL mediaRange="325182-406218" indexRange="325182-325233" />
<SegmentURL mediaRange="406219-487174" indexRange="406219-406270" />
<SegmentURL mediaRange="487175-568100" indexRange="487175-487226" />
<SegmentURL mediaRange="568101-649853" indexRange="568101-568152" />
<SegmentURL mediaRange="649854-732519" indexRange="649854-649905" />
<SegmentURL mediaRange="732520-813751" indexRange="732520-732571" />
<SegmentURL mediaRange="813752-895429" indexRange="813752-813803" />
<SegmentURL mediaRange="895430-976537" indexRange="895430-895481" />
<SegmentURL mediaRange="976538-1058579" indexRange="976538-976589" />
<SegmentURL mediaRange="1058580-1139556" indexRange="1058580-1058631" />
<SegmentURL mediaRange="1139557-1220802" indexRange="1139557-1139608" />
<SegmentURL mediaRange="1220803-1301723" indexRange="1220803-1220854" />
<SegmentURL mediaRange="1301724-1382546" indexRange="1301724-1301775" />
<SegmentURL mediaRange="1382547-1464086" indexRange="1382547-1382598" />
<SegmentURL mediaRange="1464087-1546573" indexRange="1464087-1464138" />
<SegmentURL mediaRange="1546574-1627881" indexRange="1546574-1546625" />
<SegmentURL mediaRange="1627882-1710185" indexRange="1627882-1627933" />
<SegmentURL mediaRange="1710186-1791593" indexRange="1710186-1710237" />
<SegmentURL mediaRange="1791594-1872889" indexRange="1791594-1791645" />
<SegmentURL mediaRange="1872890-1954238" indexRange="1872890-1872941" />
<SegmentURL mediaRange="1954239-2036069" indexRange="1954239-1954290" />
<SegmentURL mediaRange="2036070-2117365" indexRange="2036070-2036121" />
<SegmentURL mediaRange="2117366-2198435" indexRange="2117366-2117417" />
<SegmentURL mediaRange="2198436-2279764" indexRange="2198436-2198487" />
<SegmentURL mediaRange="2279765-2362061" indexRange="2279765-2279816" />
<SegmentURL mediaRange="2362062-2443751" indexRange="2362062-2362113" />
<SegmentURL mediaRange="2443752-2446358" indexRange="2443752-2443803" />
</SegmentList>
</Representation>
</AdaptationSet>
<AdaptationSet id="2" contentType="video" startWithSAP="1" segmentAlignment="true" bitstreamSwitching="true" frameRate="30000/1001" maxWidth="1280" maxHeight="720" par="16:9" lang="und">
<Representation id="2" mimeType="video/mp4" codecs="avc1.64001f" bandwidth="300000" width="1280" height="720" sar="1:1">
<BaseURL>dash-stream2.mp4</BaseURL>
<SegmentList timescale="1000000" duration="5000000" startNumber="1">
<Initialization range="0-854" />
<SegmentURL mediaRange="855-117134" indexRange="855-906" />
<SegmentURL mediaRange="117135-288087" indexRange="117135-117186" />
<SegmentURL mediaRange="288088-435178" indexRange="288088-288139" />
<SegmentURL mediaRange="435179-520309" indexRange="435179-435230" />
<SegmentURL mediaRange="520310-903223" indexRange="520310-520361" />
<SegmentURL mediaRange="903224-1458808" indexRange="903224-903275" />
<SegmentURL mediaRange="1458809-1524956" indexRange="1458809-1458860" />
<SegmentURL mediaRange="1524957-2026894" indexRange="1524957-1525008" />
<SegmentURL mediaRange="2026895-2406246" indexRange="2026895-2026946" />
<SegmentURL mediaRange="2406247-2726266" indexRange="2406247-2406298" />
<SegmentURL mediaRange="2726267-2852806" indexRange="2726267-2726318" />
<SegmentURL mediaRange="2852807-3183174" indexRange="2852807-2852858" />
<SegmentURL mediaRange="3183175-3467272" indexRange="3183175-3183226" />
<SegmentURL mediaRange="3467273-3653219" indexRange="3467273-3467324" />
<SegmentURL mediaRange="3653220-3821184" indexRange="3653220-3653271" />
<SegmentURL mediaRange="3821185-4162978" indexRange="3821185-3821236" />
<SegmentURL mediaRange="4162979-4273050" indexRange="4162979-4163030" />
<SegmentURL mediaRange="4273051-4386223" indexRange="4273051-4273102" />
<SegmentURL mediaRange="4386224-4458425" indexRange="4386224-4386275" />
<SegmentURL mediaRange="4458426-4597502" indexRange="4458426-4458477" />
</SegmentList>
</Representation>
</AdaptationSet>
<AdaptationSet id="3" contentType="audio" startWithSAP="1" segmentAlignment="true" bitstreamSwitching="true" lang="eng">
<Representation id="3" mimeType="audio/mp4" codecs="mp4a.40.2" bandwidth="128000" audioSamplingRate="44100">
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2" />
<BaseURL>dash-stream3.mp4</BaseURL>
<SegmentList timescale="1000000" duration="5000000" startNumber="1">
<Initialization range="0-764" />
<SegmentURL mediaRange="765-82409" indexRange="765-816" />
<SegmentURL mediaRange="82410-163592" indexRange="82410-82461" />
<SegmentURL mediaRange="163593-244493" indexRange="163593-163644" />
<SegmentURL mediaRange="244494-325181" indexRange="244494-244545" />
<SegmentURL mediaRange="325182-406218" indexRange="325182-325233" />
<SegmentURL mediaRange="406219-487174" indexRange="406219-406270" />
<SegmentURL mediaRange="487175-568100" indexRange="487175-487226" />
<SegmentURL mediaRange="568101-649853" indexRange="568101-568152" />
<SegmentURL mediaRange="649854-732519" indexRange="649854-649905" />
<SegmentURL mediaRange="732520-813751" indexRange="732520-732571" />
<SegmentURL mediaRange="813752-895429" indexRange="813752-813803" />
<SegmentURL mediaRange="895430-976537" indexRange="895430-895481" />
<SegmentURL mediaRange="976538-1058579" indexRange="976538-976589" />
<SegmentURL mediaRange="1058580-1139556" indexRange="1058580-1058631" />
<SegmentURL mediaRange="1139557-1220802" indexRange="1139557-1139608" />
<SegmentURL mediaRange="1220803-1301723" indexRange="1220803-1220854" />
<SegmentURL mediaRange="1301724-1382546" indexRange="1301724-1301775" />
<SegmentURL mediaRange="1382547-1464086" indexRange="1382547-1382598" />
<SegmentURL mediaRange="1464087-1546573" indexRange="1464087-1464138" />
<SegmentURL mediaRange="1546574-1627881" indexRange="1546574-1546625" />
<SegmentURL mediaRange="1627882-1710185" indexRange="1627882-1627933" />
<SegmentURL mediaRange="1710186-1791593" indexRange="1710186-1710237" />
<SegmentURL mediaRange="1791594-1872889" indexRange="1791594-1791645" />
<SegmentURL mediaRange="1872890-1954238" indexRange="1872890-1872941" />
<SegmentURL mediaRange="1954239-2036069" indexRange="1954239-1954290" />
<SegmentURL mediaRange="2036070-2117365" indexRange="2036070-2036121" />
<SegmentURL mediaRange="2117366-2198435" indexRange="2117366-2117417" />
<SegmentURL mediaRange="2198436-2279764" indexRange="2198436-2198487" />
<SegmentURL mediaRange="2279765-2362061" indexRange="2279765-2279816" />
<SegmentURL mediaRange="2362062-2443751" indexRange="2362062-2362113" />
<SegmentURL mediaRange="2443752-2446358" indexRange="2443752-2443803" />
</SegmentList>
</Representation>
</AdaptationSet>
</Period>
</MPD>
<MPD xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="urn:mpeg:dash:schema:mpd:2011"
xmlns:xlink="http://www.w3.org/1999/xlink"
xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 http://standards.iso.org/ittf/PubliclyAvailableStandards/MPEG-DASH_schema_files/DASH-MPD.xsd"
profiles="urn:mpeg:dash:profile:isoff-live:2011"
type="static"
mediaPresentationDuration="PT5M24.4S"
maxSegmentDuration="PT5.0S"
minBufferTime="PT10.8S">
<ProgramInformation>
</ProgramInformation>
<ServiceDescription id="0">
</ServiceDescription>
<Period id="0" start="PT0.0S">
<AdaptationSet id="0" contentType="video" startWithSAP="1" segmentAlignment="true" bitstreamSwitching="true" frameRate="30/1" maxWidth="854" maxHeight="480" par="16:9" lang="und">
<Representation id="0" mimeType="video/mp4" codecs="avc1.64001f" bandwidth="750000" width="854" height="480" sar="1280:1281">
<SegmentTemplate timescale="15360" initialization="dash_init_$RepresentationID$.m4s" media="dash_chunk_$RepresentationID$_$Number%05d$.m4s" startNumber="1">
<SegmentTimeline>
<S t="0" d="95744" />
<S d="93696" />
<S d="117760" />
<S d="126976" />
<S d="152064" />
<S d="109056" />
<S d="128000" r="1" />
<S d="110080" />
<S d="105984" r="1" />
<S d="96256" />
<S d="114688" />
<S d="122880" />
<S d="106496" />
<S d="113152" />
<S d="126464" />
<S d="91136" />
<S d="77824" />
<S d="115712" />
<S d="93184" />
<S d="154624" />
<S d="129024" />
<S d="141824" />
<S d="116736" />
<S d="92672" />
<S d="106496" />
<S d="153088" />
<S d="121344" />
<S d="130560" />
<S d="87040" />
<S d="81920" />
<S d="128000" />
<S d="99328" />
<S d="128000" />
<S d="159232" />
<S d="158208" />
<S d="78848" />
<S d="112640" />
<S d="95232" />
<S d="168448" />
<S d="167424" />
<S d="40960" />
</SegmentTimeline>
</SegmentTemplate>
</Representation>
</AdaptationSet>
<AdaptationSet id="1" contentType="audio" startWithSAP="1" segmentAlignment="true" bitstreamSwitching="true" lang="eng">
<Representation id="1" mimeType="audio/mp4" codecs="mp4a.40.2" bandwidth="192000" audioSamplingRate="44100">
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2" />
<SegmentTemplate timescale="44100" initialization="dash_init_$RepresentationID$.m4s" media="dash_chunk_$RepresentationID$_$Number%05d$.m4s" startNumber="1">
<SegmentTimeline>
<S t="0" d="220160" />
<S d="221184" r="62" />
<S d="151552" />
</SegmentTimeline>
</SegmentTemplate>
</Representation>
</AdaptationSet>
<AdaptationSet id="2" contentType="video" startWithSAP="1" segmentAlignment="true" bitstreamSwitching="true" frameRate="30/1" maxWidth="1280" maxHeight="720" par="16:9" lang="und">
<Representation id="2" mimeType="video/mp4" codecs="avc1.64001f" bandwidth="2048000" width="1280" height="720" sar="1:1">
<SegmentTemplate timescale="15360" initialization="dash_init_$RepresentationID$.m4s" media="dash_chunk_$RepresentationID$_$Number%05d$.m4s" startNumber="1">
<SegmentTimeline>
<S t="0" d="96256" />
<S d="93184" />
<S d="117760" />
<S d="78336" />
<S d="106496" />
<S d="123392" />
<S d="80384" />
<S d="128000" r="1" />
<S d="109568" />
<S d="164864" />
<S d="128000" />
<S d="181760" />
<S d="91136" />
<S d="84992" />
<S d="127488" />
<S d="103936" />
<S d="101376" />
<S d="77312" />
<S d="115712" />
<S d="93184" />
<S d="154624" />
<S d="129024" />
<S d="132096" />
<S d="126464" />
<S d="92672" />
<S d="107008" />
<S d="152064" />
<S d="122368" />
<S d="130560" />
<S d="85504" />
<S d="82944" />
<S d="128000" />
<S d="99328" />
<S d="128000" />
<S d="161792" />
<S d="155648" />
<S d="78848" />
<S d="113152" />
<S d="119808" />
<S d="144896" />
<S d="116224" />
<S d="83456" />
<S d="7168" />
</SegmentTimeline>
</SegmentTemplate>
</Representation>
</AdaptationSet>
<AdaptationSet id="3" contentType="audio" startWithSAP="1" segmentAlignment="true" bitstreamSwitching="true" lang="eng">
<Representation id="3" mimeType="audio/mp4" codecs="mp4a.40.2" bandwidth="320000" audioSamplingRate="44100">
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2" />
<SegmentTemplate timescale="44100" initialization="dash_init_$RepresentationID$.m4s" media="dash_chunk_$RepresentationID$_$Number%05d$.m4s" startNumber="1">
<SegmentTimeline>
<S t="0" d="220160" />
<S d="221184" r="62" />
<S d="151552" />
</SegmentTimeline>
</SegmentTemplate>
</Representation>
</AdaptationSet>
<AdaptationSet id="4" contentType="video" startWithSAP="1" segmentAlignment="true" bitstreamSwitching="true" frameRate="30/1" maxWidth="1920" maxHeight="1080" par="16:9" lang="und">
<Representation id="4" mimeType="video/mp4" codecs="avc1.640028" bandwidth="4096000" width="1920" height="1080" sar="1:1">
<SegmentTemplate timescale="15360" initialization="dash_init_$RepresentationID$.m4s" media="dash_chunk_$RepresentationID$_$Number%05d$.m4s" startNumber="1">
<SegmentTimeline>
<S t="0" d="86016" />
<S d="103424" />
<S d="95232" />
<S d="95744" />
<S d="111616" />
<S d="123392" />
<S d="80384" />
<S d="128000" r="1" />
<S d="109568" />
<S d="157184" />
<S d="92160" />
<S d="145408" />
<S d="79872" />
<S d="85504" />
<S d="92160" />
<S d="82944" />
<S d="81408" />
<S d="168960" />
<S d="138240" />
<S d="83456" />
<S d="99328" />
<S d="120320" />
<S d="126464" />
<S d="132608" />
<S d="121856" />
<S d="96768" />
<S d="90112" />
<S d="169472" />
<S d="121856" />
<S d="137216" />
<S d="119808" />
<S d="177152" />
<S d="92160" />
<S d="128000" />
<S d="161792" />
<S d="156160" />
<S d="78336" />
<S d="77824" />
<S d="84480" />
<S d="104960" />
<S d="110592" />
<S d="98304" />
<S d="108544" />
</SegmentTimeline>
</SegmentTemplate>
</Representation>
</AdaptationSet>
<AdaptationSet id="5" contentType="audio" startWithSAP="1" segmentAlignment="true" bitstreamSwitching="true" lang="eng">
<Representation id="5" mimeType="audio/mp4" codecs="mp4a.40.2" bandwidth="320000" audioSamplingRate="44100">
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2" />
<SegmentTemplate timescale="44100" initialization="dash_init_$RepresentationID$.m4s" media="dash_chunk_$RepresentationID$_$Number%05d$.m4s" startNumber="1">
<SegmentTimeline>
<S t="0" d="220160" />
<S d="221184" r="62" />
<S d="151552" />
</SegmentTimeline>
</SegmentTemplate>
</Representation>
</AdaptationSet>
</Period>
</MPD>
Do I really need multiple video files in different resolutions? If not, then how would I go about making the necessary files? Thanks in advance!


Whether you need multiple bit rate versions of your video or not is dependent on your goals.
The purpose of the different bit rates is to support different device types and to avoid buffering due to network conditions.
The player will monitor the size of the buffer and if it gets too low it will switch to a lower resolution or if the buffer is nearly full it will potentially switch to a higher resolution.
In this way the user should not see any pauses due to buffering.
It also allows faster video start up as the player can start with a low resolution and then step up to higher as the video progresses.
You can support just one resolution, or a smaller number of resolutions if you are happy with the performance for your users - for example in an internal network without much traffic and with plenty of bandwidth this might be fine.