PHP ビデオ プレーヤー

Sheeraz Gul 2024年2月15日
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