首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >音乐流媒体服务

音乐流媒体服务
EN

Stack Overflow用户
提问于 2017-07-13 13:38:23
回答 1查看 155关注 0票数 0

我用React编写了一个客户端。另外,在我的Google Drive上也有一些音乐。我想做一个音乐流媒体服务,在我的Google Drive上不间断地在线播放我的音乐。我是服务器端编程的新手。为了写这样的广播,你建议我读什么或做什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-13 14:37:21

您可以使用<audio>元素来播放音频媒体。循环媒体回放的一种方法是创建包含到对象内的媒体资源的路径的数组。

<audio>元素的canplay事件中调用.play()。在ended事件中,返回已解析的Promise

将数组传递给使用解析的Promise初始化的.reduce()。播放完所有媒体曲目后,使用.then()再次调用函数。

您还可以使用Boolean标志来停止重复调度对同一函数的调用,该函数会循环播放所请求的媒体资源的媒体。

代码语言:javascript
复制
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});
代码语言:javascript
复制
<audio controls></audio>Now playing: <label></label>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45072205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档