我正在尝试使用React Native和Expo AV创建一个音频播放器。我可以(通过URI)播放在线远程文件,而且我的代码效果很好。但是,每当我尝试播放本地文件时,它都会引发错误:[Unhandled promise rejection: Error: Cannot load an AV asset from a null playback source]
。我现在要处理的大部分音频处理代码都可以通过handleAudioPlayPause
,按按钮按下。我该如何在没有问题的情况下播放该程序来播放本地文件?谢谢
const audio = {
filename: 'Audio file 1',
uri:
require('../assets/sounds/hello.mp3'), //this does not work
// 'https://www.learningcontainer.com/wp-content/uploads/2020/02/Kalimba.mp3', // this works
};
...
const [isPlaying, setIsPlaying] = useState(false);
const [playbackObject, setPlaybackObject] = useState<any | null>(null);
const [playbackStatus, setPlaybackStatus] = useState<any | null>(null);
useEffect(() => {
if (playbackObject === null) {
setPlaybackObject(new Audio.Sound());
}
}, []);
const handleAudioPlayPause = async () => {
if (playbackObject !== null && playbackStatus === null) {
const status = await playbackObject.loadAsync(
{ uri: audio.uri },
{ shouldPlay: true }
);
setIsPlaying(true);
return setPlaybackStatus(status);
}
// It will pause our audio
if (playbackStatus.isPlaying) {
const status = await playbackObject.pauseAsync();
setIsPlaying(false);
return setPlaybackStatus(status);
}
// It will resume our audio
if (!playbackStatus.isPlaying) {
const status = await playbackObject.playAsync();
console.log(status);
setIsPlaying(true);
return setPlaybackStatus(status);
}
};