Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
712 views
in Technique[技术] by (71.8m points)

qt - Audio visualization with QMediaPlayer

I am playing audio with the QMediaPlayer and want to visualize the audio levels (for example like in this video).
I already found a example from the Qt 4 documentation but they were manually generating the signal and I found no way to get the audio output buffer with the QMediaPlayer.
How should I solve this problem / are there other audio librarys (crossplatform) that can accomplish this?

thanks

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You should look at QAudioProbe.

The QAudioProbe class allows you to monitor audio being played or recorded.

As the QMediaPlayer is a subclass of QMediaObject, you attach the QAudioProbe to the QMediaPlayer with bool QAudioProbe::setSource(QMediaObject* source), then connect to the void QAudioProbe::audioBufferProbed(const QAudioBuffer& buffer) signal. The documentation provides an example.

In the slot for the audioBufferProbed signal you can process the raw audio data to calculate volume, for example by computing the RMS of the sample. Have a look at this article on calculating the RMS efficiently.

To display the volume you could use QProgressBar, but you may get better performance using the Qt Widgets for Technical Applications library which can also work on a logarithmic scale which will be needed for a volume display.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...