Russian Qt Forum
Ноябрь 01, 2024, 02:57
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Вопросы новичков
>
Декодировка и слив аудио файла в контейнер
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Декодировка и слив аудио файла в контейнер (Прочитано 2864 раз)
Somni
Новичок
Offline
Сообщений: 29
Декодировка и слив аудио файла в контейнер
«
:
Февраль 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')
Спасибо за ответы!
Записан
ssoft
Программист
Offline
Сообщений: 583
Re: Декодировка и слив аудио файла в контейнер
«
Ответ #1 :
Февраль 13, 2019, 21:42 »
Цитата: Somni от Февраль 13, 2019, 19:14
QObject::connect: No such slot MainWindow::readBuffer() in ..\AudioFile\mainwindow.cpp:31
Либо Q_OBLECT не написан в декларации класса, либо Q_SLOT не указан для метода readBuffer.
Записан
Somni
Новичок
Offline
Сообщений: 29
Re: Декодировка и слив аудио файла в контейнер
«
Ответ #2 :
Февраль 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();
*/
}
Записан
ViTech
Гипер активный житель
Offline
Сообщений: 858
Re: Декодировка и слив аудио файла в контейнер
«
Ответ #3 :
Февраль 14, 2019, 15:41 »
Цитата: Somni от Февраль 14, 2019, 14:05
Вот мой код. Мои попытки. Что порекомендуете здесь поправить?
Для начала оформление сообщений (использовать теги
[
code
]
[
/code
]
). Затем лучше прикрепить к сообщению тестовый проект в архиве.
«
Последнее редактирование: Февраль 14, 2019, 16:38 от ViTech
»
Записан
Пока сам не сделаешь...
Страниц: [
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...