NewAC Page NewAC Documentation in English

Ответы на технические вопросы по NewAC

Как превратить «сырое» аудио в файл wav (или другой формат)?

Как с помощью NewAC и Delphi записать передачу сетевой радиостанции?

Как превратить «сырое» аудио в файл wav (или другой формат)?

Предположим, у вас на диске записан файл сырого аудио (целочисленные чередующиеся аудио-семплы) и вы хотите конвертировать этот файл в один из аудио-форматов, поддерживаемых 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 и Delphi записать передачу сетевой радиостанции?

В состав 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>