我一直在尝试在我的 React Native 应用程序中播放 Youtube 视频(或 .mp3 URL)中的音频。出于我的目的,我无法将音频文件下载到我的设备,它们需要从互联网流式传输。我尝试了 Expo AV 和 React-Native-Sound-Player 库,但都无法播放音频。
为了测试我使用的 URL 是:https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3.
当我在 React-Native-Sound-Player 中使用 loadUrl() 函数时,收到一条错误消息“无法读取 null 的属性‘loadUrl’”。播放网址也有同样的问题。
有人有从应用程序中的 URL 流式传输音频的经验吗?还可能吗?
如有任何建议,我们将不胜感激。
使用此代码块将 mp3 文件存储在“currentSong”中会导致错误 [TypeError: Cannot read property 'loadUrl' of null]。
try {
currentSong = SoundPlayer.loadUrl('https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3');
} catch (e) {
console.error(e);
我还尝试使用react-native-video库并使用以下代码无济于事:
<Video source = {{uri: "https://storage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4"}}
ref={(ref) => {
this.player = ref
}} // Store reference
onBuffer={this.onBuffer} // Callback when remote video is buffering
onError={this.videoError} // Callback when video cannot be loaded
style = {styles.video} />
我收到以下错误:TypeError:无法读取 null 的属性“常量”
您可以使用 react-native-track-player 库进行音频播放器。
我不确定您的问题是否已解决,但我在您的问题上尝试过一种解决方案,并且在我这边工作正常, 您需要使用 SoundPlayer.playUrl(url) 而不是 loadUrl()
试试这个:
try {
currentSong = SoundPlayer.playUrl('https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3');
} catch (e) {
console.error(e);
loadUrl() 做了一些与包作者所述不同的事情
loadUrl(url: string) 从给定的 url 加载音频而不播放 它。然后您可以通过调用 play() 来播放音频。这可能是 当您发现调用 playUrl() 和声音之间有延迟时很有用 实际开始玩就太多了。
如果你想做音乐播放器的东西,你可以使用 react-native-sound 或者如果你只想播放基本声音,可以使用 react-native-sound-player
;嗨!尝试使用
expo-av
库:https://docs.expo.dev/versions/latest/sdk/av/