簡體   English   中英

Qt和C ++中的Changin mp3速度[QMediaPlayer]

[英]Changin mp3 speed in Qt and C++ [QMediaPlayer]

我正在嘗試開發一個小應用程序,您可以在其中加載mp3文件並以可變速度播放它! (我知道它已經存在:-))

我正在使用Qt和C ++。 我已經有基本的播放器了,但是我對速率不滿意,因為我想在不停止播放的情況下平穩地更改速率(例如在Mixxx中)! 如果更改值並在聲音中產生間隙,則QMediaPlayer始終會停止。 我也不想改變音高!

我已經找到了一個叫做“ SoundTouch”的東西,但是現在我完全不知道該怎么做,如何處理我的mp3數據以及如何將其發送給播放器! “ SoundTouch”庫能夠滿足我的要求,我從主頁上的示例中獲得了它。

  • 如何導入mp3文件,以便可以使用SoundTouch功能處理它
  • 如何播放SoundTouch功能的輸出? (也許QMediaPlayer可以勝任?)
  • 這些東西是如何現場完成的? 我猜我必須做某種流嗎? 這樣我就可以在比賽中改變速度並繼續比賽。 以圖形方式顯示在我的腦海中,它必須位於數據和播放器之間,所有數據都必須經過實時傳輸,並留有一個小的緩沖區(大約20-50毫秒),以避免在處理未來數據時出現間隙。

任何幫助表示贊賞! 只要我可以使用Qt / C ++,我也可以使用“ SoundTouch”之外的任何其他解決方案

(第二件事:我想查看波形概覽以及移動波形的一部分(在歌曲的實際位置附近),因此我也可以使用提示來獲取波形數據)

提前致謝!

到目前為止(Qt 5.5),這僅與QMediaPlayer無關。 您需要執行以下操作:

  • 使用GStreamer,FFMpeg或(新)QAudioDecoder解碼音頻: http ://doc.qt.io/qt-5/qaudiodecoder.html-這將為您提供原始的PCM流;

  • 將SoundTouch或其他庫應用於此原始數據以更改音高。 如果GPL沒問題,請查看http://nsound.sourceforge.net/examples/index.html ,如果您開發專有的東西,則STK可能是一個更好的選擇: https : //ccrma.stanford.edu/software/ STK /

  • 使用QAudioOutput將修改后的數據輸出到音頻設備中。

該策略盡可能使用Qt,並為您帶來最佳的平台覆蓋率(盡管它不支持QAudioOutput,但您仍然會失去Android)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM