Всем понятно, что защитить свое видео от скачивания невозможно. Тот, кто хочет все равно скачает. Но, можно затруднить данное действие. Если ориентироваться на обычных пользователей, которые просто смотрят, достаточно будет превратить свое видео в поток. Это закроет доступ к нему всем качалкам, таким как Mediaget или Internet Download Manager.
Итак, превратить видео файл в потоковое видео довольно просто. Достаточно сделать следующее:
Файл потока представляет собой обычный PHP файл. Назовем его streamer.php
Это еще не все. Мы сказали, что мы не PHP файл, а мы видео файл в формате mp4. Теоретически, этого достаточно, но как показывает практика, для нормальной работы нужно еще отправить размер файла.
Это минимум для заголовков файла потока. Я добавляю еще несколько, что бы не кешировалось:
Собственно, все.
Итак, превратить видео файл в потоковое видео довольно просто. Достаточно сделать следующее:
Шаг 1. Создаем файл потока
Файл потока представляет собой обычный PHP файл. Назовем его streamer.php
Шаг 2. Заголовки
Понятно, что если подсунуть плееру файл PHP, то он не поймет, что с ним делать и, скорее всего, Вы не получите никакого результата. Для того, что бы плеер понял, что это не просто PHP файл, а видео, нужно сказать об этом. Делается при помощи оператора header.header('Content-type: video/mp4');
Это еще не все. Мы сказали, что мы не PHP файл, а мы видео файл в формате mp4. Теоретически, этого достаточно, но как показывает практика, для нормальной работы нужно еще отправить размер файла.
$file = 'myvideo.mp4'; $file_length = filesize($file); header('Content-Length: ' . $file_length);
Это минимум для заголовков файла потока. Я добавляю еще несколько, что бы не кешировалось:
header('Cache-Control: no-store, no-cache, must-revalidate'); header('Cache-Control: post-check=0, pre-check=0', false); header('Pragma: no-cache');
Шаг 3. Вывод
Осталась самая простая часть. По сути нужно всего лишь вывеси содержимое файла.$fh = fopen($file, 'rb'); while (!feof($fh)) { print (fread($fh, filesize($file))); } fclose($fh);
Шаг 4. Использование
Использование довольно простое. В качестве ресурса видео нужно указать ссылку на файл потока.Шаг 5. Защита
Защита, конечно же, не совершенна, но используя поток вместо основного файла, есть смысл закрыть прямой доступ к видеофайлу. Сделать это можно при помощи директив Apache в файле .htaccess.<Files ~ «\.(flv|mp4)»> order allow,deny deny from all </Files>
Собственно, все.
Известные проблемы
Как я успел заметить, есть проблема с перемещением по файлу. Поскольку видео потоковое, то перемещение, сделанное, допустим, тегом <video> в HTML5, не работает. Эту часть придется контролировать вручную. К сожалению, другого способа я не нашел. Если есть предложения о решении - пишите в комментариях.
Комментарии
Отправить комментарий