Frage

Ich möchte einen Audio-Editor mit Qt entwickeln.Dazu muss ich eine Wellenform des Musiktitels zeichnen, die meiner Meinung nach eine Darstellung der Spitzenamplitude des Tons im Verhältnis zur Zeit sein sollte (bitte korrigieren Sie mich, wenn ich falsch liege).

Derzeit verwende ich das Klassenobjekt Phonon::AudioOutput als Audiosenke und verbinde es mit meinem Klassenobjekt Phonon::MediaObject, um die Audiodatei abzuspielen.

Um nun die Wellenform zu zeichnen, muss ich die Amplitude der Audiospur in jeder Sekunde (oder so) von diesem AudioOutput-Objekt kennen, damit ich (mit QPainter) eine Linie zeichnen kann, deren Länge zu verschiedenen Zeiten proportional zur Schallfrequenz ist und daher Erhalten Sie meine Wellenform.

Bitte helfen Sie mir, wie ich die Amplitude von Audiospuren zu unterschiedlichen Zeiten ermitteln kann.

Zweitens verwende ich die richtige Methode zum Zeichnen von Wellenformen von Audiospuren – das Zeichnen von Schallamplituden gegen die Zeit durch Zeichnen von Linien nach QPainter-Objekt auf einem Widget zu unterschiedlichen Zeiten.

Danke.

War es hilfreich?

Lösung

Es gibt Code, der beide Dinge erledigt, nach denen Sie fragen (Berechnung der Spitzenamplitude und Darstellung von Audiowellenformen). Spektrumanalysator Beispiel, das mit Qt geliefert wird (im Verzeichnis demos/spectrum).

Screenshot der Spectrum Analyzer-Demo unter Symbian http://labs.trolltech.com/blogs/wp-content/uploads/2010/05/spectrum.png

Diese Demo berechnet auch ein Frequenzspektrum und zeigt es an.Wie ein anderer Kommentator betont, unterscheidet sich dies von einem Wellenformdiagramm:Das Spektrum ist eine Darstellung der Amplitude über der Frequenz, während die Wellenform die Amplitude über der Zeit darstellt.

Die Demo verwendet QtMultimedia anstelle von Phonon zum Aufnehmen und Rendern von Audio.Wenn Sie nur an der Wiedergabe von Audio interessiert sind und es nicht aufnehmen müssen, ist Phonon möglicherweise ausreichend. Beachten Sie jedoch, dass die Streaming-Unterstützung (d. h. Phonon::MediaSource(QIODevice *)) ist nicht auf allen Plattformen verfügbar. QAudioInput Und QAudioOutput Andererseits werden sie, zumindest für PCM-Audiodaten, auf allen Hauptplattformen, auf die Qt abzielt, gut unterstützt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top