PHP-Videoplayer

Sheeraz Gul 15 Februar 2024
PHP-Videoplayer

Dieses Tutorial zeigt, wie man einen Videoplayer in PHP erstellt.

PHP-Videoplayer

Wir können einen Videoplayer in PHP erstellen, indem wir die HTML-Streaming-Logik verwenden. Wir können PHP verwenden, um die Videodatei zu öffnen und zu lesen und sie zum Streamen zu senden.

Lassen Sie uns zu einem Beispiel springen und dann beschreiben, wie es funktioniert:

<?php
$Video_File = "C:\Users\Sheeraz\OneDrive\Desktop\New folder\sample.ogv";

if(!file_exists($Video_File)) return;

$File_Open = @fopen($Video_File, 'rb');
$File_Size   = filesize($Video_File); //  size of the video file
$Video_Length = $File_Size;           // length of the video
$Video_Start  = 0;               // The start byte
$Video_End    = $File_Size - 1;       // The end byte
header('Content-type: video/mp4');
header("Accept-Ranges: 0-$Video_Length");
header("Accept-Ranges: bytes");
if (isset($_SERVER['HTTP_RANGE'])) {
    $V_Start = $Video_Start;
    $V_End   = $Video_End;
    list(, $Video_Range) = explode('=', $_SERVER['HTTP_RANGE'], 2);
    if (strpos($Video_Range, ',') !== false) {
        header('HTTP/1.1 416 Requested Video Range Not Satisfiable');
        header("Content-Range: bytes $Video_Start-$Video_End/$File_Size");
        exit;
    }
    if ($Video_Range == '-') {
       $V_Start = $File_Size - substr($Video_Range, 1);
    }else{
        $Video_Range  = explode('-', $Video_Range);
        $V_Start = $Video_Range[0];
        $V_End   = (isset($Video_Range[1]) && is_numeric($Video_Range[1])) ? $Video_Range[1] : $File_Size;
    }
    $V_End = ($V_End > $Video_End) ? $Video_End : $V_End;
    if ($V_Start > $V_End || $V_Start > $File_Size - 1 || $V_End >= $File_Size) {
        header('HTTP/1.1 416 Requested Video Range Not Satisfiable');
        header("Content-Range: bytes $Video_Start-$Video_End/$File_Size");
        exit;
    }
    $Video_Start  = $V_Start;
    $Video_End    = $V_End;
    $Video_Length = $Video_End - $Video_Start + 1;
    fseek($File_Open, $Video_Start);
    header('HTTP/1.1 206 Partial Video Content');
}
header("Content-Range: bytes $Video_Start-$Video_End/$File_Size");
header("Content-Length: ".$Video_Length);
$buffer = 1024 * 8;
while(!feof($File_Open) && ($p = ftell($File_Open)) <= $Video_End) {
    if ($p + $buffer > $Video_End) {
        $buffer = $Video_End - $p + 1;
    }
    set_time_limit(0);
    echo fread($File_Open, $buffer);
    ob_flush();
}
fclose($File_Open);
exit();
?>

Der obige Code implementiert einen Video-Streaming-Player, der das Video in einem Browser wie der HTML 5-Streaming-Funktion abspielen kann. Siehe die Ausgabe:

PHP-Videoplayer

Versuchen wir zu beschreiben, wie dieser Videoplayer in PHP implementiert ist:

  • Zuerst versucht der Code, die Videodatei zu öffnen und legt dann Parameter dafür fest, einschließlich Videogröße, Länge, Startbyte und Endbyte.
  • Danach versucht der Code, die richtigen Header für das Video festzulegen. Dies ist der wichtigste Schritt, da wir über einen Browser mit dem Browser kommunizieren müssen.
  • Im Header-Schritt entscheiden wir über die Standardformate des Videos und die Bandbreite der Videos, die der Browser akzeptiert.
  • Der HTTP_RANGE wird verwendet, wenn der Browser die Bereichsanfrage stellt. Es wird die Bereichsanforderung validieren und Daten entsprechend senden.
  • Der benutzerdefinierte Puffer wird verwendet, um die Speicherauslastung des Servers zu optimieren, sodass beim Streamen des Videos kein großer Speicher beansprucht wird.
  • Schließen Sie schließlich die Datei und beenden Sie sie.
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook