Nginx-rtmp- рдореЙрдбреНрдпреВрд▓ рдореЗрдВ MPEG-DASH: рдлреНрд▓реИрд╢ рдХреЗ рдмрд┐рдирд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд▓рд╛рдЗрд╡ рд╡реАрдбрд┐рдпреЛ

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; #  dash-    /tmp/dash application myapp { live on; dash on; dash_path /tmp/dash; } } } ... http { server { listen 8080; #     location /dash { root /tmp; add_header Cache-Control no-cache; } } } 

рдпрд╣рд╛рдБ рдПрдХ рдПрдордкреАрдИрдЬреА-рдбреИрд╢ рд╕реНрдЯреНрд░реАрдо рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдЬрд┐рд╕реЗ mystream рдХрд╣рд╛ рдЬрд╛рддрд╛ mystream

 #   mystream-init.m4a mystream-init.m4v #   #  : mystream-TIME.mp4X #  TIME-   mystream-0.m4a mystream-0.m4v mystream-5888.m4a mystream-5888.m4v mystream-12648.m4a mystream-12648.m4v mystream-18648.m4a mystream-18648.m4v mystream-27328.m4a mystream-27328.m4v #  () mystream.mpd #      mystream-raw.m4a mystream-raw.m4v 

рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ MPEG-DASH


рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдордкреАрдИрдЬреА- рдбреАрдПрдПрдЪрдПрд╕ рдЦреЗрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдЯреВрд▓ рдбреИрд╢.рдЬреЗрдПрд╕ рдкреНрд▓реЗрдпрд░ рд╣реИ, рдЬреЛ рдПрдордкреАрдИрдЬреА-рдбреАрдПрдПрд╕рдПрдЪ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рд╕рдВрджрд░реНрдн рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ рдФрд░ рдбреАрдПрдПрдЪрдПрд╕ рдЗрдВрдбрд╕реНрдЯреНрд░реА рдлреЛрд░рдо рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдорд░реНрдерди рдореАрдбрд┐рдпрд╛ рд╕реНрд░реЛрдд рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдлрд┐рд▓рд╣рд╛рд▓, рдЦрд┐рд▓рд╛рдбрд╝реА рд╕реНрдерд┐рд░ рд╡реАрдбрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдЕрднреА рднреА рд▓рд╛рдЗрд╡ рд╕реНрдЯреНрд░реАрдо рдЦреЗрд▓рдиреЗ рдореЗрдВ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдХреНрд░реЛрдо рдореЗрдВ рд▓рд╛рдЗрд╡ рдкреНрд░рд╕рд╛рд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдПрдХ рд╕рдВрд╢реЛрдзрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдореЗрд░реЗ рдХрд╛рдВрдЯреЗ рдХреЗ live рдмреНрд░рдВрдЪ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рд▓реЗрдЦрдХреЛрдВ рдиреЗ рдЕрдЧрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд▓рд╛рдЗрд╡ рдкреНрд░рд╕рд╛рд░рдг рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ред

рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдХрд╛рдВрдЯрд╛ рд╕реЗ рдбреИрд╢ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ

 #  dash.js  /var/www cd /var/www git clone https://github.com/arut/dash.js.git cd dash.js git checkout 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 ред рдпрд╣рд╛рдВ, рдЖрдкрдХреЛ рд╢рд╛рдпрдж рдХреБрдЫ рд╕реЗрдХрдВрдб рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯ рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рди рдмрдиреЗ рдФрд░ рдкреЗрдЬ рд░реАрдлреНрд░реЗрд╢ рди рд╣реЛ рдЬрд╛рдПред


рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ


рдПрдордкреАрдИрдЬреА-рдбреИрд╢ рдХреЗ рд▓рд┐рдП рдбреИрд╢.рдЬреЗрдПрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдореАрдбрд┐рдпрд╛ рд╕реНрд░реЛрдд рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдПрдкреАрдЖрдИ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрди рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ рд╕реБрдзрд╛рд░ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рднреА рд╕рд╣реА рдирд╣реАрдВ рд╣реИред

Source: https://habr.com/ru/post/In204666/


All Articles