2

我使用世博会的视频组件。我可以播放视频,但在 iOS 中没有声音。在安卓里没问题。我该如何解决。

<Video style={{ width: 340, 
                                height: 220,
                                borderRadius: 10, 
                                overflow: 'hidden' }}
                                posterSource={require('../../assets/loading2.gif')}
                                usePoster={true}
                                rate={1.0}
                                isMuted={false}
                                useNativeControls = {true}
                                volume={1.0}
                                playsInSilentLockedModeIOS ={ true }
                                resizeMode='cover' 
                                shouldPlay={true} 
                                source={{uri : url}} />
4

4 回答 4

4

启用背景音频不是解决方案(特别是如果您使用的是托管的 Expo 项目,而 Xcode 设置并不理想)。我发现当您使用useNativeControls={true}并且不自动播放视频时存在该错误。如果你尝试shouldPlay={true},你应该看到它工作。这不是一个很好的解决方案(自动播放视频是 MySpace 大约 2005 年)。

我通过使用自定义播放按钮在视频屏幕上放置一个覆盖层来修复它。出于某种原因,从视频参考调用播放使用正确的声音配置文件。

  const videoRef = React.useRef<Video>()

  React.useEffect(() => {
    const enableAudio = async () => {
        await Audio.setAudioModeAsync({
        allowsRecordingIOS: false,
        interruptionModeIOS: INTERRUPTION_MODE_IOS_DO_NOT_MIX,
        playsInSilentModeIOS: true,
        staysActiveInBackground: false,
        interruptionModeAndroid: INTERRUPTION_MODE_ANDROID_DO_NOT_MIX,
        shouldDuckAndroid: false,
      })
    }
    enableAudio()
  }, [])

  const play = () => videoRef.current && videoRef.current.playAsync()

  const poster = (
      <View position="absolute" flexible="column-center" bg="transparent">
        <IconButton
          name="play"
          onPress={play}
          size={72}
          iconSize={72}
          bg="transparent"
          iconColor="rgba(255,255,255,0.9)"
        />
      </View>
    )

  return (
    <View>
      <VideoPlayer
        ref={videoRef}
        source={R.is(String, props.asset) ? { uri: props.asset } : props.asset}
        shouldPlay={props.autoPlay !== false}
        useNativeControls={true}
        rate={1.0}
        volume={1.0}
        resizeMode={Video.RESIZE_MODE_CONTAIN}
      />
      <View position="absolute" flexible="column-center" bg="transparent">
        <IconButton
          name="play"
          onPress={play}
          size={72}
          iconSize={72}
          bg="transparent"
          iconColor="rgba(255,255,255,0.9)"
        />
      </View>
    </View>
  )

于 2020-02-10T13:59:36.710 回答
0

音频无法正常工作,因为我的手机处于静音状态。要更改此默认行为,请设置playsInSilentLockedModeIOS={ true }.

(我知道 OP 已经在他们的代码中包含了这个,但我正在回答以防万一这对某人有帮助)。

于 2021-04-28T12:32:18.163 回答
0

由于启用了 iPhone 侧面的静音开关,我遇到了这个问题。为了让视频播放器播放声音,我需要包含以下内容作为视频组件的道具。

ignoreSilentSwitch={'ignore'}
于 2021-12-29T16:28:18.463 回答
-1

确定在 中时 是否应该media继续播放。这让客户可以继续收听。appbackgroundaudio

要在 上使用此功能iOS,您必须:

  • Xcode在您的项目中启用背景音频
  • 将 ignoreSilentSwitch 属性设置为"ignore"
于 2019-08-06T08:22:42.917 回答