Die audiere-Bibliothek erlaubt Ihnen, mit Audiodateien verschiedener Formate (wav, mp3, etc.) zu arbeiten. Zum Arbeiten benötigen wir die Dateien audiere.h, audiere.lib, audiere.dll. h-Datei ist im Programmcode enthalten
#include "audiere.h"
lib-Datei ist mit .pro verknüpft
LIBS += audiere.lib
dll ziehen wir hinter das Programm.
In RuNet ist es einfach, Informationen darüber zu finden, wie man Sound damit abspielt. Aber es gibt absolut keine Informationen darüber, wie man an Audiodaten zur Weiterverarbeitung kommt. Deshalb werde ich schreiben, zumal es recht einfach ist.
1 offene Datei
QString name = "D:/qtProg/audioprocessor/test2.mp3"; name.replace("/","\\"); SampleSourcePtr source; source = OpenSampleSource( name.toLocal8Bit() ); if(!source) { ui->statusBar->showMessage("файл не открыт"); return; } else { ui->statusBar->showMessage(name); }
2 Audioparameter lesen
int ccount; // число каналов int samplerate; // частота дискретизации SampleFormat format; // формат данных source->getFormat(ccount, samplerate, format); int l = source->getLength(); // число отсчётов одного канала
Bei typischen Audioaufnahmen ist die Anzahl der Kanäle zwei, Einkanalaufnahmen sind durchaus üblich, andere habe ich nicht gesehen, aber es sollte nach dem gleichen Prinzip funktionieren. Beachten Sie, dass die Anzahl der mit getLength() erhaltenen Samples einem Kanal entspricht. Abtastfrequenz (wenn Sie nicht wissen, was das ist, sehen Sie sich das Kotelnikov-Theorem oder das Nyquist-Theorem an). Format - bestimmt die Anzahl der Bits, die ein Sample codieren (normalerweise 16).
3 Zwischenspeicher und geeigneten Speicher schaffen
int w = 256; // размер временного окна qint16 buf[w*ccount]; QVector<qint16> data; // хранилище данных для одного канала
4 Daten lesen
int row = l/w; // число временных фрагментов for(int j = 0; j < row; j++) { source->read(w, buf); // считывание фрагмента for(int i=0; i<w; i++) { data.append(buf[i*ccount]); } } source->read(w, buf); // считывание последнего фрагмента for(int i=0; i < l%w; i++) { data.append(buf[i*ccount]); }
Nun können die extrahierten Daten verarbeitet werden...
Der Text des Programms kann [hier] heruntergeladen werden (https://cloud.mail.ru/public/5AjB/8UN9LyAH6)
Добрый день, Дмитрий.
Спасибо за статью. Единственный момент, пожалуйста, поместите статью под кат, то есть отделите большую часть статьи разделителем контента, это одна из кнопок в тулбаре редактора. Она отделяет превью статьи в ленте от остальной части контента.
Ещё раз спасибо.