Извлечение метаданных Icecast создает артефакты в выходных аудиоданных - PullRequest
1 голос
/ 10 сентября 2010

Я пытаюсь (в NodeJS ):

  1. Подключиться к Icecast интернет-аудио потоку.Пример: http://icecast3.977music.com/comedy
  2. Разобрать заголовки ответа и извлечь значение icy-metaint.
  3. Записать необработанные аудиоданные в файл, извлекая байты метаданных из аудиопотока в порядкеto:
    • Перехватывать и анализировать метаданные, когда они поступают.
    • Не включать байты метаданных в выходной файл, так что нет никаких аудио-артефактов из-за введенных метаданных.

Следуя странице "неофициального" протокола метаданных Shoutcast от SmackFu, я смог пройти дальше:

https://gist.github.com/e7474421dcb25e011620

По сути, я могу извлечь метаданные, когда они ожидаются (в самом начале потокового дампа есть только 1 событие метаданных, включенное в gist ).Эта часть, кажется, работает нормально.

Проблема в том, что выходной файл MP3 имеет заметные звуковые артефакты по всему файлу, предположительно, когда поступают байты метаданных.Тем не менее, я определенно извлекаю эти байты метаданных, а НЕ включаю их в выходной файл, так что это странная часть.

В протоколе по ссылке выше не сказано, что с выходом нужно что-то еще делатьфайл, но, очевидно, я все еще делаю что-то не так.Кто-нибудь знает, что еще нужно сделать с аудиопотоком?Заранее спасибо!

1 Ответ

1 голос
/ 11 сентября 2010

Мне удалось разобраться с этим на IRC-канале Node.js. У меня была ошибка «off by 1» в количестве выводимых аудиобайт, поэтому я вывел неверный аудиофайл.

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

* * * * * *

Продолжение этого небольшого упражнения упаковывается в модуль Node.JS для чтения аудио и метаданных из потока SHOUTcast / Icecast. Проверьте node-radio-stream , если вам интересно.

...