• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

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 на таймер, но она при каждом ее вызове притормаживает воспроизведение файла.

Есть еще какие функции или методы решения этой проблемы?
 
I

ISDisk

Код:
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;
 
M

M@T$

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

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!