NewAC
Page
NewAC
Documentation in English
Как превратить «сырое» аудио в файл wav (или другой формат)?
Как с помощью NewAC и Delphi записать передачу сетевой радиостанции?
Предположим, у вас на диске записан файл сырого аудио (целочисленные чередующиеся аудио-семплы) и вы хотите конвертировать этот файл в один из аудио-форматов, поддерживаемых NewAC, например, в формат wav. Для этого нужно воспользоваться двумя компонентами: TStreamIn и TWaveOut. Компонент TStreamIn позволяет читать аудио из объекта-потока (TFileStream, TMemoryStream, TResourceStream и т.п.). Компонент TWaveOut сохраняет аудио-данные в формате wav. Размещаем эти компоненты в форме:
Свойству Input объекта WaveOut1 назначаем ссылку на объект StreamIn1. Для сохранения сырого аудио в формате wav напишем такой код:
var FS : TFileStream; begin // Открываем файл "сырого" аудио в объекте-потоке для чтения FS := TFileStream.Create('samples.raw', fmOpenRead); // Присваиваем ссылку на объект-поток свойству Stream объекта StreamIn1 StreamIn1.Stream := FS; // Объект StreamIn1 "не знает" таких параметров аудио как количество бит на семпл, // частота дискретизации и количество каналов. Мы должны сообщить ему эти данные. StreamIn1.InBitsPerSample := 16; StreamIn1.InSampleRate := 44100; StreamIn1.InChannels := 2; // Назначаем имя файла для сохранения данных в формате wav WaveOut1.FileName := 'samples.wav'; // Запускаем процесс преобразования WaveOut1.Run; end;
Метод Run сразу же возвращает управление, а сам процесс преобразования выполняется в отдельном потоке. По завершении процесса будет вызвано событие OnDone объекта WaveOut1.
В состав NewAC входит компонент TWMStreamedIn, который позволяет записывать и прослушивать передачи сетевых радиостанций, транслируемые в форматах WMA и mp3. Компонент TWMStreamedIn работает так же, как и компоненты, предназначенные для чтения данных с диска, только свойству FileName присваивается не имя файла, а сетевая ссылка на сервер радиостанции. Полученные из сети данные компонент декодирует в обычный аудио-поток который можно прослушивать, конвертировать и сохранять в различных форматах с помощью других компонентов New Audio Components. Одна из тонкостей, связанных с компонентом TWMStreamedIn заключается в том, какую именно ссылку следует передавать свойству FileName. Обычно ссылки на радио в интернете имеют вид http://www.site.com/radio.asax или http://www.site.com/radio.m3u такие ссылки (и им подобные) указывают не на сами серверы, транслирующие интернет-радио, а на «интернет-ярлыки» - XML-файлы. в которых содержатся описания радиостанции и прямые ссылки на серверы. Свойству FileName компонента TWMStreamedIn следует присваивать прямую ссылку на сервер, а не ссылку на ярлык (извлекать ссылки из файлов-ярлыков сам компонент пока не умеет). Прямая ссылка на сервер-источник сетевого аудио выглядит так: http://joe.relay.c9radio.net:8000/ или так: mms://livewmstream-ws.bbc.co.uk.edgestreams.net/reflector:38288. Эти ссылки и следует назначать свойству FileName.
В пакет NewAC входит демо-программа, которая показывает, как можно одновременно прослушивать и сохранять на диске (в формате WMA) передачи сетевых радиостанций с помощью компонента TWMStreamedIn (эта программа расположена в каталоге demos\Recorders-Rippers\RadioRecorder). Для упрощения тестирования вместе с этой программой поставляется файл station.ini, который содержит прямые ссылки на несколько серверов сетевого радио. В процессе запуска программа RadioRecorder считывает содержимое этого файла и позволяет выбрать одну из предустановленных ссылок. Если вы пишете собственную программу прослушивания/записи сетевого радио с помощью компонента TWMStreamedIn, вы, конечно, можете придумать другой механизм передачи ссылок компоненту.
Еще про NewAC по-русски Страница NewAC На главную
© 2008 Андрей Боровский <anb @ symmetrica.net>