2

RTMPを使用して、Wowza を介してストリーム メディア コンテンツを保護しています。Wowza は、ビジネス目的のための非常に強力で堅牢なメディア サーバーです。

しかし、私たちは問題に遭遇しました。それは私たちにとって毎日大きくなっています。多くの新規顧客は、ファイアウォール ルールによって RTMP を使用できず、ビジネス メディア コンテンツを配信することが問題になっています。しかし、 YouTubevimeoのように、誰もが http 疑似ストリーミングやプログレッシブに問題はありません。したがって、同じことを行う必要がありますが、疑似ストリーミング トラフィックへの安全なリンクを提供して、リンクを盗むことによる直接ダウンロードを防ぐ必要があります。

Rails アプリ用に 1 つ、DB 用に 2 つ目、Wowza メディア サーバーとして 3 つ目のサーバーを使用します。私の考えでは、 Wowzaメディア サーバーにnginxをセットアップし、メディアの元のファイルを疑似ストリーミングするように構成します (Wowza が Web カメラ キャプチャを介してストリーミングするために使用するのと同じファイル システム内)。

http_secure_link_module および http_flv_module モジュールで nginx を使用することを提案できますか? 私の同僚による別のアイデアは、Wowza 側で小さなアプリケーションを構築して暗号化されたリンクを取得し、それをローカル ファイル システムに変換し、X-Accel-Redirectを介してファイルにアクセスし、DB への直接接続を介して認証を確認することです。

どうもありがとう

4

3 に答える 3

4

私は解決策を見つけました、それに興味のある人と共有させてください。

まず第一に、私の制約は可能な限り最小限のツールを使用することでした。したがって、理想的には、アップストリームのバックエンドスクリプトを使用せずに、Webサーバーのみに組み込みモジュールを配置することでした。そして、私は今解決策を持っています。

  server {
      listen       8080 ssl;
      server_name  your_server.com;

      location /video/ {
        rewrite /video/([a-zA-Z0-9_\-]*)/([0-9]*)/(.*)\.flv$ /flv/$3.flv?st=$1&e=$2;
      }

      location /flv/ {
        internal;
        secure_link $arg_st,$arg_e;
        secure_link_md5 YOUR_SECRET_PASSWORD_HERE$arg_e$uri;

        if ($secure_link = "") { return 403; }
        if ($secure_link = "0") { return 403; }

        root /var/www/;
        flv;

        add_header  Cache-Control             'private, max-age=0, must-revalidate';
        add_header  Strict-Transport-Security 'max-age=16070400; includeSubdomains';
      }
}

「/var/ www/flv」ディレクトリにある実際のflvファイル。Ruby側でURLを暗号化するには、次のスクリプトを使用できます。

expiration_time = (Time.now + 2.hours).to_i   # 1326559618
s = "#{YOUR_SECRET_PASSWORD_HERE}#{expiration_time}/flv/video1.flv"
a = Base64.encode64(Digest::MD5.digest(s))
b = a.tr("+/", "-_").sub('==', '').chomp    # HLz1px_YzSNcbcaskzA6nQ
# => "http://your_server.com:8080/video/#{b}/#{expiration_time}/video1.flv"

したがって、保護された2時間のURL(フラッシュプレーヤーに入れることができます)は次のようになります。

"http://your_server.com:8080/video/HLz1px_YzSNcbcaskzA6nQ/1326559618/video1.flv"

PS Nginxは、次のオプションを使用してコンパイルする必要があります--with-http_secure_link_module --with-http_flv_module

$ cd /usr/src
$ wget http://nginx.org/download/nginx-1.2.2.tar.gz
$ tar xzvf ./nginx-1.2.2.tar.gz && rm -f ./nginx-1.2.2.tar.gz

$ wget http://zlib.net/zlib127.zip
$ unzip zlib127.zip && rm -f zlib127.zip

$ wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.30.tar.gz
$ tar xzvf pcre-8.30.tar.gz && rm -f ./pcre-8.30.tar.gz

$ wget http://www.openssl.org/source/openssl-1.0.1c.tar.gz
$ tar xzvf openssl-1.0.1c.tar.gz && rm -f openssl-1.0.1c.tar.gz

$ cd nginx-1.2.2 && ./configure --prefix=/opt/nginx --with-pcre=/usr/src/pcre-8.30 --with-zlib=/usr/src/zlib-1.2.7 --with-openssl-opt=no-krb5 --with-openssl=/usr/src/openssl-1.0.1c --with-http_ssl_module --without-mail_pop3_module --without-mail_smtp_module --without-mail_imap_module --with-http_stub_status_module --with-http_secure_link_module --with-http_flv_module
$ make && make install
于 2012-01-14T15:38:45.663 に答える
0

RTMP 接続が失敗すると、JW プレーヤーと Flowplayer は自動的に RTMPT (HTTP 経由) にフォールバックし、Wowza は両方を利用できるようにします。いくつかの場所でポート 1935 がブロックされていることに遭遇しましたが、ポート 80 を介した RTMPT へのフォールバックは通常機能します。もちろん、ここでの注意点は、Wowza がポート 80 でリッスンする必要があることです (1935 が定義されている VHost.xml で、80,1935 に変更します)。ポート。

于 2012-01-17T19:22:45.833 に答える
0

ポート 80 で Wowza をクライアントに使用します。

于 2012-05-31T12:30:50.730 に答える