我用React编写了一个客户端。另外,在我的Google Drive上也有一些音乐。我想做一个音乐流媒体服务,在我的Google Drive上不间断地在线播放我的音乐。我是服务器端编程的新手。为了写这样的广播,你建议我读什么或做什么?
发布于 2017-07-13 14:37:21
您可以使用<audio>元素来播放音频媒体。循环媒体回放的一种方法是创建包含到对象内的媒体资源的路径的数组。
在<audio>元素的canplay事件中调用.play()。在ended事件中,返回已解析的Promise。
将数组传递给使用解析的Promise初始化的.reduce()。播放完所有媒体曲目后,使用.then()再次调用函数。
您还可以使用Boolean标志来停止重复调度对同一函数的调用,该函数会循环播放所请求的媒体资源的媒体。
const mediaPlaylist = [{
"track": "https://doc-0c-48-docs.googleusercontent.com/docs/securesc/ha0ro937gcuc7l7deffksulhg5h7mbp1/dhtqfqf4pt2b3kmukb3m1bcqjcsgcu8o/1499925600000/15486589845087228196/*/0B30WhR3Lbl-cQ3NFRzBuVk5KN28",
"title": "Hypnotize U"
}, {
"track": "https://doc-08-48-docs.googleusercontent.com/docs/securesc/ha0ro937gcuc7l7deffksulhg5h7mbp1/1fk2t6ot905rc6fs7ifil1sag5vr5h22/1499925600000/15486589845087228196/*/0B30WhR3Lbl-cR2JEQ3VvT0dxYzQ?e=download",
"title": "Rock Star"
}, {
"track": "https://doc-0c-48-docs.googleusercontent.com/docs/securesc/ha0ro937gcuc7l7deffksulhg5h7mbp1/rmop35nhocd25kroorov3p336f15i9m5/1499925600000/15486589845087228196/*/0B30WhR3Lbl-cU2lsdjVpMTRUcGM?e=download",
"title": "She Want To Move"
}];
const audio = document.querySelector("audio");
const nowPlaying = audio.nextElementSibling;
const mediaTracks = ((promise, {
track,
title
}) =>
promise.then(() => new Promise(resolve => {
audio.src = track;
audio.addEventListener("canplay", event => {
audio.play();
nowPlaying.textContent = title;
}, {
once: true
});
audio.addEventListener("ended", event => {
nowPlaying.textContent = "";
resolve();
}, {
once: true
});
}))
);
let stopMedia = false;
const mediaLoop = (playlist = Array()) =>
!stopMedia
? playlist.reduce(mediaTracks, Promise.resolve())
: Promise.resolve("media loop stopped");
const playMedia = () =>
mediaLoop(mediaPlaylist).then(playMedia);
playMedia()
.then(message => console.log(message))
.catch(err => {console.log(err); throw err});<audio controls></audio>Now playing: <label></label>
https://stackoverflow.com/questions/45072205
复制相似问题