Webdesign – die besten Beiträge

PHP: Wie kann ich die Videoladezeit verbessern?

Hallo,

ich habe folgendes Problem:

Ich habe diese PHP-Datei erstellt und bei mir auf meinem iPhone lädt es die Videodatei sehr langsam bis gar nicht. Wenn ich aber auf PC im gleichen Netflix schaue, lädt es sehr schnell.

Ich habe es bei anderen Freunden testen lassen, die auch ein iPhone haben. Bei der einen Person lädt es auch sehr schnell, bei der anderen auch nicht, so wie bei mir. Bei mir lädt es immer nur schnell, wenn ich mobile Daten anhabe.

Die Videodateien sind 2-7 GB groß.

Vielleicht kann jemand eine Lösung für mich finden, das zu beheben. Wichtig ist, dass ich die Größe der Videodateien nicht verkleinern kann. Das heißt, es muss trotzdem schnell die Videodatei laden.

Ich sage schon einmal danke an die Person, die sich die Zeit und Mühe nimmt, mir zu helfen.

Bei einer Verbindung mit dem normalen Heimnetz sieht es auf dem iPhone so aus:

Wenn ich über LTE (mobile Daten) lade:

Der PHP-Code:

<?php 
  require 'db.php'; // Die Datenbankverbindung einbinden
  require 'is_premium.php'; // Die Datenbankverbindung einbinden

  // Überprüfen, ob eine ID übergeben wurde
  if (!isset($_GET['id']) || !is_numeric($_GET['id'])) {
    die('Ungültige Film-ID.');
  }

  $movie_id = intval($_GET['id']);
  // Film aus der Datenbank abfragen
  $stmt = $db->prepare('SELECT * FROM movies WHERE id = ?');
  $stmt->bind_param('i', $movie_id);
  $stmt->execute();
  $result = $stmt->get_result();

  if ($result->num_rows === 0) {
    die('Film nicht gefunden.');
  }

  $movie = $result->fetch_assoc();
  $stmt->close();
  $db->close();

  // Erkennen, ob die URL ein lokales Video ist oder über HTTPS geladen werden soll
  $is_local_video = strpos($movie['video'], 'uploads/videos/') === 0;
  $is_https = strpos($movie['video'], 'https://') === 0;
  $thumbnail = htmlspecialchars($movie['thumbnail']); // Thumbnail aus der Datenbank
?>
<!DOCTYPE html>
<html lang="de">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title><?php echo htmlspecialchars($movie['name']); ?> - MovieVel</title>
  <style>
   #css code
  </style>
</head>
<body>
  <div class="container">
    <div class="movie-detail">
      <h1><?php echo htmlspecialchars($movie['name']); ?></h1>
      <!-- Movie Video -->
      <div class="<?php echo $is_local_video ? 'video-container' : 'iframe-container'; ?>">
        <div class="play-btn">
          &#9654; <!-- Play-Symbol -->
        </div>
        <?php if ($is_local_video): ?>
          <!-- Video für progressive Web-Optimierung mit Bild-in-Bild-Unterstützung -->
          <video id="video-player" controls autoplay preload="auto" poster="<?php echo $thumbnail; ?>"
              onclick="this.requestPictureInPicture()" muted playsinline>
            <source src="<?php echo htmlspecialchars($movie['video']); ?>" type="video/mp4">
            Ihr Browser unterstützt dieses Videoformat nicht.
          </video>
        <?php elseif ($is_https): ?>
          <iframe 
            src="<?php echo htmlspecialchars($movie['video']); ?>" 
            allowfullscreen>
          </iframe>
        <?php else: ?>
          <p>Video konnte nicht geladen werden. Überprüfen Sie die URL oder die Serverkonfiguration.</p>
        <?php endif; ?>
      </div>
      <!-- Movie Description -->
      <div class="description-box">
        <h2>Über den Film</h2>
        <p><?php echo htmlspecialchars($movie['description']); ?></p>
      </div>
      <!-- Back Button -->
      <a href="index.php" class="back-btn">Zurück zur Übersicht</a>
    </div>
  </div>
  <script>
    const video = document.getElementById('video-player');
     
    // Überprüfen, ob Picture-in-Picture unterstützt wird
    if ('pictureInPictureEnabled' in document) {
      video.addEventListener('click', async () => {
        try {
          // Versuchen, Bild-in-Bild zu aktivieren
          if (document.pictureInPictureElement !== video) {
            await video.requestPictureInPicture();
          } else {
            // Wenn das Video schon im Bild-in-Bild-Modus ist, es wieder schließen
            await document.exitPictureInPicture();
          }
        } catch (err) {
          console.error('Fehler beim Wechseln in den Bild-in-Bild-Modus:', err);
        }
      });
    }
  </script>
</body>
</html>
Bild zum Beitrag
Homepage, SQL, HTML, Webseite, CSS, JavaScript, HTML5, Code, Datenbank, MySQL, PHP, Webdesign, Webentwicklung, phpMyAdmin

Custom Cursor wird nicht angezeigt?

Die Programmierung von meiner Bildergalerie (Slider) hat mir ein paar Schwiergkeiten bereitet...schlussendlich habe ich chatgpt gefragt und der hat mir direkt einen Code ausgespuckt- der funktioniert auch soweit so gut allerdings werden die Mouse-Cursor immer noch nicht richtig angezeigt. Eigentlich sollten diese eigene Bilder anzeigen, je nachdem über welche seite des Bildes man sich bewegt. Weiß jemand wie/ob man so etwas programmieren kann bzw. wo mein Fehler liegen könnte?

- Die Bilder liegen aufjeden Fall im selben Ordner wie index2.html

Hier der vollständige Code:

<!DOCTYPE html>

<html lang="de">

<head>

 <meta charset="UTF-8">

 <meta name="viewport" content="width=device-width, initial-scale=1.0">

 <title>Bild-Slider mit benutzerdefiniertem Cursor</title>

 <style>

  body {

   font-family: Arial, sans-serif;

   display: flex;

   justify-content: center;

   align-items: center;

   height: 100vh;

   margin: 0;

   background-color: #f0f0f0;

  }

  .slider-container {

   position: relative;

   width: 500px;

   height: 300px;

   overflow: hidden;

   border: 2px solid #ccc;

   border-radius: 10px;

  }

  .slider-images {

   display: flex;

   transition: transform 0.5s ease-in-out;

  }

  .slider-images img {

   width: 100%;

   height: 100%;

   object-fit: cover;

  }

  /* Unsichtbare, transparente Boxen für Cursorsteuerung */

  .slider-nav {

   position: absolute;

   top: 0;

   width: 20%; /* Nur ein schmaler Bereich am linken und rechten Rand */

   height: 100%;

   background-color: transparent;

   z-index: 2;

  }

  /* Linke Box: Cursor ändert sich beim Hover */

  .slider-nav.left {

   left: 0;

   cursor: url('pfeillinks.png') 22 22, auto; /* Benutzerdefinierter Cursor (Hotspot bei 22px, 22px) */

  }

  /* Rechte Box: Cursor ändert sich beim Hover */

  .slider-nav.right {

   right: 0;

   cursor: url('pfeilrechts.png') 22 22, auto; /* Benutzerdefinierter Cursor (Hotspot bei 22px, 22px) */

  }

  /* Hover-Effekt: Cursor als Pointer, wenn er über den Boxen schwebt */

  .slider-nav.left:hover {

   cursor: url('pfeillinks.png') 22 22, pointer; /* Benutzerdefinierter Cursor (Hotspot bei 22px, 22px) */

  }

  .slider-nav.right:hover {

   cursor: url('pfeilrechts.png') 22 22, pointer; /* Benutzerdefinierter Cursor (Hotspot bei 22px, 22px) */

  }

 </style>

</head>

<body>

<div class="slider-container">

 <div class="slider-images">

  <img src="https://via.placeholder.com/500x300/FF5733" alt="Bild 1">

  <img src="https://via.placeholder.com/500x300/33C4FF" alt="Bild 2">

  <img src="https://via.placeholder.com/500x300/75FF33" alt="Bild 3">

 </div>

 <!-- Unsichtbare Boxen für die Linke und Rechte Navigation -->

 <div class="slider-nav left" onclick="changeSlide('prev')"></div>

 <div class="slider-nav right" onclick="changeSlide('next')"></div>

</div>

<script>

 let currentIndex = 0;

 const images = document.querySelectorAll('.slider-images img');

 const totalImages = images.length;

 function changeSlide(direction) {

  if (direction === 'next') {

   currentIndex = (currentIndex + 1) % totalImages;

  } else if (direction === 'prev') {

   currentIndex = (currentIndex - 1 + totalImages) % totalImages;

  }

  const sliderImages = document.querySelector('.slider-images');

  sliderImages.style.transform = `translateX(-${currentIndex * 100}%)`;

 }

</script>

</body>

</html>

Ich bin jedem der sich mit dem Problem beschäftigt dankbar! (:

Computer, HTML, Webseite, programmieren, CSS, Code, Programmiersprache, Webdesign, Webentwicklung, Cursor, Galerie, slider

Meistgelesene Beiträge zum Thema Webdesign