• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Bass.dll - определение позиции проигрывания потока.

  • Автор темы Автор темы kalexi
  • Дата начала Дата начала
K

kalexi

Такое дело. У меня проигрывается файл. Я сделал бар для того, чтобы можно было менять позицию проигрывания (мотать). Все просто, делается так:

Код:
PosBar.max = := BASS_StreamGetLength(result);

procedure TmainFrm.PosBarScroll(Sender: TObject;
ScrollCode: TScrollCode; var ScrollPos: Integer);
begin
if ScrollCode=scEndScroll then
if not BASS_ChannelSetPosition(result,PosBar.Position) then
PosBar.Position := 0;
end;

Все работает НО мне еще необходимо чтобы этот PosBar менял свою позицию во время проигрывания.
Пытался повесить функцию BASS_ChannelGetPosition на таймер, но она при каждом ее вызове притормаживает воспроизведение файла.

Есть еще какие функции или методы решения этой проблемы?
 
Код:
procedure TForm1.TimerPosTimer(Sender: TObject);
var
p: DWORD;
time: String;
begin
if (BASS_ChannelIsActive(Chan) > 0) then // playing - update info
begin
p := seeking;
if (seeking = -1) then // not seeking - update pos scroller
begin
p := Trunc(BASS_ChannelBytes2Seconds(Chan, BASS_ChannelGetPosition(Chan)));
PosBar.Position := p;
end;
end;

end;
 
Как отследить резкое увеличение звукового сигнала..........и обратно.......

В Delphi 7
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab