更新:現在這是一個關於如何提供擔保的一定程度的流媒體視頻,如果一個教程:
1)您使用的Flowplayer與Apache
2)你不希望用戶能夠下載視頻(僅限流媒體)
3)您不希望用戶能夠在瀏覽器中放置視頻的URL(限制訪問視頻)
4)您只希望用戶能夠以視頻流如果他們有適當的憑據的Flowplayer安全流與Apache
您必須事先了解PHP和.htaccess文件。
原貼:
我的客戶想要掩飾自己的視頻,它們不能被(他不希望用戶能夠下載任何視頻)流,直到他們在他的領地購買。我試圖用Flowplayer的Secure Streaming來做到這一點,我想我現在差不多在那裏了!)。到處搜索後,我發現this post。
我已經通過的.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]
更新: 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之後(或之下)的文件位置。希望這可以幫助像我這樣的人!
任何人都以這種方式看到安全問題?
**更新:不要使用的Flowplayer-3.2.8.swf與此代碼**使用的Flowplayer-3.2.7。 swf與flowplayer.controls-3.2.5.swf。如果您使用的是flowplayer-3.2.8.swf,它只能在Chrome中運行,而不能在FF,Safari或IE中運行(9) – phpKid 2012-03-26 14:43:43
**更新:您可以使用flowplayer-3.2.8 **,只要確保您擁有最新的Flash版本! (我的壞) – phpKid 2012-03-31 17:17:05
Flow Player HTML5播放器可以使用這種技術嗎? – Wikki 2014-06-09 09:06:45