2

ビデオを Web サイトから直接ストリーミングできるようにすることは可能でしょうか?

RewriteEngine On
RewriteCond %{REQUEST_URI} \.(mp4|flv|avi)$ [NC]
RewriteRule ^(.*)$ /stream-file.php?filename=$1 [L]

しかし、このためには、php 経由でストリーミングするスクリプトを作成する必要があり、それを jwplayer などのメディア プレーヤーに渡すことができないと想定しています。

あるいは、このウェブサイトのようなことがどのように可能になるのか興味がありました: http://www.statsdoesntsuck.com/york/2320.html

ソースを表示すると、メイン ページのビデオを参照する html の部分が見つかります。

<div style="background-color:#404040; border-radius:5px;">                              
<div style="width:98%; height:auto; margin-right:auto; margin-left:auto; padding-top:6px">

<script type="text/javascript" src="http://content.bitsontherun.com/players/EwneWxTl-8JZHlp0n.js">
</script>

</div>
</div>

EwneWxTl-8JZHlp0n.js の内容はhttp://content.bitsontherun.com/players/EwneWxTl-8JZHlp0n.jsにあります(スクリプトは長すぎてここに貼り付けることができません)。

基本的に、ファイル名や場所を見つけるのを少し難しくする方法を探していますが、それでもストリーミングできる方法を探しています. 100%安全である必要はありません(とにかく不可能であることはわかっています)が、少なくともviewsource ---> url.com/file.mp4ほど簡単ではないはずです

どんなアイデアでも大歓迎です。私は joomla も使用しているので、これを行うことができるモジュール/プラグインがあれば、それも素晴らしいことですが、最初から書くことは気にしません。

言い換えると、ファイルをダウンロードから保護し (ストリーミングを損なうことなく)、有料サービス プロジェクトではなく DIY プロジェクトにできる最善の方法は何ですか。

編集: 1. Apache 経由で解決策を探しています 2. 次のFlowplayer Secure Streaming with Apacheを見つけました

問題は、htaccess でファイルをストリーミングできないことです。ファイルを削除すると、正常にストリーミングされます。誰かがそれを変えるために何ができるかを理解するのを手伝ってくれるなら、それは素晴らしいことです

私の .htaccess は次のとおりです。

 RewriteEngine on
 RewriteRule ^(.*)/(.*)/(.*)$ http://localhost/joomla2/video/video.php?h=$1&t=$2&v=$3
 RewriteRule ^$ - [F]
 RewriteRule ^[^/]+\.(mov|mp4)$ - [F]

現在、「ファイルが見つかりません」と表示されます。

4

2 に答える 2

2

はい、簡単にできます。ビデオストリーミングプロキシ用に書いた作業スクリプトを次に示します-

ob_start();

**// do any user checks here - authentication / ip restriction / max downloads / whatever**

**// if check fails, return back error message**

**// if check succeeds, proceed with code below**

if( isset($_SERVER['HTTP_RANGE']) )

$opts['http']['header']="Range: ".$_SERVER['HTTP_RANGE'];

**// to add multiple headers to the final request, do something like

**// $opts['http']['header']="Range: ".$_SERVER['HTTP_RANGE']."\r\nHeader1: value1\r\nHeader2: value2";

$opts['http']['method']= "HEAD";

$conh=stream_context_create($opts);

$opts['http']['method']= "GET";

$cong= stream_context_create($opts);

$out[]= file_get_contents($real_file_location_path_or_url,false,$conh);

$out[]= $http_response_header;

ob_end_clean();

array_map("header",$http_response_header);

readfile($real_file_location_path_or_url,false,$cong);
于 2013-08-16T11:30:02.127 に答える
0

Apache に縛られていない場合は、ffserverを使用するとよいと聞きました。

nginx のnginx-rtmp-moduleも試してみてください。

Apache には、ストリーミング モジュールもあります。

最後に、多くの CDN サービスの 1 つを試してみることをお勧めします。あなたがサービスを使いたくないと言ったのは知っていますが、それを言わないのはばかげていると感じました。多くの開発者は、CDN をデフォルトの選択肢と考えています (私自身を含む)。

于 2013-08-13T02:09:27.680 に答える