Vai*_*rma 3 video video-streaming react-native expo
我想问一下在 Expo / React Native 上处理视频加载的最佳方法是什么。
\nExpo 对于处理视频/音频的视频和 AV 组件有很好的文档:\n https://docs.expo.io/versions/latest/sdk/video/ \n https://docs.expo.io/versions/最新/sdk/av/
\n到目前为止我已经尝试过两件事:\'
\n这是我的视频组件的样子:
\n const videoStyle = { width: \'100%\', height: \'100%\', display: display}; \n return (\n <Video\n ref={playbackObject}\n source={{uri: source}}\n posterSource={require(\'path/to/file\')}\n rate={1.0}\n volume={1.0}\n isMuted={isMuted}\n resizeMode="cover"\n usePoster={true}\n shouldPlay={shouldPlay}\n onPlaybackStatusUpdate={_onPlaybackStatusUpdate}\n progressUpdateIntervalMillis={50}\n isLooping\n style={videoStyle}\n posterStyle={videoStyle}\n >\n </Video>\n )\nRun Code Online (Sandbox Code Playgroud)\n我对 (2) 的实现如下所示:
\nconst [loaded, setLoaded] = useState(false); \n\nconst _onPlaybackStatusUpdate = playbackStatus => {\n\n if(playbackStatus.isBuffering){ \n if(loaded){\n setLoaded(false); \n }\n } else {\n if(!loaded){\n setLoaded(true); \n }\n }\n}\n\nRun Code Online (Sandbox Code Playgroud)\n如果loaded = true,我们不会显示活动指示器。另外,我们确实显示了一个活动指示器。这里的主要问题是存在延迟,这不是很好的用户界面。
\n因此,考虑到这一点,人们\xe2\x80\x99s 对于处理视频加载的建议是什么?谢谢!!
\n您可以做的是将 渲染<ActivityIndicator />为背景,当它完成加载资源时,它将位于视频后面(或者您可以只检查资源是否已加载 -> 可选择将其渲染在<Video />.
<Video
ref={handleVideoRef}
>
<ActivityIndicator size="large" />
</Video>
Run Code Online (Sandbox Code Playgroud)
const handleVideoRef = async component => {
const playbackObject = component;
if (playbackObject) {
await playbackObject.loadAsync(
{ uri: currentVideoURI },
);
}
};
Run Code Online (Sandbox Code Playgroud)