私はdecodeAudioDataを使用して、より大きいmp3ファイルの最初の部分を、javascriptでデコードして再生しようとしています。私の最初の、粗い、アプローチは、mp3の始めから数バイトをスライスし、decodeAudioDataにそれらを与えることでした。驚くことではないが、これは失敗する。decodeAudioData(WebAudio API)の '有効なmp3チャンク'を定義します。
掘り出した後、decodeAudioDataはFair Dinkum Thinkum、hereと記載されている「有効なmp3チャンク」でしか動作しないようです。
しかし、有効なmp3チャンクの構造についての説明はありません(上記の著者はこれに含まれません)。私はそこに存在する様々なMP3スプリッタを認識していますが、私はこれをプログラム的にアプローチしたいと思います。 (私は、サーバー側でnodejを使用して「貧乏人のストリーミング」を実装しようとしています)。
だから、mp3フレームヘッダーを分割するだけで十分ですか、それとももっと処理する必要がありますか? (おそらく、最後にデータを追加することで、すべてのチャンクを「閉じる」のだろうか?)「バイトリザーバ」はどうですか?これは問題を引き起こすでしょうか?記録のために、私は現在128kbpsのcbr mp3で作業しています。これはどんな方法でもプロセスを簡素化しますか?
decodeAudioDataがvaildデータとして期待していることに関するすべての情報が評価されます。
ありがとうございます。
PS:これは恐らくFair Dinkum Thinkumのpostについての明確化の要求であることを認識していますが、私の評判が低いためコメントが投稿されません。だから私はそれを他の方法ではなく、新しい質問で見ることができません。再度、感謝します。
mp3チャンクは1フレームで、0.028秒の音声を表します。そのフレームのサイズは、エンコードされたオーディオのビットレートに応じて可変です。 CBR mp3は、フレームサイズがファイル全体で一定であり、オーディオの特定の「タイムスタンプ」のオフセットを簡単に計算できるため、作業が楽になります。 –
たとえば、128kbpsのmp3ファイルには、417バイトのフレームと418バイトのフレームが含まれているため、これは当てはまりません。 (いくつかのフレームにはパディングとして余分なバイトが含まれています) – biril