Форум по Delphi программированию



Вернуться   Форум по Delphi программированию > Все о Delphi > Мультимедиа
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.03.2015, 21:57
romserg romserg вне форума
Прохожий
 
Регистрация: 29.03.2015
Сообщения: 12
Версия Delphi: Delphi 7
Репутация: 10
Вопрос Как узнать позицию при записи wav через mciSendString?

Использую код Delphi:

Код:
var s:array [0..255] of char;
begin
 fn := '12.wav';

 mciSendString(PChar('open new type waveaudio alias AGD'), nil, 0, 0);

 mciSendString('set AGD time format milliseconds format tag pcm ' +
                    'bitspersample 16 channels 1 samplespersec 44100 ' +
                    'alignment 2 bytespersec 88200' , nil, 0, 0);

 mciSendString(PChar('record AGD to 5222'), nil, 0, 0);

 repeat
  mciSendString('status AGD position', @s, sizeof(s), 0);
  OnEvt(s);
  mciSendString('status AGD mode', @s, sizeof(s), 0);
  sleep(20);
 until s = 'stopped';

 mciSendString(PChar('save AGD "' + fn + '"'), nil, 0, 0);
 mciSendString('close AGD', nil, 0, 0);
end;

Но выдаёт в ф-цию OnEvt секунды*1000 (т.е. 1000, 2000, 3000...) вместо миллисекунд, только в конце, после 5000, выдаёт 5222. При этом аналогичный код для воспроизведения нормально выдаёт миллисекунды! Как же узнать миллисекунды при записи и почему так происходит?
Ответить с цитированием
  #2  
Старый 30.03.2015, 09:57
CynicRus CynicRus вне форума
Прохожий
 
Регистрация: 26.02.2013
Сообщения: 30
Версия Delphi: Lazarus, XE 3.
Репутация: 10
По умолчанию

В одной секунде - 1000 миллисекунд. В чём проблема конвертировать в необходимую величину?

PS: ну и если уж надо получить время в миллисекундах, тогда надо задать для начала этот параметр:
Код:
 com:='set AGD time format ms';
mciSendString(com, @sbReturn, 64, 0);
или что-то типа того.

Последний раз редактировалось CynicRus, 30.03.2015 в 10:16.
Ответить с цитированием
  #3  
Старый 30.03.2015, 19:03
romserg romserg вне форума
Прохожий
 
Регистрация: 29.03.2015
Сообщения: 12
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Проблема в том, что выдаются и так миллисекунды, но округлённые до 1000! А мне надо не округлённые! Вы б запустили код и посмотрели, что он выдаёт.

set AGD time format ms - у меня установлено, внимательно смотрите мой пост.
Ответить с цитированием
Ответ



Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:06.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2021

ВКонтакте   Facebook   Twitter   Ссылка на Telegram