PHP 비디오 플레이어

Sheeraz Gul 2023년6월20일
PHP 비디오 플레이어

이 튜토리얼은 PHP에서 비디오 플레이어를 만드는 방법을 보여줍니다.

PHP 비디오 플레이어

HTML 스트리밍 로직을 사용하여 PHP에서 비디오 플레이어를 만들 수 있습니다. PHP를 사용하여 비디오 파일을 열고 읽고 스트리밍을 위해 보낼 수 있습니다.

예제로 이동한 다음 작동 방식을 설명하겠습니다.

<?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();
?>

위의 코드는 HTML 5 스트리밍 기능과 같이 브라우저에서 비디오를 재생할 수 있는 비디오 스트리밍 플레이어를 구현합니다. 출력을 참조하십시오.

PHP 비디오 플레이어

이 비디오 플레이어가 PHP에서 구현되는 방법을 설명하겠습니다.

  • 먼저 코드는 비디오 파일을 열려고 시도한 다음 비디오 크기, 길이, 시작 바이트 및 끝 바이트를 포함하여 매개 변수를 설정합니다.
  • 그런 다음 코드는 동영상에 적절한 헤더를 설정하려고 시도합니다. 브라우저를 사용하여 브라우저와 통신해야 하므로 가장 중요한 단계입니다.
  • 헤더 단계에서 비디오의 기본 형식과 브라우저에서 허용할 비디오 범위를 결정합니다.
  • HTTP_RANGE는 브라우저가 범위를 요청할 때 사용됩니다. 범위 요청의 유효성을 검사하고 그에 따라 데이터를 보냅니다.
  • 맞춤형 버퍼는 서버 메모리 활용을 최적화하는 데 사용되므로 비디오를 스트리밍하는 동안 많은 메모리가 사용되지 않습니다.
  • 마지막으로 파일을 닫고 종료합니다.
작가: Sheeraz Gul
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