Передача звука по локальной сети
Для устройств вывода, поддерживающих расширенные функции управления, программа может регулировать громкость звука функцией SetVolume, а также изменять высоту тона и скорость воспроизведения функциями SetPitch/SetPlaybackRate. Более общим способом регулировки громкости является обращение к микшеру (mixer), который является устройством класса Aux.
Для аварийного прерывания обработки потока ис
пользуется функция Reset, немедленно останавливающая процесс записи или воспроизведения и возвращающая все буферы из очереди приложению.
После завершения использования буферов их необходимо освободить от фиксации в памяти функциями Unprepare, после чего буферы могут быть возвращены в пул динамической памяти (heap).
При полном завершении работы с устройством оно закрывается функцией Close.
3.2 Постановка задачи по разработке программного продукта
Разработать программу для передачи звука по локальной сети.
Приложения оформить в виде визуальных приложений.
Входные данные: параметры сети.
Выходные данные: выведенная найденная информация.
Функции:
– определение портов сети;
– вывод времени радиовещания.
3.3 Создание приложения передачи звука. Программная реализация приложения «транслятор»
Класс программы «Транс»– «Form1». Его описание – на рисунке 1.
Класс «Form1» |
Открытые поля |
public string dan |
public string ip |
StartButton.Enabled := True; |
Открытые методы |
TForm1.StopButtonClick |
TForm1.Timer1Timer |
TForm1.WMStreamedOut1ThreadException |
TForm1.FormCreate |
Рисунок 1 – описание класса Form1
Поле ip используется для обращения ip-адреса приложения. Метод Timer1 используется для посчета интервала времени. В нём производится сбор информации об адаптерах, остальная информация собирается с помощью методов, вызванных в коде этого метода.
Листинг метода OSNMET() с комментариями:
unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ACS_Classes, StdCtrls, ComCtrls, ACS_DXAudio, Spin, ExtCtrls, ACS_Wave,
ACS_WinMedia;
type
TForm1 = class(TForm)
StartButton: TButton;
StatusBar1: TStatusBar;
StopButton: TButton;
Timer1: TTimer;
Label2: TLabel;
SpinEdit2: TSpinEdit;
Label3: TLabel;
Label4: TLabel;
PauseButton: TButton;
DXAudioIn1: TDXAudioIn;
WMStreamedOut1: TWMStreamedOut;
procedure StartButtonClick(Sender: TObject);
procedure OutputDone(Sender: TComponent);
procedure StopButtonClick(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure SpinEdit2Change(Sender: TObject);
procedure PauseButtonClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure WMStreamedOut1ThreadException(Sender: TComponent);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.StartButtonClick(Sender: TObject);
begin
StartButton.Enabled := False;
SpinEdit2.Enabled := False;
WMStreamedOut1.Run;
Timer1.Interval := 1000;
end;
procedure TForm1.OutputDone(Sender: TComponent);
begin
StartButton.Enabled := True;
SpinEdit2.Enabled := True;
end;
procedure TForm1.StopButtonClick(Sender: TObject);
begin
WMStreamedOut1.Stop;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Label2.Caption := Format('Продолжительность: %d секунд', [WMStreamedOut1.TimeElapsed]);
end;
procedure TForm1.WMStreamedOut1ThreadException(Sender: TComponent);
begin
Self.StatusBar1.Panels[0].Text := WMStreamedOut1.ExceptionMessage;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
SpinEdit2.MaxValue := DXAudioIn1.DeviceCount - 1;
SpinEdit2.MinValue := 0;
SpinEdit2.Value := 0;
Label4.Caption := DXAudioIn1.DeviceName[SpinEdit2.Value];
end;
procedure TForm1.SpinEdit2Change(Sender: TObject);
begin
Label4.Caption := DXAudioIn1.DeviceName[SpinEdit2.Value];
DXAudioIn1.DeviceNumber := SpinEdit2.Value;
end;
procedure TForm1.PauseButtonClick(Sender: TObject);
begin
if WMStreamedOut1.Status = tosPlaying then WMStreamedOut1.Pause;
if WMStreamedOut1.Status = tosPaused then WMStreamedOut1.Resume;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
WMStreamedOut1.Stop(False);
end;
end. По нажатию на кнопку «Запуск» полю для хранения IP-адреса серввера присваивается значение, находящееся в поле для ввода IP-адреса. Зпускается timer1, отвечающий за отправление информации серверу, и форма становится прозрачной.
3.4 Результаты тестирования
Для запуска программы необходимо открыть файл RadioStation.exe на каком-либо компьютере сети. После запуска программы нам остается выбрать аудиоустройство, с которого мы будем транслировать звук, и щелкнуть кнопку "Старт" рис 2.
Рисунок 2 – Выбор устройства
Для того чтобы "настроиться" на нашу радиостанцию, нужно запустить проигрыватель Windows Media, выбрать команду "Файл >> Открыть URL-адрес…" и в открывшемся окне ввести адрес вида mms://<имя_узла>:<порт>
В результате, в окне будут отображаться, данные как показано на рисунке 3.
Рисунок 3 – Открытие URL-адреса
После этого вы можете насладиться прослушиванием рисунок 4.
Рисунок 4 – Результат тестирования программы
Заключение
Для получения правдоподобного звучания эффектов обычно делается несколько последовательных задержек звука, в которых копия исходного сигнала постепенно ослабляется. В приведенной программе для простоты делается только одна задержка, причем копия сигнала не ослабляется.
При выполнении данного курсового проекта были закреплены навыки работы с локальными вычислительных сетями, программирование сетевых приложений, теоретические знания по предмету «Сети ЭВМ».
В курсовом проекте была разработана:
Программа позволяющая передавать звук, как по локальной сети, так и по глобальной сети интернет;
- программа «транслятор», которая позволяет передавать звук по сети;
Другие рефераты на тему «Программирование, компьютеры и кибернетика»:
Поиск рефератов
Последние рефераты раздела
- Основные этапы объектно-ориентированного проектирования
- Основные структуры языка Java
- Основные принципы разработки графического пользовательского интерфейса
- Основы дискретной математики
- Программное обеспечение системы принятия решений адаптивного робота
- Программное обеспечение
- Проблемы сохранности информации в процессе предпринимательской деятельности