HOWTO · PHP

PHP ビデオ プレーヤー

このチュートリアルでは、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 は、ブラウザーが範囲要求を行うときに使用されます。 範囲要求を検証し、それに応じてデータを送信します。
  • カスタマイズされたバッファは、サーバーのメモリ使用率を最適化するために使用されるため、ビデオのストリーミング中に大量のメモリが消費されることはありません。
  • 最後に、ファイルを閉じて終了します。