![]() |
|
Модераторы: bsa |
![]()
|
|
| Proger10 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 16.12.2008 Репутация: нет Всего: нет |
нифига не получилось.. В чём моя ошибка? |
|||
|
||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 8 Всего: 146 |
||||
|
||||
| 586 |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 8 Всего: 146 |
следовательно:
|
||||
|
|||||
| Proger10 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 16.12.2008 Репутация: нет Всего: нет |
м.. спасибо!
">> 8" - помогает проигрывать звук. Пишу в него голос, и он в файле звучит октавы на две выше.. Не пойму из-за чего такое может возникать.. но файл уже проигрывается. Добавлено через 6 минут и 24 секунды звук 16битный, 11025 дискретизация, 1 канал.. |
|||
|
||||
| Proger10 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 16.12.2008 Репутация: нет Всего: нет |
кстати, если запись виду в 8битном режиме, то на выходе файл получается ещё в два раза быстрее прошлого и гораздо выше по тону
Пом чего-то с вот этим сдвигом.. Добавлено через 4 минуты и 20 секунд и длина выходного файла равна нулям секундам.. Добавлено через 5 минут и 26 секунд #define PA_SAMPLE_TYPE paInt16 вот в таком формате звук у меня.. |
|||
|
||||
| Proger10 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 16.12.2008 Репутация: нет Всего: нет |
Вот полный исходник:
Это сообщение отредактировал(а) Proger10 - 9.12.2009, 22:22 |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 4 Всего: 459 |
Proger10, может звук был исходно 8ми битным, тогда получилось прореживание и соответственно 2х кратное увеличение частоты, либо частота дискретизации при записи была ниже, чем устанавливается при проигрывании.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Proger10 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 16.12.2008 Репутация: нет Всего: нет |
Да тут видите всё явно устанавливается.. звук 16-бит:
#elif 1 #define PA_SAMPLE_TYPE paInt16 ... при записи в файл 16 бит: mySubChunk1Size = 16; myFormat = 1; myChannels = 1; mySampleRate = 11025; myByteRate = 22050; myBlockAlign = 2; myBitsPerSample = 16; в принципе тут навряд ли можно допустить ошибку в частотах... |
|||
|
||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 8 Всего: 146 |
||||
|
||||
| Proger10 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 16.12.2008 Репутация: нет Всего: нет |
Не очень понял.. У меня не присваивается? Или вообще по теории присваивать не нужно это число? Я вроде с 16 битами работаю... Добавлено через 1 минуту и 48 секунд Вроде Вы выделили 22050, а сказали что не присваивается 11025.. что-то совсем не понял по контексту Вашего ответа что к чему.. |
|||
|
||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 8 Всего: 146 |
Там же идёт конвертирование из 16 бит в 8 бит. Что же получается - Вы пишете 8-битный wav-файл с заголовком, как для 16-битного wav? Откуда взялось число myByteRate = 22050. Должно быть myByteRate равен 11025. myBitsPerSample равен 8 myBlockAlign равен 1 |
|||
|
||||
| Proger10 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 16.12.2008 Репутация: нет Всего: нет |
>>myBitsPerSample равен 8
при 16-битном звуке? Ок, сейчас попробую то поправить.. Я это число увидел из 16 битного файла, который мне экспортировала Audacity. Добавлено через 9 минут и 10 секунд Неа, никаких различий нет с внесёнными измнениями :(
Добавлено через 11 минут и 15 секунд Кстати, а почему BlockAlign должен быть равен одному? Получается двум.. BlockAlign == NumChannels * BitsPerSample/8 У меня каналов: 1, бит: 16, получается: 1 * 16/8 = 2 Добавлено через 12 минут и 56 секунд Мне нужно записывать 16 битный звук, а не 8-битный... |
|||
|
||||
| Proger10 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 16.12.2008 Репутация: нет Всего: нет |
Аналогично и с ByteRate:
ByteRate == SampleRate * NumChannels * BitsPerSample/8 ByteRate == 11025 * 1 * 16/8 == 22050 |
|||
|
||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 8 Всего: 146 |
||||
|
||||
| Proger10 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 16.12.2008 Репутация: нет Всего: нет |
А смещение случаем не на 16 нужно делать для 16битного звука?
myWav->myData[ i ] = ( ( char )( ( recordedSamples[ i ] ) >> 16 ) ); тем не менее не фурычит |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |