Передача звука по локальной сети

Для устройств вывода, поддерживающих расширенные функции управления, программа может регулировать громкость звука функцией 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 – Результат тестирования программы

Заключение

Для получения правдоподобного звучания эффектов обычно делается несколько последовательных задержек звука, в которых копия исходного сигнала постепенно ослабляется. В приведенной программе для простоты делается только одна задержка, причем копия сигнала не ослабляется.

При выполнении данного курсового проекта были закреплены навыки работы с локальными вычислительных сетями, программирование сетевых приложений, теоретические знания по предмету «Сети ЭВМ».

В курсовом проекте была разработана:

Программа позволяющая передавать звук, как по локальной сети, так и по глобальной сети интернет;

- программа «транслятор», которая позволяет передавать звук по сети;

Страница:  1  2  3  4  5  6  7 


Другие рефераты на тему «Программирование, компьютеры и кибернетика»:

Поиск рефератов

Последние рефераты раздела

Copyright © 2010-2024 - www.refsru.com - рефераты, курсовые и дипломные работы