Обновление: Теперь это учебник о том, как обеспечить определенный уровень безопасности для потокового видео, если:
1) вы используете Flowplayer с Apache
2) вы не хотите, чтобы пользователи могли загружать видео (только потоковая передача)
3) вы не хотите, чтобы пользователи могли размещать URL-адрес видео в браузере (видео с ограниченным доступом)
4) вы хотите, чтобы пользователи могли транслировать видео, если у них есть правильные учетные данные.
У вас должны быть знания PHP и .htaccess.
Оригинальное сообщение:
Мой клиент хочет, чтобы его видео было скрыто, чтобы они не могли транслироваться до тех пор, пока они не приобретут его домен (он не хочет, чтобы пользователи могли загрузить видео). Я пытаюсь сделать это с помощью Flowplayer Secure Streaming, и я думаю, что я почти там. Теперь я здесь!). После поиска везде я нашел этот пост.
Я ограничил горячую ссылку другими сайтами через .htaccess, теперь я пытаюсь ограничить доступ кем-то, просто копируя URL-адрес и вставляя его в адресную строку (т.е. http://www.mydomain.com/videos/testVideo.mov)
Я использовал PHP/AJAX для создания этого HTML-кода (в большинстве примеров используется плагин JS Flowplayer, я использую тег <object>
для встраивания проигрывателя, без участия JS.Если вы используете JS-плагин, используйте вместо встроенной версии файл .htaccess и файл video.php, будут одинаковыми.)
$videofilename = 'testVideo.mov';
$hash = md5('1234');
$timestamp = time();
$videoPath = $hash.'/'.$timestamp.'/'.$videofilename;
echo '
<object width="667" height="375" type="application/x-shockwave-flash" data="http://releases.flowplayer.org/swf/flowplayer-3.2.8.swf">
<param name="wmode" value="transparent"/>
<param name="movie" value="../swf/flowplayer.securestreaming-3.2.8.swf" />
<param name="allowfullscreen" value="true" />
<param name="timestamp" value="'.$timestamp.'" />
<param name="token" value="'.$hash.'" />
<param name="streamName" value="'.$videofilename.'" />
<param name="flashvars" value=\'config={
"playlist":[
{"url": "'.$videoPath.'", "baseUrl": "http://www.mydomain.com/videos", "autoPlay":false,"autoBuffering":true,"bufferLength":5}
]
}\' />
</object>';
Теперь в каталоге videos
я помещаю этот файл .htaccess:
RewriteEngine on
RewriteRule ^(.*)/(.*)/(.*)$ http://www.mydomain.com/vidoeos/video.php?h=$1&t=$2&v=$3
RewriteRule ^$ - [F]
RewriteRule ^[^/]+\.(mov|mp4)$ - [F]
Update:
Цель файла php - 1) получить хэш, временную метку и видеофайлы (test.mov или что-то еще) 2) Убедитесь, что все проверено (I специально пропустили проверки безопасности в этом примере для длины) и 3) Дайте Flowplayer поток вашего видео. Перед предоставлением доступа убедитесь, что $originaltimestamp
и $hash
хороши. Вы также можете проверить учетные данные сеанса, получить "реальное" местоположение файла из базы данных или выполнить любую проверку безопасности php, которую вы хотите, прежде чем предоставить пользователю доступ.
Также не забудьте изменить поле Content-type:
, чтобы оно соответствовало правильному расширению файла (т.е. video/mp4
, если видео является *.mp4)
И videos/video.php
выглядит следующим образом:
<?php
session_start();
$hash = $_GET['h'];
$streamname = $_GET['v'];
$originaltimestamp = $_GET['t'];
header('Content-Description: File Transfer');
header('Content-type: video/quicktime');
header("Content-length: " . filesize($streamname));
header("Expires: 0");
header("Content-Transfer-Encoding: binary");
$file = fopen($streamname, 'r');
echo stream_get_contents($file);
fclose($file);
?>
Всего три файла, HTML с проигрывателем, файл .htaccess и, наконец, файл video.php. Моя первоначальная проблема была $streamname
была неправильной. Помните, что $streamname
должно быть расположением файла после (или ниже) BaseUrl. Надеюсь, это поможет кому-то вроде меня!
Кто-нибудь видит проблемы безопасности с этим?