рдЖрдИрдУрдПрд╕ рдХреЗ рддрд╣рдд рд╕рдлрд╛рд░реА рдореЗрдВ рдХреИрд╢реНрдб рдСрдбрд┐рдпреЛ рдСрдлрд╝рд▓рд╛рдЗрди рдЦреЗрд▓рдирд╛ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЪреБрдиреМрддреА рд╣реИ, рдЬрд┐рд╕реЗ рдПрдХ
рдЕрдкреНрд░рд╛рдкреНрдп рд▓рдХреНрд╖реНрдп рдорд╛рдирд╛ рдЬрд╛рддрд╛ рдерд╛ред рд▓реЗрдХрд┐рди
рд╡реЗрдм рдСрдбрд┐рдпреЛ рдПрдкреАрдЖрдИ (рдХреЗрд╡рд▓ рд╡реЗрдмрдХреАрдЯ рдЗрдВрдЬрди рдореЗрдВ) рдХреЗ рдЖрдЧрдорди рдХреЗ рд╕рд╛рде, рдпрд╣ рдЖрдЦрд┐рд░рдХрд╛рд░ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдЖрдкрдХреЛ рдЕрднреА рднреА рдХреБрдЫ рдХрджрдо рдЙрдард╛рдиреЗ рд╣реИрдВред
рдмреБрд░реА рдЦрдмрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдЕрднреА рднреА
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдордкреА 3 рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдХреИрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рд╕рд┐рд░реНрдл
XmlHttpRequest
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдиреНрд╣реЗрдВ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВред IOS 6 рдХреЗ рд▓рд┐рдП рд╕рдлрд╛рд░реА рдПрдордкреА 3 рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдХреИрд╢ рдХрд░реЗрдЧреА, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЪреБрдкрдЪрд╛рдк рдЙрдиреНрд╣реЗрдВ рдЦреЗрд▓рдиреЗ рд╕реЗ рдордирд╛ рдХрд░ рджреЗрдВ (рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА!)
рдмреЗрд╕ 64 рдмрдЪрд╛рд╡ рдореЗрдВ рдЬрд╛рддрд╛ рд╣реИ
рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рд╡реЗрдм рдСрдбрд┐рдпреЛ рдПрдкреАрдЖрдИ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ
рдСрдбрд┐рдпреЛ рдмрдлрд░ рдХреЗ рд▓рд┐рдП рд╕реАрдзреА рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЖрдк рдордХреНрдЦреА рдкрд░ рдбреЗрдЯрд╛ рдкреНрд░рд╛рд░реВрдк рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкреНрд▓реЗрдмреИрдХ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рд╡реЗрдм рдСрдбрд┐рдпреЛ рдПрдкреАрдЖрдИ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдПрдХ mp3 рдлрд╝рд╛рдЗрд▓ рдХреЛ рдПрдХ рдмреЗрд╕ 64 рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдПрдирдХреЛрдб рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдлрд┐рд░ рдЗрд╕реЗ
рдРрд░реЗрдмрдлрд╝рд░ рдореЗрдВ рдбреАрдХреЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрдЪреНрдЪреЗ рдСрдбрд┐рдпреЛ рдбреЗрдЯрд╛ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдСрдбрд┐рдпреЛ рдлрд╝рд╛рдЗрд▓ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ
рдЖрдк
OpenSSL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдордкреА 3 рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмреЗрд╕ 64 рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк Mac OS X рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдпрд╣ рдкреНрд░реАрдЗрдВрд╕реНрдЯреЙрд▓реНрдб рд╣реИ, рддреЛ Terminal.app рдЦреЛрд▓реЗрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд░реЗрдВ:
openssl base64 -in [infile] -out [outfile]
рдЕрдкрдиреЗ рдПрдордкреА 3 рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкрде рдХреЗ рд╕рд╛рде [рд╢рд┐рд╢реБ] рдХреЛ рдмрджрд▓реЗрдВ, рдФрд░ рдПрдиреНрдХреЛрдбреЗрдб рдбреЗрдЯрд╛ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрде рдХреЗ рд╕рд╛рде [рд╕рдВрдЧрдарди]ред
рдЖрджреЗрд╢ рдСрдбрд┐рдпреЛ рдлрд╝рд╛рдЗрд▓ рдХреЗ base64 рдПрдиреНрдХреЛрдбреЗрдб рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЛ рдмрдЪрд╛рдПрдЧрд╛ред рдлрд┐рд░ рдЖрдк рдЕрдкрдиреА рдкрд╕рдВрдж рдХреЗ рдХрд┐рд╕реА рднреА рд╡реЗрдм рд╕реНрдЯреЛрд░реЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рдХреИрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рдПрдкреНрд▓реАрдХреЗрд╢рди рдХреИрд╢ ,
рд▓реЛрдХрд▓ рд╕реНрдЯреЛрд░реЗрдЬ рдпрд╛
рд╡реЗрдмрдПрд╕рдХреНрдпреВ )
ArrayBuffer рдореЗрдВ рдмреЗрд╕ 64
Base64 рдХреЛ ArrayBuffer рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред Daniele рдЧреНрдпреБрд░реЗрд░реЛ рдХреЗ
рдмреЗрд╕ 64-рдмрд╛рдЗрдирд░реА.рдЬреЗрдПрд╕ рд╕рдорд╛рдзрд╛рди рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред рдпрд╣ рдПрдХ рдЕрдЪреНрдЫреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдЬреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдмрдирд╛рдИ рдЧрдИ рдереАред рдпрд╣ рдмреЗрд╕ 64 рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ
рдпреВрдВрдЯ 8 рдПрд░реЗ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ
ArrayBuffer рдХреЛ рдмрдЪрд╛рддрд╛ рд╣реИред
рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдк рд╡реЗрдм рдСрдбрд┐рдпреЛ рдПрдкреАрдЖрдИ рд╕реЗ
decodeAudioData()
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЗрд╡рд▓ рдСрдбрд┐рдпреЛ рдбреЗрдЯрд╛ рдХреЛ рдбреАрдХреЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
var buff = Base64Binary.decodeArrayBuffer(sound); myAudioContext.decodeAudioData(buff, function(audioData) { myBuffer = audioData; });
рдСрдбрд┐рдпреЛ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдХреЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕реЗ рдСрдбрд┐рдпреЛ рдмрдлрд░ рдореЗрдВ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░реЗрдВ рдФрд░ рд╕рд╛рдЙрдВрдб рдкреНрд▓реЗ рдХрд░реЗрдВ:
mySource = myAudioContext.createBufferSource(); mySource.buffer = myBuffer; mySource.connect(myAudioContext.destination); mySource.noteOn(0);
рдбреЗрдореЛ рдФрд░ рд╕реНрд░реЛрдд рдХреЛрдб
рдЗрд╕ рдЖрд▓реЗрдЦ рд╕реЗ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП
рдСрдирд▓рд╛рдЗрди рдбреЗрдореЛ рдФрд░
рд╕реНрд░реЛрдд рдХреЛрдб рджреЗрдЦреЗрдВред
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рд╕рдорд░реНрдерди
рдЖрдИрдУрдПрд╕ 6 рдХреЗ рддрд╣рдд рд╕рдлрд╛рд░реА 6, рдХреНрд░реЛрдо рдбреЗрд╕реНрдХрдЯреЙрдк рдФрд░ рд╕рдлрд╛рд░реА рдХреЗ рддрд╣рдд рдкреНрд░рд╕реНрддреБрдд рдбреЗрдореЛ рдХрд╛рд░реНрдпред рддрдХрдиреАрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддреА рд╣реИ рдЬреЛ рд╡реЗрдм рдСрдбрд┐рдпреЛ рдПрдкреАрдЖрдИ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХреНрд░реЛрдо рдореЛрдмрд╛рдЗрд▓ рдЬрд▓реНрдж рд╣реА рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред
рдлрд┐рд▓рд╣рд╛рд▓, W3C
рдорд╛рдирдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реЗрдм рдСрдбрд┐рдпреЛ рдПрдкреАрдЖрдИ
рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗ рд░рд╣рд╛ рд╣реИред