Форум программистов, компьютерный форум, киберфорум
Наши страницы
Lazarus
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.73/26: Рейтинг темы: голосов - 26, средняя оценка - 4.73
alekushka
0 / 0 / 0
Регистрация: 18.11.2014
Сообщений: 34
1

Звук в Лазарус

11.01.2015, 01:29. Просмотров 4937. Ответов 22
Метки нет (Все метки)

В Delphi в библиотеке System есть компонент MediaPlayer. В Лазарус я этот компонент нигде не нашла. Подскажите, пожалуйста, есть ли в Лазарус какой-нибудь аналог MediaPlayer? Если есть, то где он? Если нет, то как решить проблему: в определенных местах программы должны воспроизводиться различные звуки и речь?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2015, 01:29
Ответы с готовыми решениями:

Лазарус и БД
Здравствуйте, уважаемые форумчане, есть такая тема, Lazarus подключается к БД...

лазарус
Объясните блок схему программы Лазарус

БД в Лазарус
Доброго времени суток уважаемые форумчане. Есть задачка выполнить БД в лазарус....

OpenGl и лазарус
Что добавлять в uses?

Обновление Лазарус
Добрый день, подскажите плииииз. Есть ли в Лазарус механизм...

22
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
26130 / 17523 / 6949
Регистрация: 22.10.2011
Сообщений: 30,859
Записей в блоге: 6
11.01.2015, 01:41 2
Нет. Потому что нет кроссплатформенных методов проигрывания звуков. Используй запуск внешнего проигрывателя, который умеет играть твои звуки, либо, если программа будет запускаться только под Windows - используй WinAPI, там есть свои средства для воспроизведения звуков...

Также можно использовать кроссплатформенные сторонние библиотеки. Вот тут многие способы перечислены: Multimedia Programming
2
alekushka
0 / 0 / 0
Регистрация: 18.11.2014
Сообщений: 34
30.01.2015, 23:00  [ТС] 3
Будет запускаться только из-под Windows. Но дома делаю на ХР, а на ХР или на более высокой версии придется демонстрировать результат еще не знаю. И ещё: во время работы программы проигрыватель не должен быть виден. В этом случае WinAPI подойдет? Если подойдет, то можно для его использования код Pascal с комментариями в каждой строчке?
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
26130 / 17523 / 6949
Регистрация: 22.10.2011
Сообщений: 30,859
Записей в блоге: 6
30.01.2015, 23:02 4
Цитата Сообщение от alekushka Посмотреть сообщение
В этом случае WinAPI подойдет?
Подойдет, примеров по использованию PlaySound на форуме - море.
1
alekushka
0 / 0 / 0
Регистрация: 18.11.2014
Сообщений: 34
31.01.2015, 00:01  [ТС] 5
Читаю на форуме, но не найду: звук в каком формате должен быть? МР3 подойдет или как в Делфи нужно обязательно в WAV перекодировать?
0
northener
пофигист широкого профиля
3423 / 2323 / 630
Регистрация: 15.07.2013
Сообщений: 13,748
31.01.2015, 03:21 6
Цитата Сообщение от alekushka Посмотреть сообщение
звук в каком формате должен быть? МР3 подойдет или как в Делфи нужно обязательно в WAV перекодировать?
А при чём тут Лазарус? Всё зависит только от ОС Windows. Если она не очень старая и если файл mp3 более-менее стандартный, то звук воспроизведётся.
1
alekushka
0 / 0 / 0
Регистрация: 18.11.2014
Сообщений: 34
31.01.2015, 11:33  [ТС] 7
В раздел uses добавляю mmsystem. Потом в процедуре открытия формы пишу:

PlaySound('664112.wav', 0, SND_ASYNC or SND_LOOP);

Нужный звук воспроизводится по кругу. Здесь со всем разобралась.
А что делать, если мне нужна воспроизвести два разных звука одновременно или же второй должен уже начинать играть, а первый ещё должен звучать? Как быть в этом случае?
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
26130 / 17523 / 6949
Регистрация: 22.10.2011
Сообщений: 30,859
Записей в блоге: 6
31.01.2015, 12:11 8
Цитата Сообщение от alekushka Посмотреть сообщение
Как быть в этом случае?
Либо делать несколько потоков, и запускать каждый звук в своем потоке (если получится), либо брать-таки стороннюю библиотеку, которая умеет проигрывать несколько звуков одновременно. PlaySound этого не умеет.
0
alekushka
0 / 0 / 0
Регистрация: 18.11.2014
Сообщений: 34
31.01.2015, 13:49  [ТС] 9
а какая умеет?
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
26130 / 17523 / 6949
Регистрация: 22.10.2011
Сообщений: 30,859
Записей в блоге: 6
31.01.2015, 13:52 10
Библиотека Bass умеет
1
alekushka
0 / 0 / 0
Регистрация: 18.11.2014
Сообщений: 34
31.01.2015, 14:06  [ТС] 11
где про нее можно поподробнее почитать? можно ссылку или как правильно в поисковик забить что бы о ней почитать?
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
26130 / 17523 / 6949
Регистрация: 22.10.2011
Сообщений: 30,859
Записей в блоге: 6
31.01.2015, 15:19 12
Лучший ответ Сообщение было отмечено volvo как решение

Решение

alekushka, создай новый проект в Лазарусе, положи на форму 2 кнопки, и назначь обработчики на OnClick этим кнопкам, и на OnCreate/OnDestroy формы. Вот такие:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
uses LBass; // <--- Подключаем BASS
 
{$R *.lfm}
 
var
  sound : TBass;
 
{ TForm1 }
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  sound.InitBass;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  sound.load(ExtractFilePath(ParamStr(0)) + 'music' + PathDelim + 'first.mp3', 1);
  sound.play(1, True);
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
  sound.load(ExtractFilePath(ParamStr(0)) + 'music' + PathDelim + 'second.mp3', 2);
  sound.play(2, True);
end;
 
procedure TForm1.FormDestroy(Sender: TObject);
begin
  sound.DoneBass;
end;
 
end.
, где \music\first.mp3 и \music\second.mp3 - это твои звуковые файлы, путь к ним сам подправишь.

Содержимое приаттаченного архива надо распаковать прямо рядом с исходниками твоего проекта. Запускай, и нажимай сначала на одну кнопку, а потом - на другую, оба звука будут воспроизводиться одновременно.
3
Вложения
Тип файла: 7z tst_bass.7z (103.4 Кб, 164 просмотров)
alekushka
0 / 0 / 0
Регистрация: 18.11.2014
Сообщений: 34
31.01.2015, 16:15  [ТС] 13
еще один вопрос (надеюсь, что последний))))):OnClick- это одинарный щелчок по объекту, а FormDestroy - это что за событие?
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
26130 / 17523 / 6949
Регистрация: 22.10.2011
Сообщений: 30,859
Записей в блоге: 6
31.01.2015, 16:17 14
Это разрушение формы (если в приложении одна форма - значит, сработает при закрытии приложения)
1
alekushka
0 / 0 / 0
Регистрация: 18.11.2014
Сообщений: 34
31.01.2015, 16:18  [ТС] 15
все же получился не последний вопрос: остановить воспроизведение в нужном месте и воспроизводить по кругу в таком случае как?
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
26130 / 17523 / 6949
Регистрация: 22.10.2011
Сообщений: 30,859
Записей в блоге: 6
31.01.2015, 16:24 16
Воспроизводиться и так будет по кругу,
Pascal
1
sound.play(1, True); // True указывает, что надо зациклить воспроизведение
, а чтобы остановить - надо вызвать
Pascal
1
sound.stop(1); // 1 - номер нужного канала. Здесь прекратится первая мелодия
1
alekushka
0 / 0 / 0
Регистрация: 18.11.2014
Сообщений: 34
31.01.2015, 16:33  [ТС] 17
форму разрушаем, если я правильно понимаю, для того, что бы проект меньше весил? и еще: проект обязательно создавать новый или можно добавить новую форму в уже имеющийся проект и написать нужные процедуры для этой формы? Дело в том, что у меня проект уже почти готов. Осталось только озвучить
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
26130 / 17523 / 6949
Регистрация: 22.10.2011
Сообщений: 30,859
Записей в блоге: 6
31.01.2015, 17:23 18
Цитата Сообщение от alekushka Посмотреть сообщение
форму разрушаем, если я правильно понимаю, для того, что бы проект меньше весил?
Форму разрушаем, когда закрываем программу, потому что потом она нафиг никому не нужна. Ты что вообще ничего о формах не знаешь? Тогда иди лучше читай букварь по работе с VCL/LCL, а не лезь в воспроизведение звуков, да еще и одновременное, тем более с использованием сторонних библиотек.
0
alekushka
0 / 0 / 0
Регистрация: 18.11.2014
Сообщений: 34
31.01.2015, 18:35  [ТС] 19
я вижу, что разрушаем, когда закрываем программу. О формах и модулях знаю, но не более чем учили в университете в 2003-2005 годах, на 3-5 курсах, когда Делфи изучали
0
alekushka
0 / 0 / 0
Регистрация: 18.11.2014
Сообщений: 34
01.03.2015, 09:29  [ТС] 20
Цитата Сообщение от volvo Посмотреть сообщение
читай букварь по работе с VCL/LCL
ссылку на букварь можно? Время почитать появилось
0
01.03.2015, 09:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.03.2015, 09:29

Перспективы Лазарус
Добрый день, проконсультируйте плиииз! Хочу понять перспективность...

Конвертер Лазарус
Добрый вечер. Прошу помощи, не могу понять как сделать. В общем, я ввожу...

Структуры в лазарус
Код на С++, как можно тоже самое написать в лазарус ? struct coordinate{ ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru