Обрезка появляется в выводе mp3 из функции request.pipe при выполнении запроса к AVS api

Я разработал nodejs-клиент, который заменяет Javaclient с образцом кода AVS (Alexa Voice Service).

Используемый код выполняет почтовый запрос и направляет вывод mp3 в файл. Но много раз вывод мп3 не полный и ломается с конца, а иногда и с начала. Так, например. желаемая продолжительность mp3-файла составляет 9 секунд, иногда выходной файл имеет длину 8 или 6 секунд или полный 9 секунд.

Его случайное поведение.

Код, используемый для запроса API и перенаправления o/p в файл, приведен ниже. Дайте мне знать, что здесь не так, я новичок в запросе трубопроводов.

var options = {
url: 'https://access-alexa-na.amazon.com/v1/avs/speechrecognizer/recognize',
headers:{
  'Content-Type':'multipart/form-data',
  'Transfer-Encoding':'chunked'
},
formData: formData
};

var destination = fs.createWriteStream(path.join(__dirname,outputfile));

//request.debug = 1;
request.post(options, function optionalCallback(err, httpResponse, body)     {
  //console.log(httpResponse);
  if(body.length < 100){
    console.log(body);
  }
  console.log("\n\r----Processing Done to ("+outputfile+")----");
  if(loadingInt!=null)clearInterval(loadingInt);
  process.exit();
  if (err) {
    return console.error('upload failed:', err);
  }
  //console.log('Upload successful!  Server responded with:', body);
}).auth(null, null, true, token)
.pipe(destination);

Я обсуждал это с ребятами из AVS, но они рассказали о проблеме с кодом и API.


person Sanket Mehta    schedule 07.03.2016    source источник


Ответы (1)


Проблема в вызове process.exit(). Не знаю, зачем это вообще там. Вызов exit иногда выходит из вашего процесса до завершения конвейера.

person Jason Livesay    schedule 07.03.2016
comment
Спасибо, Джейсон, переместил его внутрь destination.on('finish', function(){}); И это исправило ошибку. - person Sanket Mehta; 07.03.2016