'uri.match' 未定义试图将音频文件插入视频源

'uri.match' is undefined trying to require audio file into video source

这是我围绕这个 <Video /> 元素编写的代码

class Menu extends Component {
    ...
    audioFile = null
    componentWillMount(){
        this.audioFile = require('../../assets/audio/subtle.mp3');
    }
}

<Video source={{uri: this.audioFile}}   // Can be a URL or a local file.
  ref={(ref) => {
    this.player = ref
  }}
  onError={this.audioError} 
  audioOnly
  style={styles.backgroundVideo}
  playInBackground
  playWhenInactive
  ignoreSilentSwitch={"ignore"}  
/>

我得到的具体错误是...

TypeError: uri.match is not a function. (In 'uri.match(/^\//)', 'uri.match' is undefined)

这是版本

expo: 30.0.0

expokit: 1.7.1

react: 16.3.1

react-native: https://github.com/expo/react-native/archive/sdk-30.0.0.tar.gz

react-native-video: 3.2.1

我正在尝试从此处的本地包加载音频资产,但我似乎无法让它工作,如果我从该文件夹中删除音频文件,它会抛出一个错误,它不能找到它,所以肯定能找到文件。

希望得到一些帮助

我找到了解决方案。变量 audioFile 本身包含 uri 键。

所以

<Video source={{uri: this.audioFile}}   // Can be a URL or a local file.
  ...
  ...
/>

试试这个:

<Video source={this.audioFile}   // Can be a URL or a local file.
  ...
  ...
/>

请注意,我直接将 this.audioFile 传递给了源。

更重要的是,要显示视频,你必须传递高度和宽度。

这就是它在我的用例中起作用的原因

<Video source={require('../../assets/audio/file.mp3')} ... />