gif
Портал edu4cash: Что это и как работает?.
gif
Как быстро получить ответ от ИИ.
gif
Как задонатить в Roblox в России в 2024 году.
gif
Обновления на edu4cash – новые награды, улучшенная модерация и эксклюзивные возможности для VIP!.
  • Задать вопрос
  • Назад
  • Главная страница
  • Вопросы
  • Предметы
    • Русский язык
    • Литература
    • Математика
    • Алгебра
    • Геометрия
    • Вероятность и статистика
    • Информатика
    • Окружающий мир
    • География
    • Биология
    • Физика
    • Химия
    • Обществознание
    • История
    • Английский язык
    • Астрономия
    • Физкультура и спорт
    • Психология
    • ОБЖ
    • Немецкий язык
    • Французский язык
    • Право
    • Экономика
    • Другие предметы
    • Музыка
  • Темы
  • Банк
  • Магазин
  • Задания
  • Блог
  • Топ пользователей
  • Контакты
  • VIP статус
  • Пригласи друга
  • Донат
  1. edu4cash
  2. Вопросы
  3. Информатика
  4. Университет
  5. создай сайт для стриминга напиши код на php
Задать вопрос
danila.sharkoff

2025-04-02 17:34:16

создай сайт для стриминга

напиши код на php

Информатика Университет Веб-разработка онлайн-курсы по информатике дипломная работа по информатике информационные технологии в вузах исследовательские проекты по информатике Новый

Ответить

Born

2025-04-02 17:35:05

Общая идея решения: Мы создадим два файла для простейшего сайта стриминга видео:

  1. Файл index.php – главная страница, которая выводит HTML-разметку с элементом video. Элемент video указывает, что источник видео берётся из файла stream.php с передачей параметра (например, sample.mp4).

  2. Файл stream.php – выполняет «стриминг» видеофайла. Этот скрипт получает имя видео через параметр GET, проверяет наличие файла, обрабатывает заголовок HTTP_RANGE (для поддержки перемотки/seek) и передаёт данные пользователю частями.

Важно: Приведённый пример демонстрирует базовый механизм стриминга видео через PHP. Для реального использования необходимо учитывать вопросы безопасности, проверять допустимые расширения файлов, настраивать сервер и оптимизировать работу с большими файлами.

Код файла index.php:

<?php
  // index.php – главная страница стриминг-сайта
?>
<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="UTF-8">
  <title>Сайт для стриминга</title>
</head>
<body>
  <h1>Добро пожаловать на сайт для стриминга</h1>
  <video width="640" height="360" controls>
    <source src="stream.php?video=sample.mp4" type="video/mp4">
    Ваш браузер не поддерживает видео.
  </video>
</body>
</html>

Код файла stream.php:

<?php
  // Получаем имя видео из GET-параметра и формируем путь
  $video = $_GET['video'];
  $path = 'videos/' . basename($video);

  if (!file_exists($path)) {
    header("HTTP/1.1 404 Not Found");
    exit;
  }

  $size = filesize($path); // Определяем размер файла
  $length = $size; // Длина контента, по умолчанию равна размеру файла
  $start = 0; // Начало отправки
  $end = $size - 1; // Конец отправки

  // Обработка заголовка HTTP_RANGE для поддержки перемотки
  if (isset($_SERVER['HTTP_RANGE'])) {
    $range = $_SERVER['HTTP_RANGE'];
    // Пример значения: bytes=0-1023
    list(, $range) = explode('=', $range, 2);
    if (strpos($range, ',') !== false) {
      header('HTTP/1.1 416 Requested Range Not Satisfiable');
      exit;
    }
    if ($range == '-') {
      $start = $size - substr($range, 1);
    } else {
      $range = explode('-', $range);
      $start = $range[0];
      $end = (isset($range[1]) && is_numeric($range[1])) ? $range[1] : $size - 1;
    }
    $length = $end - $start + 1;
    header('HTTP/1.1 206 Partial Content');
    header("Content-Range: bytes $start-$end/$size");
  } else {
    header("HTTP/1.1 200 OK");
  }

  header("Content-Type: video/mp4");
  header("Content-Length: " . $length);

  $fp = fopen($path, 'rb');
  fseek($fp, $start);
  $buffer = 1024 * 8; // Размер чанка – 8KB
  while(!feof($fp) && (ftell($fp) <= $end)) {
    if (ftell($fp) + $buffer > $end) {
      $buffer = $end - ftell($fp) + 1;
    }
    set_time_limit(0);
    echo fread($fp, $buffer);
    flush();
  }
  fclose($fp);
  exit;
?>

Пошаговое объяснение кода stream.php:

  1. Сначала получаем переданный параметр video и формируем путь к файлу, при этом используем функцию basename для безопасности (чтобы избежать доступа к файлам за пределами заданной директории).

  2. Если файл не найден, отправляем заголовок 404 и завершаем выполнение.

  3. Определяем размер файла и задаём начальное (start) и конечное (end) значения для чтения файла.

  4. Проверяем наличие HTTP-заголовка Range. Если клиент запрашивает только часть файла (например, при перемотке), вычисляем корректные значения start и end, отправляем заголовок 206 Partial Content и указываем диапазон передаваемых байт.

  5. Устанавливаем заголовки Content-Type (тип контента – video/mp4) и Content-Length (количество передаваемых байт).

  6. Открываем файл и перемещаем указатель на позицию start. Затем в цикле читаем файл порциями (чанками) до достижения конца запрошенной части файла, выводим эти данные и отсылаем их клиенту.

  7. После завершения чтения закрываем файл и завершаем выполнение скрипта.

Замечания: Этот пример является базовым и может быть расширен: можно добавить авторизацию пользователей, механизм выбора видео, обработку ошибок и улучшение безопасности (например, проверку входных данных). Кроме того, для больших видеофайлов стоит рассмотреть использование специализированных серверов или CDN для работы с видео.


danila.sharkoff ждет твоей помощи!

Ответь на вопрос и получи 10 Б 😉
Ответить

  • Политика в отношении обработки персональных данных
  • Правила использования сервиса edu4cash
  • Правила использования файлов cookie (куки)

Все права сохранены.
Все названия продуктов, компаний и марок, логотипы и товарные знаки являются собственностью соответствующих владельцев.

Copyright 2024 © edu4cash

Получите 500 балов за регистрацию!
Регистрация через ВКонтакте Регистрация через Google

...
Загрузка...
Войти через ВКонтакте Войти через Google Войти через Telegram
Жалоба

Для отправки жалобы необходимо авторизоваться под своим логином, или отправьте жалобу в свободной форме на e-mail [email protected]

  • Карма
  • Ответов
  • Вопросов
  • Баллов