Нужна помощь с QAudioInput. С Qt познакомился относительно недавно. Разрабатываю приложение для Symbian, пока отлаживаю его в сборке под Windows. Проблема в том, что запись ведется, буфер с данными растет, но содержимого в нем нет. Открываю записанный wav файл звуковым редактором - в нем вабще нет графика, файл пустой. Исходник:
Code:class AudioCapture: public QObject{ Q_OBJECT public: QByteArray output_bytes; QAudioInput* audio_in; QAudioFormat format; QBuffer output_buffer; AudioCapture(); ~AudioCapture(); void startCapture(); void stopCapture(); void clearBuffer(); signals: void goted(SoundBuffer *pNewBuffer); public slots: void onNotify(); };Code:AudioCapture::AudioCapture() { format.setFrequency(22050); format.setChannels(1); format.setSampleSize(8); format.setCodec("audio/pcm"); format.setByteOrder(QAudioFormat::LittleEndian); format.setSampleType(QAudioFormat::UnSignedInt); if (!output_buffer.isOpen()) this->output_buffer.setBuffer(&output_bytes); output_buffer.open(QIODevice::ReadWrite | QIODevice::Truncate); QAudioDeviceInfo info = QAudioDeviceInfo::defaultInputDevice(); if (!info.isFormatSupported(format)) { qWarning() << "default format not supported (try to use nearest)"; this->format = info.nearestFormat(format); }; audio_in = new QAudioInput(format);//(format,this); audio_in->setNotifyInterval(100); audio_in->setBufferSize(2048); connect(audio_in,SIGNAL(notify()),this,SLOT(onNotify())); } int k = 1; void AudioCapture::onNotify() { SoundBuffer *psbTmp=new SoundBuffer(); psbTmp->iSampleRate=22050; psbTmp->SetData<unsigned char>((unsigned char*)output_buffer.buffer().data(),output_buffer.size(),-128,128,false); emit goted(psbTmp); //clearBuffer(); //emit gotBuffer(psbTmp); //qDebug()<<output_buffer.size(); // qDebug()<<output_buffer.buffer().data(); } AudioCapture::~AudioCapture() { audio_in->stop(); delete audio_in; } void AudioCapture::clearBuffer() { output_buffer.reset(); } void AudioCapture::startCapture() { audio_in->start(&output_buffer); } void AudioCapture::stopCapture() { audio_in->stop(); }

Reply With Quote

