我使用博览会的视频组件。我可以播放视频,但是在iOS中无法播放。在Android中可以。我该如何解决。
<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}} />
答案 0 :(得分:3)
启用背景音频不是解决方案(尤其是在使用托管的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>
)
答案 1 :(得分:1)
确定在media
处于app
中时,background
是否应继续播放。这样一来,客户就可以继续收听audio
。
要在iOS
上使用此功能,您必须:
Xcode
项目中的音频"ignore"
答案 2 :(得分:0)
音频无法正常工作,因为我的手机处于静音状态。要更改此默认行为,请设置 playsInSilentLockedModeIOS={ true }
。
(我知道 OP 已经在他们的代码中包含了这个,但我会回答以防万一这对某人有帮助)。