Das Video hört nach Stunden auf, sich zu wiederholenAndroid

Forum für diejenigen, die für Android programmieren
Anonymous
 Das Video hört nach Stunden auf, sich zu wiederholen

Post by Anonymous »

Ich stoße auf ein Problem, bei dem in meiner App (die rund um die Uhr läuft) ein Anmeldebildschirm angezeigt wird. Nach 5 bis 8 Stunden verschwindet das Video einfach, bevor ich ein einfaches isLooping für meine Videokomponente hatte. Ich habe herausgefunden, dass isLooping Probleme bei langen Sitzungen hat und nicht so flexibel ist wie die Verwendung von AVPlaybackStatus, das viel besser kontrollierbar ist und im Gegensatz zu isLooping nicht nativ ist.
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
Verwenden von expo-av zum Abspielen des Video.

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",
},
});

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post