Обновление: теперь это учебник о том, как обеспечить определенный уровень безопасности для потокового видео, если:
1) вы используете Flowplayer с Apache
2) вы не хотите, чтобы пользователи могли загружать видео (только потоковая передача)
3) вы не хотите, чтобы пользователи могли размещать URL-адрес видео в браузере (видео с ограниченным доступом)
4) вы хотите, чтобы пользователи могли передавать видео только в том случае, если у них есть соответствующие учетные данные
Вы должны иметь предварительное знание файлов PHP и .htaccess .
Оригинальное сообщение:
Мой клиент хочет, чтобы его видео было скрыто, чтобы они не могли транслироваться до тех пор, пока они не приобретут его домен (он не хочет, чтобы пользователи могли загрузить видео). Я пытаюсь сделать это с помощью Flow Streamer Safe Streaming, и я думаю, что я почти там. Теперь я здесь!). После поиска везде я нашел этот пост .
Я ограничил горячую ссылку другими сайтами через .htaccess, теперь я пытаюсь ограничить доступ кем-то, просто копируя URL-адрес и вставляя его в адресную строку (например, http://www.mydomain.com/videos/testVideo. mov )
Я использовал PHP / AJAX для генерации этого HTML (в большинстве примеров используется JS Flowplayer Plugin, я использую <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]
Обновление: целью файла php является: 1) получить хэш данных, временную метку и имя файла видео (test.mov или что-то еще). 2) Убедитесь, что все проверено (я намеренно пропустил проверки безопасности в этом примере для длины) и 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. Надеюсь, это помогает кому-то вроде меня!
Кто-нибудь видит проблемы безопасности с этим?
Хорошо, я решил это! В этой строке:
$streamname = "http://www.mydomain.com/videos/".$streamname;
(Это больше не там)
У меня все было не так. Все, что мне нужно было сделать, это удалить эту строку, и это сработало. Он начнется с вашего baseUrl. Таким образом, он уже был в папке «видео», поэтому $ streamname должно совпадать с расположением файла после baseUrl.
На стороне записки, это заняло у меня около недели, чтобы решить, что я искал всюду в Интернете, чтобы собрать все вместе. Я создал это в учебнике, чтобы у других не было такой головной боли (надеюсь!)
Принял меня 2 дня, чтобы обнаружить это ….
Если каталог, в котором хранятся ваши видеоролики, – CHMOD to 777, то он остановит поток …
Я обошел дома, пытаясь понять, почему, по имени ада, это не будет передавать мое видео …
У меня был уже установлен каталог для видеофайлов, который использовался другим популярным графическим php-скриптом, который установил этот каталог в CHMOD 777 во время его времени … просто установив его в CHMOD 755, разрешал flv или mp4 передавать мой плеер, встроенный в мой php page … что я облегчение!
Так что спасибо за облегчение головной боли … это очень помогло, приветствует