MPEG-DASH рдХреНрдпрд╛ рд╣реИ

рдПрдордкреАрдИрдЬреА-рдбреАрдПрдПрд╕рдПрд╕ рдПрдХ рдирдИ рдкреАрдврд╝реА рдХреА рддрдХрдиреАрдХ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЕрдиреБрдХреВрд▓реА рд╡реАрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред HTTP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рдЦрдВрдбрд┐рдд рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдореМрдЬреВрджрд╛ HTTP рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡реАрдбрд┐рдпреЛ рдХреЛ рдордЬрд╝рдмреВрддреА рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ, рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░реЛрдВ рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рд╕рдорд╕реНрдпрд╛рдУрдВ, рдиреЗрдЯрд╡рд░реНрдХ рдПрдбреНрд░реЗрд╕ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдЖрджрд┐ рдХреЗ рдмрд┐рдирд╛ рднреА рджрд░реНрдж рд░рд╣рд┐рдд рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
DASH - HTTP рдкрд░ рдбрд╛рдпрдирд╛рдорд┐рдХ рдЕрдбреИрдкреНрдЯрд┐рд╡ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧред DASH ISO / IEC 23009-1: 2012 рдорд╛рдирдХ 2011 рдореЗрдВ MPEG рд╕рдореВрд╣ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
MPEG-DASH рддрдХрдиреАрдХ рдЖрдо рддреМрд░ рдкрд░ Apple рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдЕрдиреНрдп рдкреНрд░рд╕рд┐рджреНрдз HLS (HTTP рд▓рд╛рдЗрд╡ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ) рддрдХрдиреАрдХ рдХреЗ рд╕рдорд╛рди рд╣реИ рдФрд░ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ iOS рдФрд░ Android рдХреЗ рд╕рд╛рде рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИред рдзрд╛рд░рд╛ рдХреЛ рд▓рдШреБ рдЕрд╡рдзрд┐ рдХреЗ рдЯреБрдХрдбрд╝реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдирд╛рдЯрдХ (рдкреНрд░рдХрдЯ) рдЬрд┐рд╕рдореЗрдВ рдзрд╛рд░рд╛ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдФрд░ рдЕрдВрд╢реЛрдВ рдХреЗ рд▓рд┐рдВрдХ рд╣реЛрддреЗ рд╣реИрдВред
HLS рдореЗрдВ, рдПрдХ рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рдХреЛ m3u8 рдкреНрд░рд╛рд░реВрдк (m3u рдПрдХреНрд╕рдЯреЗрдВрд╢рди) рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЯреБрдХрдбрд╝реЗ MPEG-TS (MPEG-2 рдорд╛рдирдХ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛) рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред MPEG-DASH рдореЗрдВ, рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ (рдкреНрд░рдХрдЯ) XML рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ MPEG-TS рдкреНрд░рд╛рд░реВрдк рдФрд░
ISO BMFF (рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, mp4) рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдПрдордкреАрдИрдЬреА-рдЯреАрдПрд╕ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╕реАрдорд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЕрдзрд┐рдХ рдЖрдзреБрдирд┐рдХ mp4 рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
MPEG-DASH рдХрд╛ рдХреНрдпрд╛ рдлрд╛рдпрджрд╛ рд╣реИ? рдореБрдЦреНрдп рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рддрдХрдиреАрдХ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЖрдЬ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЬреЛ рдПрдХ рднрд╛рд░реА рдФрд░ рдЙрдмрд╛рдК рдлреНрд▓реИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рд╡реАрдбрд┐рдпреЛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдордкреАрдмреА-
рдбреАрдПрдПрд╕рдПрдЪрдмреАрдЯреАрд╡реА рдорд╛рдирдХ рдХреЗ рддрд╣рдд рдирдП рдЯреАрд╡реА рдореЙрдбрд▓ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИред
рдЗрд╕рдХреЗ рдмрд╛рдж, рдореИрдВ рд╕реНрд╡рдпрдВ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд
рдХрд░реВрдВрдЧрд╛ рдФрд░
рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ
nginx- rtmp- рдореЙрдбреНрдпреВрд▓ рдФрд░
dash.js. рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд▓рд╛рдЗрд╡ рдкреНрд░рд╕рд╛рд░рдг рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛
рдЬрд╛рдПредрдШреЛрд╖рдгрд╛рдкрддреНрд░
MPEG-DASH рдореЗрдирд┐рдлрд╝реЗрд╕реНрдЯ XML рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╣реИред рдЗрд╕рдХреЗ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдорд╛рдирдХ рдЖрдИрдПрд╕рдУ / рдЖрдИрдИрд╕реА 23009-1: 2012 рдореЗрдВ рджрд┐рдП рдЧрдП рд╣реИрдВред рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдореЗрдВ рдПрдХ рдЬрдЯрд┐рд▓ рдкреНрд░рд╛рд░реВрдк рд╣реЛрддрд╛ рд╣реИ; рдпрд╣ рд╕рдордпрд╛рд╡рдзрд┐, рд╕рдордп рдХреА рд╢рд┐рдлреНрдЯ, рдкреНрд░рд╡рд╛рд╣ рдХрд╛ рд╡рд░реНрдгрди, рдЕрдВрдХрди рдХреЗ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдирд┐рд░рдВрддрд░ рдСрдбрд┐рдпреЛ рдФрд░ рд╡реАрдбрд┐рдпреЛ рдЪреИрдирд▓реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреНрд░реАрдо рдХреЗ рд▓рд╛рдЗрд╡ рдкреНрд░рд╕рд╛рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рд╕реАрдорд┐рдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
- рд╡реАрдбрд┐рдпреЛ рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ - рдЖрдХрд╛рд░, рдПрдлрдкреАрдПрд╕, рдХреЛрдбреЗрдХ, рд╕реНрдЯреНрд░реАрдо рдЪреМрдбрд╝рд╛рдИ
- рдСрдбрд┐рдпреЛ рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ - рдЖрд╡реГрддреНрддрд┐, рдХреЛрдбреЗрдХ, рд╕реНрдЯреНрд░реАрдо рдЪреМрдбрд╝рд╛рдИ
- рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдСрдбрд┐рдпреЛ рдФрд░ рд╡реАрдбрд┐рдпреЛ рдЯреБрдХрдбрд╝реЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ
- рдзрд╛рд░рд╛ рдЕрдВрд╢реЛрдВ рдХреЛ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ
рдЙрджрд╛рд╕реАрди рдЙрджрд╛рд╣рд░рдг<?xml version="1.0"?> <MPD type="dynamic" xmlns="urn:mpeg:dash:schema:mpd:2011" availabilityStartTime="2013-11-27T12:40:35+04:00" availabilityEndTime="2013-11-27T12:41:08+04:00" minimumUpdatePeriod="PT5S" minBufferTime="PT5S" timeShiftBufferDepth="PT0H0M0.00S" suggestedPresentationDelay="PT10S" profiles="urn:mpeg:dash:profile:isoff-live:2011"> <Period start="PT0S" id="dash"> <AdaptationSet segmentAlignment="true" maxWidth="768" maxHeight="576" maxFrameRate="24"> <Representation id="video" mimeType="video/mp4" codecs="avc1.42c028" width="768" height="576" frameRate="24" sar="1:1" startWithSAP="1" bandwidth="641000"> <SegmentTemplate presentationTimeOffset="0" timescale="1000" media="mystream-$Time$.m4v" initialization="mystream-init.m4v"> <SegmentTimeline> <S t="0" d="5888"/> <S t="5888" d="6760"/> <S t="12648" d="6000"/> <S t="18648" d="8680"/> <S t="27328" d="6545"/> </SegmentTimeline> </SegmentTemplate> </Representation> </AdaptationSet> <AdaptationSet segmentAlignment="true"> <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="1"/> <Representation id="audio" mimeType="audio/mp4" codecs="mp4a.40.2" audioSamplingRate="48000" startWithSAP="1" bandwidth="125000"> <SegmentTemplate presentationTimeOffset="0" timescale="1000" media="mystream-$Time$.m4a" initialization="mystream-init.m4a"> <SegmentTimeline> <S t="0" d="5888"/> <S t="5888" d="6760"/> <S t="12648" d="6000"/> <S t="18648" d="8680"/> <S t="27328" d="6545"/> </SegmentTimeline> </SegmentTemplate> </Representation> </AdaptationSet> </Period> </MPD>
рдЯреБрдХрдбрд╝реЗ
рдПрдордкреАрдИрдЬреА-рдбреИрд╢ рд╕реНрдирд┐рдкреЗрдЯреНрд╕ mp4 рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпреЗ рдмрд┐рд▓реНрдХреБрд▓ mp4 рдирд╣реАрдВ рд╣реИрдВ рдЬреЛ рд╣рдо рдЖрдорддреМрд░ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдпреЗ рдЦрдВрдбрд┐рдд mp4 рд╣реИрдВред рдПрдХ рдирд┐рдпрдорд┐рдд mp4 рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рджреЛ рдореБрдЦреНрдп рднрд╛рдЧ рд╣реЛрддреЗ рд╣реИрдВ - рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдФрд░ рдбреЗрдЯрд╛ред рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЛ
mdat
рдкрд░рдорд╛рдгреБ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдбреЗрдЯрд╛ рдХреЛ
mdat
рдкрд░рдорд╛рдгреБ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдкреНрд░рддреНрдпреЗрдХ рдирдореВрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк, рдЕрд╡рдзрд┐, рдЖрдХрд╛рд░, рдлрд╝рд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдСрдлрд╕реЗрдЯ рдЖрджрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛,
moov
рдХреЛрдбреЗрдХреНрд╕ рдФрд░ рдХреЛрдбреЗрдХ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдПрдХ рдмреНрд▓реЙрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд┐рдирд╛ рд╕реНрдЯреНрд░реАрдо рдбрд┐рдХреЛрдбрд┐рдВрдЧ рдЕрд╕рдВрднрд╡ рд╣реИред
рдЦрдВрдбрд┐рдд mp4 рдХреЛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
moov
рдкрд░рдорд╛рдгреБ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рд╕реНрдЯреНрд░реАрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЗрд╡рд▓ рд╕рд╛рдорд╛рдиреНрдп рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИ - рдХреЛрдбреЗрдХ рдкреИрд░рд╛рдореАрдЯрд░, рд╡реАрдбрд┐рдпреЛ рдЖрдХрд╛рд░, рдСрдбрд┐рдпреЛ рд╕реИрдВрдкрд▓, рдЖрджрд┐ред рдкреНрд░рддреНрдпреЗрдХ рдЯреБрдХрдбрд╝рд╛, рдмрджрд▓реЗ рдореЗрдВ, рджреЛ рдкрд░рдорд╛рдгреБ рд╣реЛрддреЗ рд╣реИрдВ -
moof
рдФрд░
mdat
ред рдЗрд╕ рдЦрдВрдб рдореЗрдВ рд╕рдорд╛рд╣рд┐рдд рдЦрдВрдб рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдкрд░рдорд╛рдгреБ рдХреЗ рдирдореВрдиреЛрдВ рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдореВрдл рдкреНрд░рд╛рд░реВрдк рдореЛрд╡ рд╕реЗ рдмрд╣реБрдд рдЕрд▓рдЧ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреЛрдбреЗрдХ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ mp4 рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рдЦреЗрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╕рд░реНрд╡рд░ рдкрд░ MPEG-DASH
рд╕рдВрд╕реНрдХрд░рдг 1.0.8 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░,
nginx-rtmp- рдореЙрдбреНрдпреВрд▓ MPEG-DASH рдореЗрдВ рд▓рд╛рдЗрд╡ рд╕реНрдЯреНрд░реАрдо рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдПрдЪрдПрд▓рдПрд╕ рдореЗрдВ рдкреНрд░рд╕рд╛рд░рдг рдХреЗ рд╕рдорд╛рди рд╣реЛрддрд╛ рд╣реИред рдбреИрд╢ рдЯреБрдХрдбрд╝реЗ рдФрд░ рдПрдХ рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рд╣реИрдВред рдкреБрд░рд╛рдиреЗ рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдирдП рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ, рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рдЕрдкрдбреЗрдЯ рдХреА рдЬрд╛рддреА рд╣реИред
--add-module
рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде nginx рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ
--add-module
рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ
./configure --add-module=/path/to/nginx-rtmp-module ...
рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рдмрд╛рдж, рдПрдордкреАрдИрдЬреА-рдбреИрд╢ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
rtmp { server { listen 1935;
рдпрд╣рд╛рдБ рдПрдХ рдПрдордкреАрдИрдЬреА-рдбреИрд╢ рд╕реНрдЯреНрд░реАрдо рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдЬрд┐рд╕реЗ
mystream
рдХрд╣рд╛ рдЬрд╛рддрд╛
mystream
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ MPEG-DASH
рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдордкреАрдИрдЬреА-
рдбреАрдПрдПрдЪрдПрд╕ рдЦреЗрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдЯреВрд▓
рдбреИрд╢.рдЬреЗрдПрд╕ рдкреНрд▓реЗрдпрд░ рд╣реИ, рдЬреЛ рдПрдордкреАрдИрдЬреА-рдбреАрдПрдПрд╕рдПрдЪ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рд╕рдВрджрд░реНрдн рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ рдФрд░
рдбреАрдПрдПрдЪрдПрд╕ рдЗрдВрдбрд╕реНрдЯреНрд░реА рдлреЛрд░рдо рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдорд░реНрдерди
рдореАрдбрд┐рдпрд╛ рд╕реНрд░реЛрдд рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдлрд┐рд▓рд╣рд╛рд▓, рдЦрд┐рд▓рд╛рдбрд╝реА рд╕реНрдерд┐рд░ рд╡реАрдбрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдЕрднреА рднреА рд▓рд╛рдЗрд╡ рд╕реНрдЯреНрд░реАрдо рдЦреЗрд▓рдиреЗ рдореЗрдВ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдХреНрд░реЛрдо рдореЗрдВ рд▓рд╛рдЗрд╡ рдкреНрд░рд╕рд╛рд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдПрдХ рд╕рдВрд╢реЛрдзрд┐рдд рд╕рдВрд╕реНрдХрд░рдг
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ
рдореЗрд░реЗ рдХрд╛рдВрдЯреЗ рдХреЗ live
рдмреНрд░рдВрдЪ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рд▓реЗрдЦрдХреЛрдВ рдиреЗ рдЕрдЧрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд▓рд╛рдЗрд╡ рдкреНрд░рд╕рд╛рд░рдг рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ред
рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдХрд╛рдВрдЯрд╛ рд╕реЗ рдбреИрд╢ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
рд╕рдВрдкрд╛рджрдХ рдореЗрдВ baseline.html рдЦреЛрд▓реЗрдВ рдФрд░ рдорд╛рдирдХ url рд╡рд╛рд▓реА рд▓рд╛рдЗрди рдвреВрдВрдвреЗрдВ
url = "http://dash.edgesuite.net/envivio/dashpr/clear/Manifest.mpd",
рд╣рдорд╛рд░реЗ рдпреВрдЖрд░рдПрд▓ рдХреЗ рд╕рд╛рде рдмрджрд▓реЗрдВ
url = "http://localhost:8080/dash/mystream.mpd".
рдбреИрд╢рдмреЛрд░реНрдб рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП nginx рдореЗрдВ рд╕реНрдерд╛рди рдЬреЛрдбрд╝реЗрдВред рдЯреЗрд╕реНрдЯ рдкреЗрдЬ рд╕рд╣рд┐рдд
location /dash.js { root /var/www; }
рдЕрдм рдорд┐рд╕реНрдЯреНрд░реАрдо рдирд╛рдордХ рдкреНрд░рд╕рд╛рд░рдг рд╢реБрд░реВ рдХрд░реЗрдВ
ffmpeg -re -i ~/Videos/sintel.mp4 -c:v libx264 -profile:v baseline -c:a libfaac -ar 44100 -ac 2 -f flv rtmp://localhost/myapp/mystream
рдЗрд╕рдХреЗ рдмрд╛рдж,
http://localhost:8080/dash.js/baseline.html
рдкреЗрдЬ рдкрд░ рдмреНрд░рд╛рдЙрдЬрд░ рдкрд░
http://localhost:8080/dash.js/baseline.html
ред рдпрд╣рд╛рдВ, рдЖрдкрдХреЛ рд╢рд╛рдпрдж рдХреБрдЫ рд╕реЗрдХрдВрдб рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯ рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рди рдмрдиреЗ рдФрд░ рдкреЗрдЬ рд░реАрдлреНрд░реЗрд╢ рди рд╣реЛ рдЬрд╛рдПред
рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ
рдПрдордкреАрдИрдЬреА-рдбреИрд╢ рдХреЗ рд▓рд┐рдП рдбреИрд╢.рдЬреЗрдПрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ
рдореАрдбрд┐рдпрд╛ рд╕реНрд░реЛрдд рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдПрдкреАрдЖрдИ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрди рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ рд╕реБрдзрд╛рд░ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рднреА рд╕рд╣реА рдирд╣реАрдВ рд╣реИред
- рдХреНрд░реЛрдо (рдПрдВрдбреНрд░реЙрдЗрдб 4.2 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рдореЛрдмрд╛рдЗрд▓ рд╕рд╣рд┐рдд) - рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рд╣реИ
- IE - рд╡рд┐рдВрдбреЛрдЬ 8 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг 11 рд╕реЗ рд╕рдорд░реНрдерд┐рдд рд╣реИ
- рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ - рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИред рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдорд╣реАрдиреЛрдВ рдореЗрдВ рдореАрдбрд┐рдпрд╛ рд╕реНрд░реЛрдд рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХрд╛ рд╡рд╛рджрд╛ рдХрд░рддреЗ рд╣реИрдВ
- рд╕рдлрд╝рд╛рд░реА - рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, Safari рдПрдХрдорд╛рддреНрд░ рдбреЗрд╕реНрдХрдЯреЙрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╣реИ рдЬреЛ HLS рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред