我正在开发一个音频应用程序,在这个应用程序中,我一次下载所有的音频文件,然后使用expo库播放它们。问题是,当我试图要求音频文件时,我会得到以下错误
Invalid call at line 77: require(audioUrl)
Failed building JavaScript bundle.我知道我们不能动态地要求在反应-本机。我想知道是否有其他的解决方案来播放下载的音频?
需要下载音频文件的函数。
const _loadNewPlaybackInstance = async isPlaying => {
if (playBackInstance != null) {
await playBackInstance.unloadAsync()
await setPlaybackInstance(null)
}
const source = require(audioUrl)
const initialStatus = {
shouldPlay: isPlaying,
volume,
rate: audioRate,
shouldCorrectPitch: true,
pitchCorrectionQuality: Audio.PitchCorrectionQuality.Low
}
const { sound, status } = await Audio.Sound.createAsync(
source,
initialStatus,
_onPlaybackStatusUpdate
)
setPlaybackInstance(sound)
_updateScreenForLoading(false)
}发布于 2019-12-23 10:09:20
您是对的,require用于静态资源,而不是动态资源。根据文档这里,源参数可以是三种类型之一。
{ uri: string, headers?: { [string]: string }, overrideFileExtensionAndroid?: string }的字典,其中有一个网络URL指向网络上的一个媒体文件,
您可以为动态资源使用第一种类型的参数。你会这样做:
const source = { uri: audioUrl },其中audioUrl也可以是本地资源:file:///path/to/resource
https://stackoverflow.com/questions/59450414
复制相似问题