Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
DJ Wind
0 / 0 / 0
Регистрация: 18.12.2013
Сообщений: 6
1

Обработка звукового потока

26.01.2014, 15:32. Просмотров 1140. Ответов 5
Метки нет (Все метки)

В общем суть вопроса таково, есть поток http://online.radiorecord.ru:8102/brks_128 есть библиотека bass воспроизводится все отлично, проблема в том что нужно отследить обрыв потока и перейти с потока на файл допустим mp3, установлен буфер на 5000 миллисекунд...
Pascal
1
2
3
4
5
6
7
procedure TMyThread1.Execute;
begin
BASS_SetConfig(BASS_CONFIG_BUFFER,5000);
BASS_Init(-1, 44100, 0, Handle, nil);
stream:=BASS_streamCreateURL(pansiChar('http://online.radiorecord.ru:8102/brks_128'), 0,0,nil, 0);
BASS_ChannelPlay(stream, false);
end;
подскажите как это можно реализовать с помощью этой библиотеке или подобрать компонент для работы со звуком.
[PS]
перерыл весь инет но так и не нашел ответа... перекопал документацию на bass.dll но обработку ошибок так и не получилось запустить.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2014, 15:32
Ответы с готовыми решениями:

Обработка потока кадров dvb-s
Доброго времени суток, Уважаемые программисты. Столкнулся с такой проблемой: есть некий...

Визуализация звукового потока
Подскажите как реализовать визуализацию звуковых потоков в плеере,как на картинке? 1 вид: есть...

Как заставить визуализацию звукового потока "прыгать выше"
Прикрепляю пример,нужно "заставить их прыгать выше",то есть не максимальную высоту а .... частоту...

Считывание отсчетов звукового сигнала, need some help
Здравствуйте, уважаемые форумчане. Подскажите, пожалуйста, функцию для Дельфи, которая бы считывала...

Остановка проигрывания звукового файла
Здравствуйте. Подскажите пожалуйста: При входе в программу у меня должен автоматически включаться...

5
cotseec
Пишу на Delphi...иногда
1409 / 1268 / 285
Регистрация: 03.12.2012
Сообщений: 3,914
Записей в блоге: 5
Завершенные тесты: 3
26.01.2014, 16:05 2
согласно BASS_StreamCreateURL существует параметр DownloadProc, в этой процедуре можно осуществлять проверку на наличие связи (возможно буфер и/или его длина будут нулевыми), пример использования процедуры можно посмотреть тут
1
DJ Wind
0 / 0 / 0
Регистрация: 18.12.2013
Сообщений: 6
26.01.2014, 16:12  [ТС] 3
Цитата Сообщение от cotseec Посмотреть сообщение
согласно BASS_StreamCreateURL существует параметр DownloadProc, в этой процедуре можно осуществлять проверку на наличие связи (возможно буфер и/или его длина будут нулевыми), пример использования процедуры можно посмотреть тут
спасибо)) буду копать в этом направлении
0
cotseec
Пишу на Delphi...иногда
1409 / 1268 / 285
Регистрация: 03.12.2012
Сообщений: 3,914
Записей в блоге: 5
Завершенные тесты: 3
26.01.2014, 16:13 4
там же (по ссылке) описан флаг BASS_STREAM_STATUS
Pass status info (HTTP/ICY tags) from the server to the DOWNLOADPROC callback during connection. This can be useful to determine the reason for a failure.
1
DJ Wind
0 / 0 / 0
Регистрация: 18.12.2013
Сообщений: 6
26.01.2014, 16:39  [ТС] 5
переделал код
Pascal
1
stream:=BASS_streamCreateURL(pansiChar('http://online.radiorecord.ru:8102/brks_128'), 0,BASS_STREAM_STATUS,@MyDownloadProc(тут ошибка), nil);
выдает ошибку при компилировании
[DCC Error] Unit1.pas(53): E2036 Variable required
я что то не так делаю?

Добавлено через 1 минуту
вот полный код
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
  Forms,Dialogs, bass, MMSystem, StdCtrls, ExtCtrls;
 
 
 
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Timer1: TTimer;
    Label2: TLabel;
    Label3: TLabel;
    Button1: TButton;
    Label4: TLabel;
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
 
  private
    { Private declarations }
 
  public
    { Public declarations }
  end;
 
TMyThread1 = class(TThread)
    private
    { Private declarations }
  protected
    procedure Execute; override;
    procedure MyDownloadProc(const aPBuff : Pointer; aLen : Cardinal; aPUser : Pointer); stdcall;
 
    end;
var
  Form1: TForm1;
  stream: HSTREAM;
  Channel: DWORD;
  PlaySync: HSYNC;
  MyThr: TMyThread1;
implementation
 
{$R *.dfm}
 
procedure TMyThread1.Execute;
begin
BASS_SetConfig(BASS_CONFIG_BUFFER,5000);
BASS_Init(-1, 44100, 0, Handle, nil);
stream:=BASS_streamCreateURL(pansiChar('http://online.radiorecord.ru:8102/brks_128'), 0,BASS_STREAM_STATUS,@MyDownloadProc, nil);
BASS_ChannelPlay(stream, false);
end;
procedure MyDownloadProc(const aPBuff : Pointer; aLen : Cardinal; aPUser : Pointer); stdcall
begin
form1.label1.Caption:= 'Поток потерян';
end;
function ShowForm : Integer; stdcall;
var
        Form : TForm1;
begin
        Form := TForm1.Create(Application);
        Result := Form.ShowModal;
        Form.Free;
end;
 
function AppName(sName:String):String;
begin
  sName:='Плагин 1'
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
MyThr:=TMyThread1.Create(False);
Timer1.Enabled:=True;
end;
 
procedure TForm1.FormDestroy(Sender: TObject);
begin
bass_free;
Timer1.Enabled:=False;
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
var
i:Integer;
TrackPos, stime: variant;
begin
{TrackPos:=BASS_CONFIG_VERIFY;
label3.Caption:= TrackPos;
if TrackPos < 0.4 then begin
label1.Caption:= 'Поток потерян';
end;
if TrackPos > 0.4 then begin
label1.Caption:= 'OK';
end;}
end;
 
exports
ShowForm,AppName;
 
end.
0
cotseec
Пишу на Delphi...иногда
1409 / 1268 / 285
Регистрация: 03.12.2012
Сообщений: 3,914
Записей в блоге: 5
Завершенные тесты: 3
26.01.2014, 16:49 6
MyDownloadProc - отдельная процедура, а не метод класса, в приведенном коде объявлена как метод, реализована как отдельная и при такой реализации всегда будет показано, что разрыв (если будет показано)
0
26.01.2014, 16:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.01.2014, 16:49

Удаление содержимого звукового файла
у меня есть файл (wav или mp3). мне нужно при нажатии на кнопку удалить содержимое этого файла так...

Нарисовать спектр звукового wav файла
Доброго времени суток! Подскажите пожалуйста! Мне необходимо на основании записанного wav файла,...

Передача звукового потока в микрофон
Здравствуйте все форумчане! Хотел бы узнать в какую мне сторону двигаться. Задача такова: Есть...


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

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

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