Russian Qt Forum
Ноябрь 23, 2024, 03:32
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Мультимедиа
>
QAudioInput. Непонятки.
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: QAudioInput. Непонятки. (Прочитано 7300 раз)
sibmail
Гость
QAudioInput. Непонятки.
«
:
Май 25, 2012, 07:00 »
На винде. Пишу в коде setSampleType(QAudioFormat::UnSignedInt) записываю pcm. Открываю pcm в SoundForge и оказывается она записана SignedInt.
В линуксе если указываю QAudioFormat::UnSignedInt то оно так и будет.
Проблема возникла при передачи звука с линукса на винду. на винде звук тарахтел.
что за фигня такая?
Записан
sibmail
Гость
Re: QAudioInput. Непонятки.
«
Ответ #1 :
Май 25, 2012, 07:28 »
причем проблема наблюдается если setSampleSize(16)
QAudioFormat format;
format.setFrequency(8000);
format.setChannels(1);
format.setSampleSize(16);
format.setCodec("audio/pcm");
Записан
LisandreL
Птица говорун
Offline
Сообщений: 984
Надо улыбаться
Re: QAudioInput. Непонятки.
«
Ответ #2 :
Май 25, 2012, 10:24 »
Цитата: sibmail от Май 25, 2012, 07:00
Открываю pcm в SoundForge и оказывается она записана SignedInt.
А заголовок составляете сами? Или без него?
Просто заголовок-то QAudioInput не формирует, только raw данные.
А по raw данным формат SF может только угадывать. Если не совпало только SampleType, то это просто чудо.
Записан
sibmail
Гость
Re: QAudioInput. Непонятки.
«
Ответ #3 :
Май 26, 2012, 05:38 »
никаких заголовков. чистый pcm.
Записан
LisandreL
Птица говорун
Offline
Сообщений: 984
Надо улыбаться
Re: QAudioInput. Непонятки.
«
Ответ #4 :
Май 26, 2012, 12:35 »
Ну а тогда SoundForge-у просто неоткуда узнать, что это за формат.
Это уже вы должны ему сказать при открытии или после (где не подскажу - программой не пользуюсь).
Записан
xokc
Птица говорун
Offline
Сообщений: 976
Re: QAudioInput. Непонятки.
«
Ответ #5 :
Май 27, 2012, 01:08 »
С трудом себе представляю 16 битный unsigned звук в Windows. С ещё бОльшим трудом представляю такое с QAudioInput и Windows. Если так уж нужно писать именно 16 битный unsigned, нужно воспользоваться сторонними библиотеками, ну или, просто добавить по 32767 к значению каждого из отсчётов после получения их от звуковой платы.
Записан
sibmail
Гость
Re: QAudioInput. Непонятки.
«
Ответ #6 :
Май 27, 2012, 22:30 »
Цитата: xokc от Май 27, 2012, 01:08
С трудом себе представляю 16 битный unsigned звук в Windows. С ещё бОльшим трудом представляю такое с QAudioInput и Windows. Если так уж нужно писать именно 16 битный unsigned, нужно воспользоваться сторонними библиотеками, ну или, просто добавить по 32767 к значению каждого из отсчётов после получения их от звуковой платы.
так в чем фишка? расскажите
Записан
xokc
Птица говорун
Offline
Сообщений: 976
Re: QAudioInput. Непонятки.
«
Ответ #7 :
Май 29, 2012, 20:37 »
Цитата: sibmail от Май 27, 2012, 22:30
так в чем фишка? расскажите
Я ж вроде всё рассказал. Для звуковой подсистемы Windows, с которой работает QAudioInput (mmsystem), "navtive" 16 битным форматом является знаковый целый. Если нужен другой формат - работайте с Windows звуком через другие API (DirectX, ASIO, WDMKS, WASAPI), но не факт, что драйвер Вашей звуковой платы будет эти API корректно поддерживать. Либо используйте более "продвинутые" и высокоуровневые чем QAudioInput audio движки (portaudio, RtAudio и т.п. - они прекрасно работают совместно с Qt). Самый простой для Вас выход - после получения данных от звуковой платы в signed формате к каждому отсчёту добавить 32767 - получите unsigned. Самый "правильный" - получение данных в наиболее "естественном" для текущей комбинации ОС + звуковая плата + драйвер формате (обычно для современных плат это 32 битный нормализованный float + 192 (96) кГц) и самостоятельный ресемплинг в 8 кГц плюс самостоятельное же преобразование в 16 бит unsigned. Но, не зная того, что Вы делаете с этим звуком дальше, ничего более рассказать не могу. Если ещё что-то непонятно - спрашивайте конкретнее.
«
Последнее редактирование: Май 29, 2012, 20:44 от xokc
»
Записан
sibmail
Гость
Re: QAudioInput. Непонятки.
«
Ответ #8 :
Май 30, 2012, 08:45 »
понятно. спасибо. ну в книжках же не пишут что для винды 16 бит только signed.
задача стоит в пересылке звука на другие компы (устройства). устройства понимают только 8000 16 моно uLaw.
а ресемплинг сделать делать сложно? где вообще можно почитать как преобразовать например wav в pcm. а то сейчас наткнулся на эту проблему.
Записан
xokc
Птица говорун
Offline
Сообщений: 976
Re: QAudioInput. Непонятки.
«
Ответ #9 :
Май 30, 2012, 15:39 »
Если коротко, то качественный ресемплинг делать сложно. Но нужен ли Вам качественный? Если оконечные устройства звук просто воспроизводят - то не нужен, если нужна какая-то цифровая обработка сигналов (демодуляция и т.п.), то - нужен. В интернете полно готовых библиотек ресемплеров, они легко находятся гуглом. Я пользовался libsamplerate - отличная штука, но там GPL. Если это не критично - рекомендую. По поводу WAV и PCM вроде в соседней теме уже ответили.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...