2

私はギターの練習用 Web サイトを作成しようとしていますが、重要な機能は、非常に短い mp3 ファイル (数秒の長さ) をループさせ、その間にまったくギャップがないようにすることです。たとえば、4 小節の長さのコード進行をユーザーがシームレスにループできるようにしたいと考えています。

属性付きのHTML5<audio>タグを使ってみました。loopGoogle Chrome はループ間に小さなギャップを与えますが、私の目的にはまったく受け入れられないほど大きいです。他のブラウザはテストしていませんが、動作しないと思います。

ffmpeg考えられる回避策は、mp3 と同じオーディオを使用して繰り返しをストリーミングすることです。ただし、これには多くの帯域幅が必要です。

私自身は、Audacity を使用してギャップなくループしますが、残念ながら Audacity には Web バージョンがありません。

それで、ブラウザでゼロギャップでmp3をループする方法はありますか?私は Flash 以外のソリューションを好みますが、他にうまくいかない場合は Flash を使用します。

編集: すべての提案に感謝します。フラッシュはまともに機能することが判明しました。http://vmlucid.lcm.hk/~netvope/audio/flash.htmlでおもちゃのデモを作成しました。驚いたことに (私は Flash をリソース ホグとブラウザー クラッシュのみに関連付けます)、Flash と ActionScript はかなりよく設計されており、使いやすいです。初めての Flash プロジェクトにかかった時間はたったの 3 時間です :)

4

4 に答える 4

3

このページを見てください。Google Chrome 7 を使用してしばらく聞いてみたところ、方法 1 が適切に機能し、方法 3 が最良の結果をもたらすことがわかりました。最終的に、特に HTML5 はまだ完成していないため、すべてのブラウザの動作は異なります。可能であれば、最適なループが得られると思われる Flash バージョンを選択する必要があります。

于 2010-11-02T04:05:23.557 に答える
1

フラッシュAS3では、 computeSpectrum()を使用してサウンドデータを抽出し、必要なときに正確にサウンドオブジェクトに渡すことができます(SampleDataEventが発生します)。

于 2010-11-02T06:53:22.690 に答える
1

または、このユーティリティをチェックしてください: http://www.compuphase.com/mp3/mp3loops.htm音楽をギャップなしでループさせなければならないとき、Flash プロジェクトでこのユーティリティをうまく使用し、99% の時間で機能しました。入力はWAVです。
基本的には、LAME mp3 エンコーダーの一種のフロントエンドであり、ギャップが発生しないように設定を使用します。非常に短い効果音 (0.5 秒未満) では機能しません。
その後、あなたがしなければならないのは、使用することだけです:

var sound:Sound = new MySoundEffect();
sound.play(0, 1000);

1000回ループします。

于 2010-11-02T10:11:10.957 に答える
1

これがどれほどうまく機能するかはわかりませんが、ループが 800 ミリ秒続くことがわかっている場合は、800 ミリ秒ごとにブラウザーで play メソッドを呼び出すことができますが、完全であるとは限りません。現時点では、ブラウザが信頼できるオーディオ ループをネイティブに提供できるとは思えません。

setInterval(function(){
  document.getElementById("loop").play();
}, 800);

噂によると、複数のオーディオタグを使用してそれらを交互に使用することは、最もギャップのない方法でこれを実現するための最良の方法です。

于 2010-11-02T04:19:25.843 に答える