2

私は PHP 開発者で、オンデマンドの音楽をユーザーにストリーミングする Web サイトを開発しようとしています。多くのグーグル検索の後、どの種類のサーバーまたはツールを使用すればよいかについて混乱していますか? WOWZA や SHOUTCAST などを見たことがありますが、どれが自分のニーズに最適かわかりません。

高品質のオーディオファイルを提供したい。だから、320kbps mp3 フォーマットか何か他のものを使うべきかもしれませんが、同じ品質です。

ライブストリーミングは必要ありません。音楽ファイルのオンデマンド ストリーミングと、ユーザーが独自のプレイリストを作成する機能が必要なだけです。

ユーザーは音楽ファイルをダウンロードできないはずです。

4

1 に答える 1

8

Icecast/SHOUTcast は使用に適していません。単一のストリームを受け取り、それを複数の接続に同時に送信します。各ユーザーが個別のコンテンツを聞くことができる「オンデマンド」サーバーではありません。

ユースケースでは、PHP で何かを実装できます。実際に行っているのは、メディア ファイルをクライアントに送信することだけです。クライアントがそれらのファイルをダウンロードしないようにしたいとおっしゃっていましたが、これは不可能です。クライアントがそれを再生できる場合、クライアントはそれを保存できますが、これを回避する方法はありません。ただし、ファイルにリンクするのと同じくらい簡単にできないようにするためにできることがいくつかあります。

Web サーバーのドキュメント ルートにオーディオを保存しないでください。 すべてのメディア ファイルは、PHP スクリプトからのみ提供する必要があります。これにより、入ってくるリクエストを制御できます。 を調べてくださいreadfile()。これにより、単にディスクからファイルをロードすることから抜け出すための簡単な道筋も得られます (メディア ファイルが 100k を超えて大きくなり始めたときに必要になります)。

メディア ファイルの URL は、特定のユーザー セッション ID に対して1 回だけ機能する必要があります。時間制限付きで、これらの URL をオンザフライで生成します。サイトで有効なセッションを行っていない人がメディア ファイルの URL を要求した場合は、それを提供しないでください。リンクの有効期限が切れている場合は、提供しないでください。これにより、誰かが URL を取得して掲示板に投稿するのを防ぐことができます。現在有効なセッションを持つサイトの有効なユーザーのみが、メディア ファイルにアクセスできる必要があります。

レート制限リクエスト。 ユーザーが一度に必要以上のファイルをダウンロードできないようにします。1 秒間に 100 個のファイルを要求した場合は、それらを提供しないでください。

これらの概念をすべて実装することは、あなたに任せます。その方法はニーズによって異なり、通常は 5 行のコード スニペットで行うものではありません。

于 2013-03-18T15:21:30.817 に答える