在使用rn-fetch-blob获取.mp3文件后,我输入了console.log(filePathIos)并获得了如下所示的路径:
我演奏曲目的代码:
let filePathIos = `${fs.dirs.DocumentDir}/${fileName}`;
const thisSong = props.songs[0]
const track = {
id: thisSong.id.toString(),
url: filePathIos,
title: thisSong.title,
artist: "xxx"
}
const togglePlayback = async () => {
setAudioStatus(!AudioStatus)
const currentTrack = await TrackPlayer.getCurrentTrack();
if (currentTrack == null) {
await TrackPlayer.add(track);
await TrackPlayer.play();
} else {
if (AudioStatus) {
await TrackPlayer.play();
} else {
await TrackPlayer.pause();
}
}
}问题是:本地文件下载成功,我可以在本地打开它。但是上面的代码不起作用。当我尝试按下切换按钮时,xcode会显示一些日志:“开始/恢复播放”,但歌曲仍未播放。
如果我试图更改代码中的一小部分内容,请如下所示(将url更改为在线音乐url):
const track = {
id: thisSong.id.toString(),
url: 'https://audio-previews.elements.envatousercontent.com/files/103682271/preview.mp3',
title: thisSong.title,
artist: "xxx"
}然后,这个应用程序就像一个魅力,它可以播放这首歌。
我正在使用这些包来构建应用程序,由于某些特定的原因,我不能升级/降级这些包:
我尝试过却没有运气的事情:
url: filePathIos更改为url: 'file://' + encodeURIComponent(filePathIos)谢谢你的任何想法!
发布于 2020-09-22 10:12:13
好吧找到了。问题是1.2.3版本在Track.swift上有一个错误,这个错误在发展支行上是固定的
func getSourceUrl() -> String {
return url.isLocal ? url.value.path : url.value.absoluteString
}在1.2.3版中是:
func getSourceUrl() -> String {
return url.value.absoluteString
}这样可以防止播放本地文件。
您可以使用"Dev“分支作为解决方案。我会填写一份错误报告。
https://stackoverflow.com/questions/63916223
复制相似问题