2011-07-05 8 views
5

私はメンバー専用サイトを開発しており、利用可能なビデオURLを保護する必要があるため、非会員に共有したり渡すことはできません。どのようにmp4&flvビデオを保護するのですか

URLマスキングについて聞いたことがありますが、これを行う方法はわかりません。それとも別の方法がありますか?

基本的に、ビデオはリモートサーバー(vps)またはAmazon S3を介して保持され、サイトはビデオを呼び出し、フロープレーヤ、JWプレーヤー、または私が見つけることができるプレイヤーでストリームしますビデオを保護してください。

誰でもこれを行う方法を知っていますか?または私のためにこれを行うサービスを知っていますか?

おかげ

TT

+0

ポルノ?申し訳ありませんが、質問する必要があります:-) –

+0

もし彼らが自分のコンピュータにストリームすることができますし、ストリームを保存することができます。それで、彼らはとにかく好きなように配布することができました。 DRMには大きな失敗の歴史があります。 – Raoul

+0

Dukeが言ったことは、クライアント側で再生されている場合、クライアント側で保存できることです。その周りに道はない。しかし、メンバーだけが最初にビデオにアクセスできるようにすることができます。それはあなたの質問ですか?または、あなたは自分のプレーヤーを書くことができます。ビデオをメモリに保存することができます。プレイヤーでしか再生できません(誰かが画面をキャプチャしない限り、明らかに暗号キーを改造します)。 –

答えて

2

ので、多くの人が間違ったアドバイスを与える理由を私は知らないが、はい、あなたはこれを行うことができます。クライアント側が再生されているという理由だけでクライアント側に保存されるわけではありません。再生中のストリームを記録できるソフトウェアを使用する必要があります。スクリーンキャプチャソフトウェアなど。

とにかく、これを行うには、.htaccessを使用してファイルリクエストをPHPファイルにリダイレクトする必要があります。このファイルは動的にファイルの場所を提供し、URLを難読化します。

あなたのhtmlコードに次のよう

<html> 
<body> 
<script type="text/javascript" src="flowplayer-3.2.12.min.js"> 
</script> 
    <script type="text/javascript"> 
// <![CDATA[ 
    window.onload = function() { 
    $f("player", "flowplayer-3.2.16.swf", { 
     plugins: { 
     secure: { 
      url: "flowplayer.securestreaming-3.2.8.swf", 
      timestampUrl: "sectimestamp.php" 
     } 
     }, 
     clip: { 
     baseUrl: "secure", // Im using a folder called "secure" you can call it whatever you want 
     url: "trailer.flv", 
     urlResolvers: "secure", 
     scaling: "fit", 
     onStart: function (clip) { 
      document.getElementById("info").innerHTML = clip.baseUrl + "/" + clip.url; 
     } 
     } 
    }); 
    }; 
    // ]]> 
    </script> 

<div id="player"></div> 

</body> 
</html> 

sectimestamp.phpはそれでちょうどこのラインを持っている必要があります。

<?php 
echo time(); 
?> 

その後、あなたは次のようにあなたの.htaccessファイルを作成する必要がありますし、場所をあなたの「安全な」フォルダまたはビデオが保管されている場所に保存してください:

次のステップはyoですあなたの.htaccessと同じディレクトリにあるウルvideo.phpファイルが(あなただけのこのトークンは、ストリームに照らしてチェックされ、検証部分がある

<?php 
$hash = $_GET['h']; 
$streamname = $_GET['v']; 
$timestamp = $_GET['t']; 
$current = time(); 
$token = 'kljaslidilhal9023402'; // I recommend a dynamic token to be generated using something like mt_rand() function 
$checkhash = md5($token . '/' . $streamname . $timestamp); 

if (($current - $timestamp) <= 2 && ($checkhash == $hash)) { 
    $fsize = filesize($streamname); 
    header('Content-Disposition: attachment; filename="' . $streamname . '"'); 
    if (strrchr($streamname, '.') == '.mp4') { 
    header('Content-Type: video/mp4'); 
    } else { 
    header('Content-Type: video/x-flv'); 
    } 
    header('Content-Length: ' . $fsize); 
    session_cache_limiter('nocache'); 
    header('Expires: Thu, 19 Nov 1981 08:52:00 GMT'); 
    header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); 
    header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0'); 
    header('Pragma: no-cache'); 
    $file = fopen($streamname, 'rb'); 
    print(fread($file, $fsize)); 
    fclose($file); 
    exit; 
} else { 
    header('Location: /secure'); 
} 

?> 

の.htaccessでURLを調整する別の場所に置くことができます2秒を超えていないことを確認してください。そうしないと、ページを更新して新しいトークンをリクエストする必要があります。

url.com/secure/trailer.flvにアクセスしようとすると、.htaccessに感謝することができます(ダウンロードマネージャもどちらも動作しません)。しかし、あなたはFLVファイルのurl.com/md5hashtimestamp/md5hashstreamname/md5hashtimestamp/trailer.flvのように見えるでしょう、url.com/video.htmlへのPHP情報のおかげでその場所をストリームすることができるでしょう。そのURLが終了しないので、フラッシュファイルから直接ストリームをリッピングするのは非常に難しいでしょう。 .htaccessのおかげで、url.com/secure/trailer.flvで直接サイトにアクセスすることはできません。最終的にはストリーミング中に記録するスクリーンキャプチャ/ソフトウェアのみが選択肢となります。

それは100%安全ではありませんが、それはエンドユーザーのために物事を困難にします - すべて無料の最高のそれの

関連する問題