![]() |
|
Модераторы: 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 ) ); тем не менее не фурычит |
|||
|
||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 8 Всего: 146 |
||||
|
||||
| Proger10 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 16.12.2008 Репутация: нет Всего: нет |
дык и ">> 16" не помогает..
|
|||
|
||||
| 586 |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 8 Всего: 146 |
Тогда данные преобразровывать не надо.
Вместо
напиши
|
||||
|
|||||
| Proger10 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 16.12.2008 Репутация: нет Всего: нет |
почему-то оно мне не даёт там использовать memcpy:
------------- patest_read_record.cpp: In function ‘int main(int, char**)’: patest_read_record.cpp:475: ошибка: нет декларации ‘memcpy’ в этой области видимости ------------- но почему? stdio.h подключён... Добавлено через 2 минуты и 18 секунд не ужели действительно прокатит.. честно говоря, не очень верится, покуда изначально я без преобразования ведь и делал... |
|||
|
||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 8 Всего: 146 |
попробуй #include <stdlib.h>
или #include <string.h> или без использования memcpy:
|
|||
|
||||
| Proger10 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 16.12.2008 Репутация: нет Всего: нет |
да.. это я уже пробовал. Шуршит и шипит такая запись.
Я вот не пойму... а точно ли звук 16битный? Как думаете, может ли вот это:
как либо указывать на то, что звук 16битный, а не восьми? |
|||
|
||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 8 Всего: 146 |
Странно это - если до этого она быстро играла, а теперь шуршит. А если так:
|
|||
|
||||
| Proger10 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 16.12.2008 Репутация: нет Всего: нет |
С ">> 8" она ускорялась, а без этого - шипит
С указанным выше - вылетает вообще:
компайлер GCC. Добавлено через 52 секунды А если вот так:
то ещё раз в 6 быстрее Добавлено через 2 минуты и 11 секунд ...но чисто и без шипения |
||||
|
|||||
| Proger10 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 16.12.2008 Репутация: нет Всего: нет |
В общем-то забил я на это и заюзал либу LibSndFile:
жаль, что ещё одну либо за собой таскать прийдётся. Ну да фиг с ней. |
|||
|
||||
![]()
|
| Правила форума "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. |