Aktualizacja: Jest to obecnie tutorial jak dać pewien poziom bezpieczeństwa do strumieniowego wideo, jeśli:
1) używasz Flowplayer z Apache
2) nie ma użytkowników aby móc pobrać wideo (tylko strumieniowe przesyłanie)
3) nie chcesz, aby użytkownicy mogli umieścić adres URL filmu w przeglądarce (filmy z ograniczonym dostępem)
4) chcesz, aby użytkownicy byli w stanie przesyłać strumieniowo wideo, jeśli mają odpowiednie poświadczenia. Musisz mieć wcześniejszą wiedzę na temat PHPPlikii .htaccess.Flowplayer Bezpieczne żywo z Apache
Original post:
Mój klient chce, żeby jego filmy ukryte tak, że nie mogą być przesyłane, dopóki nie zostaną zakupione na swojej domeny (nie chce, aby użytkownicy mogli pobrać plik wideo albo). Próbuję to zrobić w Secure Streaming Flowplayera i myślę, że już prawie jestem tam 9! Po przeszukaniu wszędzie znalazłem this post.
mam ograniczony hot-łączenie przez innych stron za pomocą .htaccess teraz staram się ograniczyć dostęp przez kogoś po prostu skopiować adres URL i wkleić go w pasku adresu (tzn http://www.mydomain.com/videos/testVideo.mov)
Użyłem PHP/AJAX do generowania tego kodu HTML (większość przykładów używa wtyczki JS Flowplayer, używam znacznika <object>
do osadzenia odtwarzacza, bez JS. Jeśli używasz wtyczki JS, użyj tego zamiast wersji wbudowanej, plik .htaccess i plik video.php będzie taki sam.)
$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>';
teraz w katalogu videos
umieścić ten plik .htaccess:
RewriteEngine on
RewriteRule ^(.*)/(.*)/(.*)$ http://www.mydomain.com/vidoeos/video.php?h=$1&t=$2&v=$3
RewriteRule ^$ - [F]
RewriteRule ^[^/]+\.(mov|mp4)$ - [F]
Aktualizacja: Celem pliku php jest 1) uzyskać hash danych, datownika i wideo pliku (test.mov lub cokolwiek) 2) Upewnij się, że wszystko się zgadza (celowo anulowałem sprawdzanie bezpieczeństwa w tym przykładzie dla długości) i 3) Daj Flowplayer strumień wideo. Upewnij się, że $originaltimestamp
i $hash
są dobre przed udzieleniem dostępu. Możesz również sprawdzić dane uwierzytelniające sesję, uzyskać "prawdziwą" lokalizację pliku z bazy danych lub wykonać dowolne sprawdzanie zabezpieczeń php przed udzieleniem dostępu użytkownikowi.
również pamiętać, aby zmienić pole Content-type:
więc koreluje z odpowiednim rozszerzeniem (tj video/mp4
jeśli film jest * .mp4)
I videos/video.php
wygląda następująco:
<?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);
?>
trzy pliki łącznie, plik HTML z odtwarzaczem, plik i na końcu plik video.php. Mój pierwotny problem polegał na tym, że $streamname
było nieprawidłowe. Pamiętaj, że $streamname
powinna być lokalizacją pliku po (lub poniżej) BaseUrl. Mam nadzieję, że to pomoże komuś jak ja!
Ktoś widzi problemy bezpieczeństwa z robieniem tego w ten sposób?
** Aktualizacja: Nie używaj Flowplayer-3.2.8.swf z tego kodu ** Użyj Flowplayer-3.2.7.. swf z flowplayer.controls-3.2.5.swf. Jeśli użyjesz flowplayer-3.2.8.swf, będzie działać tylko w Chrome, a nie w FF, Safari lub IE (9) – phpKid
** Aktualizacja: Możesz użyć flowplayer-3.2.8 ** tylko upewnij się, że masz najnowszą wersję wersja Flasha! (moje złe) – phpKid
Czy ta sama technika jest możliwa w odtwarzaczu Flow Player HTML5? – Wikki