私は(NodeJSで)しようとしています:
- Icecastインターネットオーディオストリームに接続します。例: http: //icecast3.977music.com/comedy
- 応答ヘッダーを解析し、
icy-metaint
値を抽出します。 - 次の目的で、オーディオストリームからメタデータバイトを抽出しながら、生のオーディオデータをファイルに書き込みます。
- メタデータが到着したら、それをインターセプトして解析します。
- メタデータバイトが出力ファイルに含まれないため、メタデータが挿入されたためにオーディオアーティファクトが発生しません。
SmackFuの「非公式」Shoutcastメタデータプロトコルページに続いて、私はこれまでに到達することができました:
https://gist.github.com/e7474421dcb25e011620
基本的に、予期されたときにメタデータを抽出できます(要点に含まれるストリームダンプの最初のメタデータイベントは1つだけです)。その部分はうまく機能しているようです。
問題は、おそらくメタデータバイトが到着しているときに、出力MP3ファイルにファイル全体で顕著なオーディオアーティファクトが含まれていることです。しかし、私は間違いなくそれらのメタデータバイトを抽出しており、出力ファイルに含めていないので、それは奇妙な部分です。
上記のリンクのプロトコルドキュメントには、出力ファイルに対して他に何もする必要があるとは書かれていませんが、明らかに私はまだ何か間違ったことをしています。オーディオストリームに対して他に何をする必要があるか知っている人はいますか?前もって感謝します!