Mit AVPlaybackStatus konnte das Video die Nacht überstehen, sodass es am Morgen abgespielt wurde – aber die Bildrate war sehr unruhig.
Gibt es eine andere Lösung, um Videos stundenlang in Schleife abzuspielen?
Unten ist ein minimaler reproduzierbarer Code.
Verwendete Versionen:
- expo: ~48.0.21
- react: 18.2.0
- react-native: 0.71.14
Code: Select all
import React, { useRef, useState } from "react";
import { View, StyleSheet, Text, Pressable } from "react-native";
import {
Video,
ResizeMode,
AVPlaybackStatus,
AVPlaybackStatusSuccess,
} from "expo-av";
export default function App() {
const videoRef = useRef(null);
const [restarting, setRestarting] = useState(false);
const onPlaybackStatusUpdate = (status: AVPlaybackStatus): void => {
const cStatus = status as AVPlaybackStatusSuccess;
if (!restarting && cStatus.isLoaded && cStatus.durationMillis) {
const remaining = cStatus.durationMillis - cStatus.positionMillis;
if (remaining {
if (!videoRef.current) return;
try {
setRestarting(true);
await videoRef.current.stopAsync();
await videoRef.current.unloadAsync();
await videoRef.current.loadAsync(
require("./assets/video.mp4"),
{ shouldPlay: true, isMuted: true },
false
);
await videoRef.current.playAsync();
} finally {
setRestarting(false);
}
};
return (
Restart Video
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: "#000",
},
video: {
width: "100%",
height: "80%",
},
button: {
padding: 20,
backgroundColor: "#222",
alignItems: "center",
},
text: {
color: "#fff",
},
});
Mobile version