如何在 React Native 应用程序中从 URL 播放音频?

问题描述 投票:0回答:4

我一直在尝试在我的 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 的属性“常量”

javascript react-native expo-av react-native-sound
4个回答
1
投票

您可以使用 react-native-track-player 库进行音频播放器。


0
投票

我不确定您的问题是否已解决,但我在您的问题上尝试过一种解决方案,并且在我这边工作正常, 您需要使用 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() 和声音之间有延迟时很有用 实际开始玩就太多了。


0
投票

如果你想做音乐播放器的东西,你可以使用 react-native-sound 或者如果你只想播放基本声音,可以使用 react-native-sound-player


-1
投票

;嗨!尝试使用

expo-av
库:
https://docs.expo.dev/versions/latest/sdk/av/

© www.soinside.com 2019 - 2024. All rights reserved.