Консультация № 137631
20.05.2008, 15:09
0.00 руб.
0 1 1
Доброго дня уважаемые эксперты!
Вопрос у меня к Вам следующий.Есть Вав файл в псм.тип его при анализе 1.и канал в нем моно тоесть тоже 1.имеется буфер данных в которых содержатся только данный из поля DATA. какова длина семпла в байтах.нашел что если два канала то длина по 4 байта.тоесть два на левый и два на правый.а как быть с моно.по сколько считывать?по 2 или 4 а может и то больше?нигде не смог найти этой информации.может быть и плохо искал.

Обсуждение

Неизвестный
21.05.2008, 09:19
общий
это ответ
Здравствуйте, Ferzz!
Не совсем вас понял... вы занимаетесь программным считыванием wav-файла?Т.е. программно его обрабатываете из самостоятельно написанного приложения?Сразу скажу, что я структуры вава не знаю, но раньше с ним работал(в паскале:):):)) и справочника по его хедеру на коленях не держу...

Просто непонятно с терминологией - 1. сэмпл - это обычно повторяющийся, самодостаточный звуковой фрагмент, например, "сэмпл из игры марио, где на втором уровне марио спускается в трубу"... 2. длинна 4 байта - имеется ввиду разрядность звука?так чтоли?

Вообще, если брать музыкальные файлы в целом, то их отличает размер выборки и частота дискретизации, т.е. простыми словами - как часто выводиться звуковой сигнал, и каких предельных значений он может достигать, например, 256кб\с 44КHz означает, что что за секунду выведется 256 кб данных, и диапазон значений, который могут принимать сигналы - от 0 до 44000.. т.е. второй параметр показывает, сколько байт уходит на один сигнал, а первый - как часто в секунду эти данные подаются на выход звуковухи.. Надо помнить, что чем меньше герц, тем чаще можно выводить звук, при одинаковом битрейте, чем больше битрейт - тем качественнее звук(т.е. большая частота и часто идет выборка), кароче, эти килобайты и герцы находятся в равновесии, т.е. формула в итоге такая - (битрейт)=(частота выборки)*(уровень дискретизации)\секунды... получаем 256 Кб\с = (256*1024 раз)*(1байт на звук)\секунду

Т.е. для ВОСЬМИБИТНОГО звука(в марио был такой) нужно выводить его примерно 256000 раз в секунду, чтобы получить 256 Кб\с...

Сейчас у нас по два байта на канал идет(в основном), т.е. 256кб\с=(65536 раз)*(2 байта)*2 канала... уф... т.е. по моим расчетам получается, что 65536 раз в секунду выводим 2 раза по два байта, и получаем битрейт 256кб\с

Надеюсь из этих вычеслений примерно понятно устройство звука в компе, а что касается wav‘а конкретно, то обычно идет два байта на канал, для моно - тоже два байта на канал... Это значение может меняться, но оно ТОЧНО кратно байту(это не шутка, есть формат, где на канал идет, скажем, 7 или 12 бит - для экономии места)...

Кароче, считайте, что два на канал - не получиться - пробуйте другие значения :):):):)

Форма ответа