Название: Декодировка и слив аудио файла в контейнер Отправлено: Somni от Февраль 13, 2019, 19:14 Всем привет!
Как на Qt выполнить открытие файла по указанному адресу, декодировку и полученные звуки из файла (синусоиду) слить в контейнер, например в вектор? Вот что мне удалось найти. С форматом *.wav тоже не получается. QAudioFormat desiredFormat; desiredFormat.setChannelCount(2); desiredFormat.setCodec("audio/x-raw"); desiredFormat.setSampleType(QAudioFormat::UnSignedInt); desiredFormat.setSampleRate(48000); desiredFormat.setSampleSize(16); QAudioDecoder *decoder = new QAudioDecoder(this); decoder->setAudioFormat(desiredFormat); decoder->setSourceFilename("D:\5.mp3"); connect(decoder, SIGNAL(bufferReady()), this, SLOT(readBuffer())); decoder->start(); Пишет. 17:18:53: Запускается D:\Qt_Projects\build-AudioFile-Desktop_Qt_5_11_2_MSVC2017_64bit-Debug\debug\AudioFile... MFAudioDecoderControl does not accept non-pcm audio format! QObject::connect: No such slot MainWindow::readBuffer() in ..\AudioFile\mainwindow.cpp:31 QObject::connect: (receiver name: 'MainWindow') Спасибо за ответы! Название: Re: Декодировка и слив аудио файла в контейнер Отправлено: ssoft от Февраль 13, 2019, 21:42 QObject::connect: No such slot MainWindow::readBuffer() in ..\AudioFile\mainwindow.cpp:31 Либо Q_OBLECT не написан в декларации класса, либо Q_SLOT не указан для метода readBuffer. Название: Re: Декодировка и слив аудио файла в контейнер Отправлено: Somni от Февраль 14, 2019, 14:05 Спасибо за ответ!
Вот мой код. Мои попытки. Что порекомендуете здесь поправить? #include "mainwindow.h" #include "ui_mainwindow.h" #include <QAudioFormat> #include <QAudioDecoder> #include <QVector> #include <QMediaPlayer> #include <QDir> #include <QAudioOutput> #include <QAudioInput> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_pushButton_clicked() { QFile inputFile; inputFile.setFileName("D:\\5.wav"); inputFile.open(QIODevice::ReadOnly); qDebug() << inputFile.size(); QAudioFormat format; // Set up the format, eg. format.setSampleRate(44100); format.setChannelCount(2); format.setSampleSize(16); format.setCodec("audio/pcm"); format.setSampleType(QAudioFormat::SignedInt); /* QAudioDecoder *decoder = new QAudioDecoder(this); decoder->setAudioFormat(format); decoder->setSourceFilename("D:\\5.wav"); QAudioBuffer ab; QVector<int> v; ab = decoder->read(); //auto t = ab. qDebug() << decoder->duration();; qDebug() << ab.duration(); */ QAudioOutput *audio = new QAudioOutput(format, 0); audio->start(&inputFile); qDebug() << audio->bufferSize(); /* //Это работает - воспороизведение аудио файла QMediaPlayer *player = new QMediaPlayer; player->setMedia(QUrl::fromLocalFile(QDir::toNativeSeparators("D:\\5.mp3"))); player->setVolume(50); player->play(); //Всё что ниже не работает QAudioFormat desiredFormat; desiredFormat.setChannelCount(2); //desiredFormat.setCodec("audio/x-raw"); desiredFormat.setCodec("audio/pcm"); desiredFormat.setSampleType(QAudioFormat::UnSignedInt); desiredFormat.setSampleRate(48000); desiredFormat.setSampleSize(16); QAudioDecoder *decoder = new QAudioDecoder(this); decoder->setAudioFormat(desiredFormat); decoder->setSourceFilename("D:\\5.wav"); connect(decoder, SIGNAL(bufferReady()), this, SLOT(readBuffer())); decoder->start(); QAudioBuffer ab; QVector<int> v; ab = decoder->read(); //auto t = ab. qDebug() << decoder->duration();; qDebug() << ab.duration(); */ } Название: Re: Декодировка и слив аудио файла в контейнер Отправлено: ViTech от Февраль 14, 2019, 15:41 Вот мой код. Мои попытки. Что порекомендуете здесь поправить? Для начала оформление сообщений (использовать теги [code][/code]). Затем лучше прикрепить к сообщению тестовый проект в архиве. |