Discussion Board

Results 1 to 9 of 9
  1. #1
    Registered User Bitaxa's Avatar
    Join Date
    Jan 2012
    Posts
    11
    Нужна помощь с 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();
    }

  2. #2
    Nokia Developer Moderator A.A.M.'s Avatar
    Join Date
    Jan 2008
    Location
    Moscow, Russia
    Posts
    3,308
    Тестировать лучше на реальном устройстве. И для записи звука логичнее использовать QMediaRecorder из состава Qt Mobility, специально для этого предназначенный.

  3. #3
    Registered User Bitaxa's Avatar
    Join Date
    Jan 2012
    Posts
    11
    Спасибо за совет по поводу QMediaRecorder.
    А как можно записать данные в QBuffer? Мне необходимо анализировать полученные данные, а QMediaRecorder, насколько я понял, может писать только в файл...
    Last edited by Bitaxa; 2012-04-21 at 07:44.

  4. #4
    Nokia Developer Moderator A.A.M.'s Avatar
    Join Date
    Jan 2008
    Location
    Moscow, Russia
    Posts
    3,308
    Судя по документации запись через QMediaRecorder может вестись только в файл, доступа к потоку данных в этом случае нет.

    В дополнение к предыдущему сообщению: пример "Audio Recorder Example".

    Возможно вам будет интересно посмотреть еще и на этот демо-проект - "Spectrum Analyzer".
    Last edited by A.A.M.; 2012-04-21 at 08:47.

  5. #5
    Registered User Bitaxa's Avatar
    Join Date
    Jan 2012
    Posts
    11
    Разобрался с демой Spectrum. Прикрутил туда свой класс для возможности совершать тел. звонки (класс рабочий, взят с другого моего проекта). Проект компилируется, sis строится, но после установки приложение на смартфоне не запускается. В чем может быть проблема?
    Права даны:

    Code:
    symbian {
        # Platform security capability required to record audio on Symbian
        TARGET.CAPABILITY = "UserEnvironment NetworkServices"
    
        # Provide unique ID for the generated binary, required by Symbian OS
        TARGET.UID3 = 0xA000E402
    }

  6. #6
    Registered User Bitaxa's Avatar
    Join Date
    Jan 2012
    Posts
    11
    TARGET.CAPABILITY = "NetworkServices UserEnvironment" - оставил, а свой класс для звонков закоментил, приложение запускается нормально...

    Только что собрал исходный Spectrum без изменений, установил на смартфон и он не запускается...
    Last edited by Bitaxa; 2012-04-21 at 12:22.

  7. #7
    Nokia Developer Moderator A.A.M.'s Avatar
    Join Date
    Jan 2008
    Location
    Moscow, Russia
    Posts
    3,308
    Открываем проект QtSDK\Demos\4.7\spectrum\spectrum.pro, компилируем, устанавливаем на смартфон, запускаем из меню "spectrum" и все работает. Никаких изменений не требуется.

  8. #8
    Registered User Bitaxa's Avatar
    Join Date
    Jan 2012
    Posts
    11
    На 5800 были проблемы, я скомпилировал под Symbian^3, запустил на C6-01, все работает. Создание моего проекта успешно движется дальше. Спасибо за поддержку.

  9. #9
    Nokia Developer Moderator A.A.M.'s Avatar
    Join Date
    Jan 2008
    Location
    Moscow, Russia
    Posts
    3,308
    На 5800, как и на других смартфонах на Symbian^1, нужно убедиться, что версия установленной в устройстве Qt библиотеки не ниже той, с которой производится сборка проекта. Сборку, соответственно, тоже надо делать именно для Symbian^1 / S60 5th ed.

Similar Threads

  1. Получить данные пересылаемые через Internet Access Point
    By veon1 in forum Russian Developer Forum - Форум Российских разработчиков
    Replies: 6
    Last Post: 2009-12-07, 15:24
  2. Получить иконку из sis фалй
    By ssealien in forum Russian Developer Forum - Форум Российских разработчиков
    Replies: 5
    Last Post: 2009-11-23, 21:45
  3. Как получить информацию об MMS ?
    By maklin in forum Russian Developer Forum - Форум Российских разработчиков
    Replies: 7
    Last Post: 2009-10-06, 12:37
  4. Акселерометр выдает данные с задержкой (FlashLite)
    By Ploppy in forum Russian Developer Forum - Форум Российских разработчиков
    Replies: 4
    Last Post: 2009-07-08, 14:05
  5. Как отправить данные на Apache сервер?
    By asparov in forum Russian Developer Forum - Форум Российских разработчиков
    Replies: 7
    Last Post: 2007-12-10, 10:53

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Nokia Developer aims to help you create apps and publish them so you can connect with users around the world.

京ICP备05048969号  © Copyright Nokia 2013 All rights reserved