Я пытаюсь использовать аудиобуфер, состоящий из Float32Array
s (по 1 для каждого канала), в качестве данных актива для создания дорожки soundcloud. Аудиобуфер для монофонической записи выглядит так:
[Float32Array { 0=-0.0001220703125, 1=0.000579833984375, 2=0.000762939453125, ...}]
Поэтому я предполагаю, что мне следует преобразовать его в двоичную строку. Чтобы узнать правильную кодировку, я взглянул на http://connect.soundcloud.com/examples/recording.html Это флеш, но в конце делается следующий пост:
audio.wav
--ievejmnijdgyooinchslwnpygpivapif
Content-Disposition: form-data; name="track[asset_data]"; filename="audio.wav"
Content-Type: application/octet-stream
RIFF(WAVEfmt D¬XdataÚÿÇÿÿ+ÿc]ÿ1&»ÿUÿ(1ÊÿEc&môã...
Чтобы превратить мой аудиобуфер в такой, я использовал код, похожий на https://gist.github.com/kevincennis/9754325, так что теперь мой процесс выглядит так:
worker.onmessage = function( e ) {
var blob = e.data;
var reader = new window.FileReader();
reader.onloadend = function() {
var binaryData = reader.result;
SC.post('/tracks', {
asset_data : binaryData,
title : 'recording'
});
};
reader.readAsText(blob);
});
Тем не менее, должны быть некоторые проблемы с кодировкой. Вышеизложенное создает следующий пост:
_status_code_map[302] 200
asset_data RIFF ���WAVEfmt �����D�������data����
format json
oauth_token 1....
title recording
но ответ Soundcloud API по-прежнему: «NetworkError: 422 Unprocessable Entity — https://api.soundcloud.com/tracks а>"
Кто-нибудь может определить, что не так?