|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Как узнать позицию при записи 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
|
|||
|
|||
В одной секунде - 1000 миллисекунд. В чём проблема конвертировать в необходимую величину?
PS: ну и если уж надо получить время в миллисекундах, тогда надо задать для начала этот параметр: Код:
com:='set AGD time format ms'; mciSendString(com, @sbReturn, 64, 0); Последний раз редактировалось CynicRus, 30.03.2015 в 10:16. |
#3
|
|||
|
|||
Проблема в том, что выдаются и так миллисекунды, но округлённые до 1000! А мне надо не округлённые! Вы б запустили код и посмотрели, что он выдаёт.
set AGD time format ms - у меня установлено, внимательно смотрите мой пост. |