powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Определение продолжительности аудио
6 сообщений из 6, страница 1 из 1
Определение продолжительности аудио
    #38250566
kulikovskih
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пожалуйста как получить продолжительность аудио файлов, лежащих в каталоге
...
Рейтинг: 0 / 0
Определение продолжительности аудио
    #38250578
kulikovskih
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
добавлю, файлы с расширением *.wav
...
Рейтинг: 0 / 0
Определение продолжительности аудио
    #38250647
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читай заголовок и разбирай побайтно. Структура заголовка описана
...
Рейтинг: 0 / 0
Определение продолжительности аудио
    #38250717
kulikovskih
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
из структуры заголовка не понял где хранится размер и как его перевести в секунды. Подскажите?
...
Рейтинг: 0 / 0
Определение продолжительности аудио
    #38251019
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читаешь структуру заголовка.
Определяешь размер сэмпла (при указанных параметрах формата в заголовке).
Делишь размер области данных на размер сэмпла - и получаешь длительность...
...
Рейтинг: 0 / 0
Определение продолжительности аудио
    #38252564
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как-то так
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
func GetWavDuration
lpara tcFile
LOCAL lcHdr, lnBitsPerSample, lnChunkSize, lnH, lnNumChannels, lnSampleRate
lnH = fopen(tcFile)
if lnH > 0
	lcHdr = fread(lnH, 44)
	fclose(lnH)
else
	? 'Ошибка открытия файла', tcFile
	return 0
endif

if left(lcHdr, 4) != 'RIFF'
	? 'Неправильная структура файла', tcFile
	return 0
endif

lnSubChunk2Size = ctobin(substr(lcHdr, 41, 4), '4RS')
lnBitsPerSample = ctobin(substr(lcHdr, 35, 2), '2RS')
lnNumChannels = ctobin(substr(lcHdr, 23, 2), '2RS')
lnSampleRate = ctobin(substr(lcHdr, 25, 4), '4RS')

return lnSubChunk2Size / (lnNumChannels * lnSampleRate * lnBitsPerSample / 8)
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Определение продолжительности аудио
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]