JavaScript 音频 Object 如何在单击下一步时播放下一首曲目
JavaScript Audio Object how to play next track on clicking next
我正在制作一个音乐网络应用程序,用户可以在其中加载歌曲或加载一系列音乐。我试图制作一个按钮,用户可以在其中跳过曲目并播放阵列中的下一首曲目。我尝试了自己的方法,实际上效果很好。
这是我的音乐 object:
getNextSong()
{
if(this.songArray && this.i > -1 && this.i<this.songArray.length){
const nextSong = this.songArray[this.i+1]
//this.playSong(nextSong)
return nextSong
}else{
return null
}
}
getPreviousSong()
{
if(this.songArray && this.i > 0 && this.i<this.songArray.length){
const nextSong = this.songArray[this.i-1]
console.log(nextSong)
//this.playSong(nextSong)
return nextSong
}else{
return null
}
}
loadSongs(song, playlist_song = "song")
{
if(playlist_song === "playlist"){
this.songArray = song
song.forEach(song=>{
this.audio.src = song.src.aduioURL
this.audio.load()
})
}else if(playlist_song === "song"){
this.songArray.push(song)
}
}
playSong(song)
{
this.song = song
this.audio.src = song.src.aduioURL
this.play(song)
}
在音频播放器中:
function next(){
const nextSong = song.getNextSong()
if(nextSong)
{
song.playSong(nextSong)
}
}
function previous(){
const previousSong = song.getPreviousSong()
if(previousSong)
{
song.playSong(previousSong)
}
}
它工作得很好,但问题是,我无法 change/skip 从浏览器控制轨道。例如:- 在 soundcloud 和其他应用程序中如果我在移动设备上使用它,那么我可以从我的锁屏上跳过曲目,会有一个小的浏览器音频控件,我们可以从那里跳过它。但是出于某种原因,我无法在我的应用程序中执行此操作。
这是我正在谈论的图片:
声云:
我的应用程序:
如你所见,我无法从这里控制它。在声音云中,我可以更改曲目。在 soundlocud 中,它还显示歌曲的标题,而在我的中它没有,它只显示我的页面的标题。
我正在使用 React 进行开发
请查看 MediaSession 文档
我正在制作一个音乐网络应用程序,用户可以在其中加载歌曲或加载一系列音乐。我试图制作一个按钮,用户可以在其中跳过曲目并播放阵列中的下一首曲目。我尝试了自己的方法,实际上效果很好。
这是我的音乐 object:
getNextSong()
{
if(this.songArray && this.i > -1 && this.i<this.songArray.length){
const nextSong = this.songArray[this.i+1]
//this.playSong(nextSong)
return nextSong
}else{
return null
}
}
getPreviousSong()
{
if(this.songArray && this.i > 0 && this.i<this.songArray.length){
const nextSong = this.songArray[this.i-1]
console.log(nextSong)
//this.playSong(nextSong)
return nextSong
}else{
return null
}
}
loadSongs(song, playlist_song = "song")
{
if(playlist_song === "playlist"){
this.songArray = song
song.forEach(song=>{
this.audio.src = song.src.aduioURL
this.audio.load()
})
}else if(playlist_song === "song"){
this.songArray.push(song)
}
}
playSong(song)
{
this.song = song
this.audio.src = song.src.aduioURL
this.play(song)
}
在音频播放器中:
function next(){
const nextSong = song.getNextSong()
if(nextSong)
{
song.playSong(nextSong)
}
}
function previous(){
const previousSong = song.getPreviousSong()
if(previousSong)
{
song.playSong(previousSong)
}
}
它工作得很好,但问题是,我无法 change/skip 从浏览器控制轨道。例如:- 在 soundcloud 和其他应用程序中如果我在移动设备上使用它,那么我可以从我的锁屏上跳过曲目,会有一个小的浏览器音频控件,我们可以从那里跳过它。但是出于某种原因,我无法在我的应用程序中执行此操作。
这是我正在谈论的图片:
声云:
我的应用程序:
如你所见,我无法从这里控制它。在声音云中,我可以更改曲目。在 soundlocud 中,它还显示歌曲的标题,而在我的中它没有,它只显示我的页面的标题。
我正在使用 React 进行开发
请查看 MediaSession 文档