3

mp3のセグメントを再生するソリューションが必要です。私は現在、Amazon S3に保存されている数千のオーディオファイルを持っており、ユーザーが再生できるようにしたいのですが、録音の途中で再生時間を30秒程度に制限したいと考えています。s3のmp3スニペット

画像であればサムネイルのようにまったく新しいファイル(スニペット)を作成する必要があるかどうか分かりませんし、プレーヤー/スチームを使って安全に制限することも可能です彼らは全体の曲にアクセスすることはできません。

私は、Rails環境から来て、ファイルを扱うためにはPaperclipを使い、問題があればJPlayerを使って再生します。

ポインタやベストプラクティスはありますか?

答えて

0

残念ながら、新しいスニペットを作成する必要があります。実際には、ユーザーのブラウザに「この全体のMP3ファイルをダウンロードして、再生し、30秒間のアクセスしか許可しない」という方法はありません。

0

私はクライアント側の問題を解決する方が簡単だと思います。

あなたはオーディオファイルを再生するためにフラッシュを使用していますか?

はいの場合は、JWPlayer(これはオーディオファイルもサポートしています)を使用して、ビデオと同様のことをしました。

カスタムプラグインを開発して、再生するスニペットを制御してから、オーディオファイルを停止してメッセージなどを表示できます。

このソリューションは、CloudFrontで署名付きのURLまたは/およびrtmpストリーミングと組み合わせることで非常に安全です。

+0

うん...何かのように完全なクリップを取得するためにwgetを使用するか、Firebugのでスクリプトにパッチを適用する*高度*ユーザーを停止します。さらに、ファイルがプレビューを作成するのに十分な大きさであれば、クライアントにすべてを送信し、その99%をすぐにゴミ箱に残します。 – yurymik

0

mp3形式の制限により、曲の途中の任意のフレームにシークしてその時点から送信を開始することはできません。

    1.新しいファイルをオフラインで作成します。

    だから、基本的に3つのオプションがあります。非常に簡単ですが、スペースを消費します。

    2.ファイルをオンザフライでトランスコードします。 CPUが消費され、品質が低下します。最初のX秒と
    3.リミット再生:ちょうどそのビットレートを取得し、

を提供するために、これまであなたが必要とする以上のものを送信しないバイトのチャンクの大きさを計算し、歌」ヘッダに覗い:人々は意志ストリームを傍受してディスクに保存する(ビジネス側)。ユーザーのトラフィック(良いカルマ)を保存します。

4

これは、HTTPの "Content-range"ヘッダーを使用すると可能です。このヘッダーには「ここからここにバイトを渡して残りを無視してください」というメッセージが表示されます。 Webサーバーがそれらを処理するように設定されている場合(Apacheなど)、206バイトの本文を持つ206応答が返されます。

リスナーとAmazonの間のゲートウェイとして効果的に機能する小さなプロキシアプリケーションを作成する必要があります。

curl -v -I http://www.mfiles.co.uk/mp3-downloads/01-Tartaros%20of%20light.mp3 

URLはあなたのいずれかです。あなたのホストは、コマンドラインからこれを試して応答しますかどうかを確認するために

。運がよければあなたが表示されます。

Accept-Ranges: bytes 
Content-Length: 5284483 

をこれは、サーバがContent-Rangeヘッダを受け入れないと、ファイルの完全な長さは5284483バイト長であることを意味しています。

レッツ・要求ファイルの最初の3分の1は:

curl -H'Range: bytes=0-1761494' http://www.mfiles.co.uk/mp3-downloads/01-Tartaros%20of%20light.mp3 > /tmp/test1.mp3 

あなたは今/tmp/test1.mp3を再生し、トラックの最初の3分の1を聞くことができるはずです。

次のステップは、プロキシアプリケーションを作成することです。良いアプローチはhttps://github.com/aniero/rack-streaming-proxyを使用することですが、あなたはおそらく送信するプロジェクトフォークする必要があるだろう「範囲:バイト= 0から1761494」ヘッダを。あるいはSinatraを見てください。ここ

ボーナスはリモートサーバをプロキシするので、あなたは各ファイルのIDで簡単なデータベーステーブルを持つことによって、ファイルの実際のURLを難読化できることです。あなたが各要求の範囲を計算する必要がないように、各ファイルのバイト長も格納する小さなスクリプトを書くことをお勧めします。

したがってGETに「/プレビュー/ 12345」だろうプロキシ「http://amazon.com/my_long_url」とあなたにファイルのちょうど最初の三分の一を与えます。

これに加えて、あなた自身のサーバーの前にワニスを置くことができます。これは、これらの部分的なMP3ファイルをキャッシュするため、ファイルを取得するためにAmazonに常に戻る必要はありません。