рдХрдИ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдПрдЪрдЯреАрдПрдордПрд▓ 5 рд╕рдорд░реНрдерди рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рд╕рд╛рде, рд╡реАрдбрд┐рдпреЛ рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реАрдбрд┐рдпреЛ рдкреНрд▓реЗрдпрд░ рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛрдбреЗрдХреНрд╕ рдФрд░ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реЗрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕рдорд░реНрдерди http://diveintohtml5.org/video.html#what-works рдкрд░ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд░реНрдгрд┐рдд рд╣реИред
рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ Apple рдЙрдкрдХрд░рдгреЛрдВ (iPhone, iPad, iPod) рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдерд╛ред рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдпреЗ рдЙрдкрдХрд░рдг рдПрдХрд▓ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдСрдирд▓рд╛рдЗрди рд╡реАрдбрд┐рдпреЛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ - MP4 рдФрд░ рдПрдХ рдлрд╝реНрд▓реИрд╢ рдкреНрд▓реЗрдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕реЗ рд╢реБрд░реВ рдореЗрдВ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ MP4 рдХрдВрдЯреЗрдирд░ (H.264 рд╡реАрдбрд┐рдпреЛ рдФрд░ AAC рдСрдбрд┐рдпреЛ) рд▓реЗрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЬрдм рдПрдиреНрдХреЛрдбрд┐рдВрдЧ, рдЗрди рдХреЛрдбреЗрдХреНрд╕ libx264 рдФрд░ libfaac рдХреЗ рдореБрдлреНрдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд╝реНрд▓реИрд╢ рдкреНрд▓реЗрдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреНрдп рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдЗрди рдкреНрд░рд╛рд░реВрдкреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреА рдХрдореА рдХреЗ рд▓рд┐рдП рдХреНрд╖рддрд┐рдкреВрд░реНрддрд┐ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡реАрдбрд┐рдпреЛ рдЯреИрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╛ MP4 рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╡реАрдбрд┐рдпреЛ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рд╕рдорд░реНрдерди рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред
рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░
рдкреНрд░рдгрд╛рд▓реА рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ 2 рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд░реНрд╡рд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
- рд░реВрдкрд╛рдВрддрд░рдг рд╕рд░реНрд╡рд░ (рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░ рдФрд░ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ);
- рдлрд╝рд╛рдЗрд▓ рд╕рд░реНрд╡рд░ рдЬрд┐рд╕рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╡реАрдбрд┐рдпреЛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕рд╛рдордЧреНрд░реА рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдлрд╝рд╛рдЗрд▓ рд╕рд░реНрд╡рд░ рд╣реИрдВред рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рд╡реАрдбрд┐рдпреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ рд▓реЛрдб рдХреВрдж рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рдмрд╛рдж рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдореБрдЦреНрдп рд╕рд░реНрд╡рд░ рд╕реЗ рдлрд╝рд╛рдЗрд▓ рд╕рд░реНрд╡рд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реИред рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡реАрдбрд┐рдпреЛ рдХреНрд▓рд┐рдк рдХрд┐рд╕ рд╕рд░реНрд╡рд░ рдкрд░ рд╕реНрдерд┐рдд рд╣реИ, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд▓рд┐рдВрдХрд┐рдВрдЧ рдЯреЗрдмрд▓ videos_servers рд╣реИред рд╡реАрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдХреЛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореЙрдбреНрдпреВрд▓ рд╕рднреА рдлрд╝рд╛рдЗрд▓ рд╕рд░реНрд╡рд░ рдФрд░ рд░реВрдкрд╛рдВрддрд░рдг рд╕рд░реНрд╡рд░ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдирдПрдлрдПрд╕ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд░реВрдкрд╛рдВрддрд░рдг рдХрддрд╛рд░ рдмреАрдирд╕реНрдЯреЙрдХ рдХрддрд╛рд░ рд╕рд░реНрд╡рд░ ( http://kr.github.com/beanstalkd/ ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдпреЛрдЬрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рдЯреЗрд╕реНрдЯ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ 30 рдХрд░реНрдордЪрд╛рд░реА рдЫрд╣-рдХреЛрд░ рд╕рд░реНрд╡рд░ рдкрд░ рдЪрд▓ рд╕рдХрддреЗ рд╣реИрдВред 30 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рд╕рд╛рде рд╕рдордЧреНрд░ рдкреНрд░рдгрд╛рд▓реА рдкреНрд░рджрд░реНрд╢рди рд╕реЗ рд╕рдордЭреМрддрд╛ рдХрд┐рдП рдмрд┐рдирд╛ рд╡реАрдбрд┐рдпреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рд╡реЗрдм тАЛтАЛрд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░ рдкреЗрдЬ рдкреАрдврд╝реА рдХрд╛ рд╕рдордп рд╕реНрд╡реАрдХрд╛рд░реНрдп рд░рд╣рддрд╛ рд╣реИ)ред рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рдереЗ, рд▓реЗрдХрд┐рди рд╢рдХреНрддрд┐ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдорд╛рд░реНрдЬрд┐рди рд╣реИ рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рд╢реНрд░рдорд┐рдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИред
рд╕рд░реНрд╡рд░ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░
рдбреЗрдмрд┐рдпрди рд▓реЗрдиреА рд░реВрдкрд╛рдВрддрд░рдг рд╕рд░реНрд╡рд░ рдФрд░ рд╕рднреА рдлрд╝рд╛рдЗрд▓ рд╕рд░реНрд╡рд░ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рд╣реИред
рд╡реАрдбрд┐рдпреЛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕реЙрдлреНрдЯрд╡реЗрдпрд░
рд╡реАрдбрд┐рдпреЛ рдХреЛ MP4 рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рд╕рдордп рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - ffmpeg ( http://www.ffmpeg.org/ )ред ffmpeg рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рд╛рд░реВрдкреЛрдВ рдореЗрдВ рд╡реАрдбрд┐рдпреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдорд▓реНрдЯреА-рдХреЛрд░ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХрдИ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдкреЛрд╕реНрдЯ-рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, рд╣рдо gpac рдкреИрдХреЗрдЬ ( http://gpac.sourceforge.net/ ) рд╕реЗ рдЕрджреНрднреБрдд MP4Box рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдкреЛрд╕реНрдЯ-рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ ffmpeg "moov-atoms" (рд╡реАрдбрд┐рдпреЛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрдЯрд╛-рдЬрд╛рдирдХрд╛рд░реА) рд░рдЦрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓реЛрдб рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд┐рдП рдмрд┐рдирд╛ рд╡реАрдбрд┐рдпреЛ рджреЗрдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрди рдкрд░рдорд╛рдгреБрдУрдВ рдХреЛ рдлрд╝рд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред MP4Box рдЙрдиреНрд╣реЗрдВ рд╢реБрд░реБрдЖрдд рдореЗрдВ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ рдФрд░, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рднреА рдорд╛рдирдХреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдлрд╝рд╛рдЗрд▓ рд▓рд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдпрд╣ рд╕рдВрдмрдВрдзрд┐рдд рдореЙрдбреНрдпреВрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реЛрддрд╛ рд╣реИред
$ ffmpeg -vpre videobam -y -i input.avi -s 320x240 -vcodec libx264 -acodec libfaac -threads 0 -ab 64k -b 400k -bt 500k -g 24 -r 24 temp.mp4 $ MP4Box -add temp.mp4 output.mp4
рдиреЛрдЯ -g 24 рд╡рд┐рдХрд▓реНрдкред рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдирдП рдХреАрдлрд╝реНрд░реЗрдо рдХреЛ рдХрд┐рддрдиреЗ рдлрд╝реНрд░реЗрдо рд╕рд╣реЗрдЬреЗ рдЬрд╛рдПрдВрдЧреЗред рдХреБрдВрдЬреА рдлрд╝реНрд░реЗрдо рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓реЛрдб рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рд▓рдВрдмреЗ рд╡реАрдбрд┐рдпреЛ рдХреЛ рд╕реНрдХреНрд░реЙрд▓ рдХрд░ рд╕рдХреЗред рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдЕрдиреБрд╡рд╛рдж рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рдХреНрд▓рд╛рдЗрдВрдЯ (рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдпрд╛ рдлрд╝реНрд▓реИрд╢ рдкреНрд▓реЗрдпрд░) рд╕реНрдЯрд╛рд░реНрдЯ-рдЕрдк GET рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬрддрд╛ рд╣реИ, рдЬреЛ рдЕрдиреБрд╡рд╛рдж рдореЙрдбреНрдпреВрд▓ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕реЗрдХрдВрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рдЬрд┐рд╕рд╕реЗ рдкреНрд▓реЗрдмреИрдХ рд╢реБрд░реВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
GET /output.mp4?start=856.733 HTTP / 1.1
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, -рдереНрд░реЗрдбреНрд╕ 0 рдкреИрд░рд╛рдореАрдЯрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реБрдП рд░реВрдкрд╛рдВрддрд░рдг рдХреА рдЧрддрд┐ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХрд░реЗрдЧрд╛ ред рдлреНрд░реЗрдо рдХреА рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ -r 24 ред рд╣рдореЗрдВ рдХреБрдЫ рд╡реАрдбрд┐рдпреЛ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг рдЕрдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдлреНрд░реЗрдо рдХреА рдЙрдЪреНрдЪ рд╕рдВрдЦреНрдпрд╛ (рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╕реНрдХреНрд░реИрдирд╛рд╕реНрдЯ) рдереА, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╡реАрдбрд┐рдпреЛ рдХреА рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рд░реВрдкрд╛рдВрддрд░рдг рдХрд╛ рд╕рдордп рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдЪрд┐рдд рдерд╛ред
рдкреНрд░рддреНрдпреЗрдХ рд╡реАрдбрд┐рдпреЛ рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рд╕рдордп рдореЗрдВ рд╕реНрдХреНрд░реАрди рд╢реЙрдЯреНрд╕ рд▓рд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡реАрдбрд┐рдпреЛ рдХреА рд╕рд╛рдордЧреНрд░реА рдкрд░ рдЬрд▓реНрджреА рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓ рд╕рдХреЗред рдЗрд╕ рддрд░рд╣ рдХреА рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдиреАрдЪреЗ http://videobam.com/tour рдкрд░ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред ffmpeg рдЗрди рддрд╕реНрд╡реАрд░реЛрдВ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рд▓реЗрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ (рд╡рд╣ рд╡реАрдбрд┐рдпреЛ рдХреЛ рд╕рд╣реА рд╕рдордп рдкрд░ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реИ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рддрд╕реНрд╡реАрд░ рд▓реЗрддрд╛ рд╣реИ)ред рдЬрд▓реНрджреА рд╕реЗ рддрд╕реНрд╡реАрд░реЗрдВ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо mplayer рдпреВрдЯрд┐рд▓рд┐рдЯреА ( http://www.mplayerhq.hu/ ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдореБрдЦреНрдп рдлрд╝реНрд░реЗрдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рдЧрднрдЧ рддреБрд░рдВрдд рдЪрд┐рддреНрд░ рд▓реЗ рд░рд╣рд╛ рд╣реИред
$ mplayer -ss 00:00:04 -sstep 12 -рдлреЙрд░реНрдореНрд╕ 16 -vo jpeg: outirir / / tmp / Pictures / -nosound output.mp4
рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╕рднреА рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕реНрд░реЛрдд рдХреЛрдб рд╕реЗ рдЗрдХрдЯреНрдареЗ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ (рдЗрд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рд╕реЗ рдХреНрд▓реЛрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рддрд╛рдЬрд╛ рдмрд┐рд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рд╕реНрдерд┐рд░ рд╢рд╛рдЦрд╛рдУрдВ рд╕реЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рддрдХ рдпреЗ рдлрд┐рдХреНрд╕реЗрд╕ рдЖрдкрдХреЗ рд▓рд┐рдирдХреНрд╕ рд╡рд┐рддрд░рдг рдХреЗ рдкреИрдХреЗрдЬ рдореЗрдВ рдирд╣реАрдВ рдЖрддреЗ рд╣реИрдВ, рддрдм рддрдХ рдмрд╣реБрдд рд╕рдордп рдмреАрдд рдЬрд╛рддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╣рдордиреЗ рдХреБрдЫ рдХреНрд╡рд┐рдХ рдХреНрд▓рд┐рдк рдХреЛ MP4 рдлреЙрд░реНрдореЗрдЯ рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдХрд░рддреЗ рд╕рдордп рд╣рдХрд▓рд╛рдиреЗ рд╡рд╛рд▓реА рдзреНрд╡рдирд┐ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ред рдирд╡реАрдирддрдо рд▓реАрдлрд╝рд╛рдлрд╝реЗрдХ рдФрд░ рд▓реАрдмрдлрд╛рдб рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рд╕рд░реНрд╡рд░ рдореЙрдбреНрдпреВрд▓
рдиреЛрдЯ: h264 рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреИрдЪ http://pastie.org/1405286 рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИред
$ cd nginx-0.8.53 $ ./configure --add-рдореЙрдбреНрдпреВрд▓ = .. / nginx_mod_h264_streaming-2.2.7 / --add-рдореЙрдбреНрдпреВрд▓ = .. / ngx_http_secure_download /
рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рд╡реАрдбрд┐рдпреЛ n2x рд╡реЗрдм рд╕рд░реНрд╡рд░ ( http://h264.code-shop.com/ ) рдХреЗ рд▓рд┐рдП h264 рдореЙрдбреНрдпреВрд▓ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ:
/usr/local/nginx/conf/nginx.conf
рд╕реНрдерд╛рди ~ \ .mp4 $ { mp4; }
рд╣рдо рд╕рд░реНрд╡рд░ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рддреЗ рд╣реИрдВ рдФрд░ 10 рд╡реЗрдВ рд╕реЗрдХрдВрдб рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╡реАрдбрд┐рдпреЛ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ:
$ wget -O temp.mp4 "http://videobam.com/test.mp4?start=10.0"
рдХреЙрдкреА рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓рд┐рдВрдХ (рд╣реЙрдЯрд▓рд┐рдВрдХрд┐рдВрдЧ) рд╕реЗ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо HTTP рд╕рд┐рдХреНрдпреЛрд░ рдбрд╛рдЙрдирд▓реЛрдб рдореЙрдбреНрдпреВрд▓ ( http://github.com/replay/ngx_http_secure_download ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдЖрдкрдХреЛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдирдордХ рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реАрдбрд┐рдпреЛ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдВрдХ рдХреЛ рдПрдирдХреЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
/usr/local/nginx/conf/nginx.conf
рд╕реНрдерд╛рди ~ * / рд╡реАрдбрд┐рдпреЛ { safe_download рдкрд░; Secure_download_path_mode рдлрд╝рд╛рдЗрд▓; safe_download_secret рд╕реЙрд▓реНрдЯрд▓реИрдЯреНрд╕рд╛рд▓реНрдЯ $ Remote_addr; рдЕрдЧрд░ ($ Secure_download = "-1") { rewrite /expired.html рдмреНрд░реЗрдХ; } рдЕрдЧрд░ ($ Secure_download = "-2") { rewrite /bad_hash.html рдмреНрд░реЗрдХ; } рдЕрдЧрд░ ($ Secure_download = "-3") { рд╡рд╛рдкрд╕реА 500; } mp4; rewrite ^ (*ред) / [0-9a-zA-Z] * / [[0-9a-zA-Z] * $ $ 1 рдмреНрд░реЗрдХ; }
рдбрд╛рдЙрдирд▓реЛрдб рд▓рд┐рдВрдХ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ:
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдорд╛рд░реЛрд╣ safe_url ($ url) { $ ts = рд╕рдордп () + 3600; $ ts_in_hex = dechex ($ ts); $ рдЧреБрдкреНрдд = 'рд▓рд╡рдгрд╢рд╛рд▓реНрдЯрд╛рд▓реНрдЯ'ред $ _SERVER ['REMOTE_ADDR']; $ рд╣реИрд╢ = md5 ($ urlред '/'ред $ secretред '/' $ ts_in_hex); $ url рд╡рд╛рдкрд╕ рдХрд░реЗрдВред '/'ред $ рд╣реИрд╢ред '/'ред $ ts_in_hex; }
рдПрдирдПрдлрдПрд╕ рдФрд░ рдСрдЯреЛрдлрд╝реНрд╕
рдлрд╝рд╛рдЗрд▓ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реВрдкрд╛рдВрддрд░рдг рд╕рд░реНрд╡рд░ рдкрд░ рдСрдЯреЛрдлрд╝реЙрд░реНрд╕реН рд╕реНрдерд╛рдкрд┐рдд рд╣реИред рдпрд╣ рдЕрдиреБрд░реЛрдз рдкрд░ рдЖрд╡рд╢реНрдпрдХ рдлрд╝рд╛рдЗрд▓ рд╕рд░реНрд╡рд░реЛрдВ рдХреЛ рдорд╛рдкрддрд╛ рд╣реИред рдлрд╝рд╛рдЗрд▓ рд╕рд░реНрд╡рд░ рд╡рд┐рдлрд▓ рд╣реЛрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА NFS рд╡рд┐рднрд╛рдЬрди рдирд░рдо рдореЛрдб рдореЗрдВ рдорд╛рдЙрдВрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
/etc/auto.storage
0: / var / www / рд╕рд╛рдЭрд╛ / рд╕реНрдерд╛рдиреАрдп_рд╕реНрдЯреЛрд░ 1 -fstype = nfs, rw, async, soft, intr, timeo = 20, rsize = 64000, wsize = 64000 f1.videobam.com:/var/storage 2 -рд╕реНрдЯреЗрдк = nfs, rw, async, soft, intr, timeo = 20, rsize = 64000, wsize = 64000 f2.videobam.com:/var/storage 3 -fstype = nfs, rw, async, soft, intr, timeo = 20, rsize = 64000, wsize = 64000 f3.videobam.com:/var/storage 4 -рд╕реНрдЯрд╛рдЗрдк = nfs, rw, async, soft, intr, timeo = 20, rsize = 64000, wsize = 64000 f4.videobam.com:/var/storage
рд╕рднреА рд╕рд░реНрд╡рд░реЛрдВ рдкрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ рд╕рдорд╛рди рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдкрде рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рд╕рд░реНрд╡рд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рдлрд╝рд╛рдЗрд▓ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдкрд╛рд░рджрд░реНрд╢реА рддрд░реАрдХреЗ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ ext3 рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреА рд╕реАрдорд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╛рдж рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рд╕рднреА рд╡реАрдбрд┐рдпреЛ рдлреЙрд░реНрдо рд╡реАрдбрд┐рдпреЛ / a / ab / video.mp4 рдХреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рд╣реЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ "a" рдФрд░ "ab" рд╡реАрдбрд┐рдпреЛ рдХреЗ рдирд╛рдо рдХреЗ рдкрд╣рд▓реЗ рдЕрдХреНрд╖рд░ рд╣реИрдВред
рдЧреНрд░рд╛рд╣рдХ рднрд╛рдЧ
рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдо HTML5 рд╡реАрдбрд┐рдпреЛ рдЪрд▓рд╛рдиреЗ рдФрд░ рд╕реНрдЯрд╛рдЗрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП VideoJS ( http://videojs.com ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡реАрдбрд┐рдпреЛрдЬреЗрдПрд╕ рдлреНрд▓реИрд╢ рдкреНрд▓реЗрдпрд░ рдХреЛ "рд╕реНрдорд╛рд░реНрдЯ" рд░реЛрд▓рдмреИрдХ рдХрд░рддрд╛ рд╣реИ (рдпрджрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реНрд░реЛрдд рд╕реВрдЪреА рдореЗрдВ рд╡реАрдбрд┐рдпреЛ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ)ред рдПрдХ рдлрд╝реНрд▓реИрд╢ рдкреНрд▓реЗрдпрд░ рдХреЗ рд░реВрдк рдореЗрдВ, flowplayer ( http://flowplayer.org ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╡рд┐рд╖рдпрдЧрдд рд▓рд┐рдВрдХ
рд╕реЙрдлреНрдЯрд╡реЗрдпрд░:
beanstalkd kr.github.com/beanstalkd
VideoJS videojs.com
flowplayer flowplayer.org
ffmpeg www.ffmpeg.org
mplayer www.mplayerhq.hu
gpac (MP4Box) gpac.sourceforge.net
nginx 0.8.53 nginx.org/en
nginx h264 рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ h264.code-shop.com
nginx http рд╕реБрд░рдХреНрд╖рд┐рдд рдбрд╛рдЙрдирд▓реЛрдб github.com/replay/ngx_http_secure_download
nginx рдЕрдкрд▓реЛрдб рдкреНрд░рдЧрддрд┐ рдореЙрдбреНрдпреВрд▓ github.com/masterzen/nginx-upload-progress-gimodule
рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд╛рдордЧреНрд░реА:
diveintohtml5.org/video.html
rob.opendot.cl/index.php/useful-stuff/ffmpeg-x264-encoding-guide
sites.google.com/site/linuxencoding/x264-ffmpeg-mapping
x264dev.multimedia.cx
rodrigopolo.com/ffmpeg/cheats.html
e-mats.org/2010/01/fixing-stuttering-audio-with-ffmpeg-and-quicktime
www.videohelp.com/tools/mp4box