В настоящее время я делаю слепое тестовое действие, где я буду воспроизводить случайную музыку, и пользователю придется ее угадывать.Когда он ответил, ему проигрывается другая музыка, пока он не даст 3 ответа, и его оценка будет установлена.
Все работает отлично , когда я использую мой Google Home или Google Assistant для запуска моего приложения.К сожалению, когда я запускаю его в симуляторе Google, каждая воспроизводимая песня будет такой же, как и первая возвращенная (т. Е. Если первая музыка A, 2-я B и 3-я C, симулятор будет играть три раза A вместо этого).A, B, C).
Это известная ошибка с симулятором?
ОБНОВЛЕНИЕ
Это код, который я использую для получениямой mp3.Он хранится на моем сервере, и я получу к нему доступ.
function getRandomMusic(conv) {
return new Promise(resolve => {
let URL = "http://"+VPS+":"+EXPRESS_PORT+"/blindTest";
console.log("URL="+URL);
unirest.get(URL)
.headers({'Accept': 'application/json', 'Content-Type': 'application/json'})
.end(response => {
console.log("Response = "+JSON.stringify(response));
if (response.body && response.body.link) {
const link = response.body.link;
conv.data.artist = response.body.artist;
conv.data.track = response.body.track;
console.log("Link="+link);
conv.ask(new MediaObject({
name: "Musique à deviner",
icon: new Image({
url: "https://cibul.s3.amazonaws.com/event_blind-test-series_291687.jpg"
}),
url: link,
description: "Quel est l'artiste ?"
}));
conv.ask(new Suggestions('Not yet implemented'));
return resolve()
} else {
ask(conv, "La communication avec le serveur distant a échoué.");
return resolve()
}
})
})
}
На стороне сервера я использую ffmpeg, чтобы разделить мой mp3-файл и сохранить только 10 случайных секунд, и сохранить его в другом файле.Ссылка на этот файл 10S отправлена на мои действия.
app.get('/blindTest', function(req, res) {
//Need to download the mp3
//Take a random 10 s
let name = "FullMusic.mp3";
const mp3Duration = require('mp3-duration');
const ffmpeg = require('ffmpeg');
const MongoClient = require('mongodb').MongoClient;
let url = 'URL';
MongoClient.connect(url, function (err, client) {
if (err) {
console.error(err);
}
let db = client.db('DB');
console.log("Connected successfully to database");
let collection = db.collection('COLLECTION');
collection.count(function (err, resultat) {
if (err) console.error(err);
let randNum = Math.floor(Math.random()*resultat);
collection.find().limit(-1).skip(randNum).next(function (err, resu) {
if (err) console.error(err);
client.close();
download(resu.link, name, () => {
console.log("Download complete!");
mp3Duration(name, function (err, duration) {
if (err) console.error(err);
console.log("Le fichier fait "+duration+" s de long.");
try {
new ffmpeg(name, function (err, video) {
if (!err) {
let randStart = Math.floor(Math.random()*(duration - 10));
console.log("RandStart="+randStart+"s");
video.setVideoStartTime(randStart);
video.setVideoDuration(10);
video.addCommand('-y');
video.save('/home/musiques/10sMusic.mp3', function (error, file) {
if (!error) {
console.log('Video file '+file);
res.send({
artist:resu.artist,
track: resu.track,
link:"http://IP+PORT/10sMusic.mp3"
});
fs.unlink(name, () => {
console.log("Delete of "+ name +"complete !");
})
} else {
console.log("ERREUR!!!+"+error);
}
})
} else {
console.error(err);
}
})
} catch (e) {
console.log(e.code);
console.log(e.msg);
}
})
})
})
});
});
});