Самый оптимальный вариан это раздача
киношек сервером NginX, для защиты контента его нужно немного настроить, поэтому нужер root доступ к серверу, хотя это может быть и VPS конечно
Решение данной задачи с помощью nginx реализуется просто и очень эффективно. В конфиг nginx в блок server для нашего домена добавляем:
location / {
rewrite ^/video/(w+)/(.+)$ /get.php?hash=&filename= last;
...
}
location /video {
internal;
flv;
}
К сожалению форум выстригает некоторые символы, вообщем в строке реврайта
get.php?hash=«знак доллара»1&filename=«знак доллара»2 last;
«знак доллара» это "$"
Первый локейшен это настройка реврайта NginX, а второй это папка от корня вашего домена в которой лежит видео, то есть вы закрываете внешний доступ к этой папке, теперь NginX будет отдавать файлы с этой папки только по внутреннему запросу (internal)
В корень домена ложим файлик get.php это обработчик flv запросов
Тут есть небольшая проблемка, для псевдостреминга(«перемотки»), плеер приклепляет к ссылке смещение в байтах через знак ?, регулярка в реврайте конфига NginX не может выбрать весь GET запрос, вернее может, но только до знака "?", поэтому я малость извратилась и вставила $url=explode(’?’,$url);…
неуклюже конечно, но зато перемотка в плеере работает
Вот текст обработчика flv запросов get.php
$hash =$_GET['hash'];
$filename = $_GET['filename'];
$ip = md5(getenv(”REMOTE_ADDR”).”key”);
if ($hash == $ip){
$url=$_SERVER['REQUEST_URI'];
$url=explode(’?',$url);
$url=$url[1];
if (isset($url)){$filename .=’?’.$url;}
header(”Content-Type: video/x-flv”);
header(”X-Accel-Redirect:/video/”.$filename);
die();
}
echo “фигу вам! :)”; //Ну или можно клипчик с фигой показать, для наглядности
Например у вас есть файл по адресу
http://flv.site.ru/video/video.flv
дабавляете в ссылку хеш из ip юзера и секретного слова
$ip = md5(getenv(”REMOTE_ADDR”).”key”);
и получаете ссылку уже вида
http://flv.site.ru/video/922f3b5fcb227cfae135299e786edd82/video.flv
когда плеер запросит ссылку, она попадёт к nginx, если вы всё выставили как написанно, то nginx передаст ссылку обработчику, который проверит хешь, если всё правильно то кажем киношку, если ip не совпадает, то кажем фигу!
В принципе в хеше можно что угодно закодировать, например добавить к хешу два байта время жизни ссылки в минутах, ну или девичью фамилию бабушки посетителя проверить можно :))) шутка!
На самом деле обработчику конечно много чего можно поручить, например можно манипулировать скоростями отдачи файла, типа ВИПу на максимальной скорости, остальных бреем до 50 кбайт, докачки, псевдостреминг, мультисесии, ну естествено и NginX нужно настроить под нужные задачи. У меня файлы залиты на раздельные зеркальные диски и обработчик разруливает раздачу файлов так чтобы нагрузка на дисках была примерно одинаковая…
у меня почему то отказывался работать второй локейшен, пока не прописали в нем root путь
root /home/support/www/flv.site.ru;