mp3ファイルを使ってギャップレスループを再生しようとしています。いくつかのチュートリアルを読んで、エンコーダー/デコレートされた遅延のようなものがあり、いくつかのツールを使用して適切な音楽データでそのギャップを埋めることができることを学びました. それも問題なく機能しましたが、その音楽をフラッシュで再生しようとすると(実際にはhaxe nmeですが、違いはないと思います)、別の遅延があることを発見しました。これは、おそらくフラッシュによって作成されたものです.media.Sound (実際、インターネットのコードでこのようなコメントがいくつか見つかりました)。
サウンドをより速くまたはより遅く再生する必要がある場合があるため、これが私のプレーヤーの動作方法です。
- 抽出されたバイトはバイト var に格納されます
- speed は float 変数、デフォルト = 1
- 実際の位置をバイト単位で示す position var があります (バイトは多くのサウンド オブジェクトで共有されるため、bytes.position を簡単に使用することはできません)。
- サウンドを再生しているときに、SampleDataEvent ハンドラーで、bytes.position = position * 8 を設定し、2 つのフロートを読み取って再生し、位置 += 速度を更新します。
私がすでに何か間違ったことをしている場合は、指摘してください。
その遅延を取り除くために、私は次のことを試みました。
- DELAY変数を追加
- audacity から読み取ったサウンドの長さをハードコーディングします (flash.media.Sound object.length は正確ではないようです。よくわかりませんが、mp3 デコーダー/エンコーダーの遅延が原因だと思います)。
- 各サウンドが 128kbps、44.1kHz であると仮定する
- DELAY を flash.media.Sound オブジェクトの bytesTotal に設定します - DELAY = ハードコードされた長さ * 128kbps
再生されますが、次のとおりです。
- audacity の mp3 には、まだ厄介なギャップがあります。
- mp3 ギャップを埋めるツール (ここからhttp://www.compuphase.com/mp3/mp3loops.htm ) からの mp3 は、より良く再生されますが、最初の音はクリアではありません。
- 音を止めた後、耳障りな「カチッ」という音が聞こえます。
(1) が発生する理由と、3 つの問題すべてを解決する方法を理解するのを手伝ってもらえますか?