アップロード前のJSにおけるオーディオビットとサンプリングレート情報の抽出

StackOverflow https://stackoverflow.com//questions/12700701

質問

私は認証されたユーザーがウェブブラウザを使用してネットワーク上のオーディオを配布するために、Webブラウザを使用することを可能にするアプリケーションを構築しています。オーディオファイルは、帯域幅を効率的に使用するために特定のビットレート(32kbps以下)を使用し、互換性を最大化するために承認されたサンプリングレート(22.050または44.100)を確実に使用する必要があります。サーバーサイドスクリプトを使用してアップロードに従ってこれらの要件を検証するのではなく、アップロードの前にこの情報を決定するためにHTML5 FileReaderを使用することを望んでいました。ブラウザが無効なビットレートおよび/またはサンプリングレートを検出した場合、ユーザはこれを推薦することができ、必要になるまでアップロード試行をブロックすることができます。

これはHTML5を使って可能ですか?問題は、私のアプリケーションのアプローチではなく、HTML5に関するものです。 HTML5はMP3オーディオファイルのサンプリングレートおよび/またはビットレートを検出できますか?

FYI注:アップロードを実行するためにFTP Javaアプレットを使用しています。アップロードが成功した後に、ユーザーを自動的にユーザーのURLに転送するようにアプレットが設定されています。これにより、サーバー上ではなく、クライアントに重いリフティングができます。アップロードされた各ファイルの最終宛先は異なるため必要です。それらは、さまざまなサーバーと異なるドメイン上にあり、おそらくサーバー上のさまざまなスクリプト言語をサポートしています。そうでない場合は、任意の1つのサーバーがそのストレージスペースをすばやく超えているため、サーバー側のスクリプトがFTP転送を行った場合、サーバーのパフォーマンスは単一の障害点としてすばやく劣化します。そのため、アップロードされたオーディオファイルを複数のサーバーと複数のドメインに保存するアプリケーションでは、ビットレートとサンプリングレートの検証はクライアント側で行われなければなりません。

役に立ちましたか?

解決

FileReader APIとJavaScriptの組み込みのオーディオコーデックを使用して、オーディオファイルからこの情報を抽出できます。

純粋なJSコーデックのベースコードを提供する1つのライブラリはaurora.jsです。その後、実際のコーデックコードはそれに基づいて構築されています

https://github.com/audiocogs/aurola.js/wiki./既知の用途

当然ブラウザはFileReader APIをサポートしている必要があります。

あなたのユースケースからわからなかったのは、JavaアプレットやFTPが必要な理由です。HTTPアップロードは、ASYNC BADCKEND(NODE.JS、Python Twisted)とスケーラブルストレージ(Amazon S3など)を適切にして実行した場合、複数のビッグファイルに対して機能します。同様のユースケースは、ファイルからオーディオメタデータを抽出するよりもはるかに厳しいアプリケーションである入ってくる画像のサイズを変更しています。クライアント側での唯一の利点は、実際に認識されていないユーザーによる不要なアップロードの数を減らすことです。

他のヒント

誰もがあなたのスクリプト/マークアップを変更してこれを迂回したり、それを再目的にすることさえすることもできます。

HTML / JavaScriptに関する少し知識を持つ検証スクリプトを変更できる場合は、HTML / JavaScriptを使用しないでください。検証されていることを確認しやすく、サーバー上で検証することで正しく検証されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top