$end || $start >= $size) { header('Content-Range: bytes */' . $size); failMediaStream(416, '请求范围无效'); } http_response_code(206); header('Content-Range: bytes ' . $start . '-' . $end . '/' . $size); } $length = $end - $start + 1; header('Content-Type: ' . $mime); header('Content-Length: ' . $length); header('Accept-Ranges: bytes'); header('Content-Disposition: inline'); header('Cache-Control: public, max-age=86400'); header('X-Content-Type-Options: nosniff'); $stream = fopen($fullPath, 'rb'); if ($stream === false) failMediaStream(500, '视频文件无法读取'); fseek($stream, $start); $remaining = $length; while ($remaining > 0 && !feof($stream)) { $chunk = fread($stream, min(1024 * 1024, $remaining)); if ($chunk === false || $chunk === '') break; echo $chunk; $remaining -= strlen($chunk); flush(); } fclose($stream);