1

私は(NodeJSで)しようとしています:

  1. Icecastインターネットオーディオストリームに接続します。例: http: //icecast3.977music.com/comedy
  2. 応答ヘッダーを解析し、icy-metaint値を抽出します。
  3. 次の目的で、オーディオストリームからメタデータバイトを抽出しながら、生のオーディオデータをファイルに書き込みます。
    • メタデータが到着したら、それをインターセプトして解析します。
    • メタデータバイトが出力ファイルに含まれないため、メタデータが挿入されたためにオーディオアーティファクトが発生しません。

SmackFuの「非公式」Shoutcastメタデータプロトコルページに続いて、私はこれまでに到達することができました:

https://gist.github.com/e7474421dcb25e011620

基本的に、予期されたときにメタデータを抽出できます(要点に含まれるストリームダンプの最初のメタデータイベントは1つだけです)。その部分はうまく機能しているようです。

問題は、おそらくメタデータバイトが到着しているときに、出力MP3ファイルにファイル全体で顕著なオーディオアーティファクトが含まれていることです。しかし、私は間違いなくそれらのメタデータバイトを抽出しており、出力ファイルに含めていないので、それは奇妙な部分です。

上記のリンクのプロトコルドキュメントには、出力ファイルに対して他に何もする必要があるとは書かれていませんが、明らかに私はまだ何か間違ったことをしています。オーディオストリームに対して他に何をする必要があるか知っている人はいますか?前もって感謝します!

4

1 に答える 1

1

Node.jsIRCチャネルでこれを整理することができました。出力されるオーディオバイトの量に「offby1」エラーが発生したため、無効なオーディオファイルが生成されました。

OPに投稿された要点が修正され、正しく機能するようになりました。

この小さな演習の続きは、SHOUTcast/Icecastストリームからオーディオとメタデータを読み取るためにNode.JSモジュールにパッケージ化されています。興味があれば、node-radio-streamをチェックしてください。

于 2010-09-10T20:45:19.230 に答える