簡體   English   中英

在Python或C ++中單聲道播放Mp3s

[英]Mono Playback of Mp3s in Python OR C++

我使用pyqt在python中編碼音樂播放器 ,我希望它具有mp3文件的單聲道播放功能。

我已經完成了使用pygame,因為它的混音器有一個特定的參數channels ,我可以設置為1以獲得單聲道播放。

但是,pygame mp3支持是有限的 ,所以我正在尋找一個能夠處理mp3文件和單聲道播放的庫。

目前,我正在使用pyaudiere進行播放,並且在其網站上有一個在播放之前處理歌曲的示例,所以也許我可以將歌曲轉換為單聲道,但我真的不知道如何實現這一點。

我想了解如何使用pyaudiere或任何其他可以處理mp3文件的庫來編寫此功能。

編輯

我也接受C ++中的解決方案,因為我總是可以使用Boost :: python構建一個python包裝器

如果你想要非常好的Windows支持,我懷疑你可能需要或者更容易使用不同的Windows for Windows ...請查看以下鏈接:

編輯 - 很可能是解決方案(到目前為止,評論非常積極):

另一種選擇是http://www.un4seen.com/bass.html (小心:商業) - 它可以滿足您的所有需求,可以在非商業應用程序中免費使用,並且有一個python包裝器(稱為pybass)。 。

你考慮過Python音頻工具嗎? 它能夠加載MP3並使用Player類播放它。 Player類初始化程序接受AudioOutput對象,該對象允許您指定回放通道的數量。

該項目似乎得到了2011年10月30日最后一次git提交的支持(在您發布之前不到兩周)。 它也存在了一段時間,所以它似乎不是一個夜間圖書館。

Gstreamer的Python綁定

這是一個非常簡單的音樂播放器:

import gobject
import gst
pipeline = gst.parse_launch('filesrc location="stereo.mp3" ! mad ! audioconvert ! audio/x-raw-int,channels=1 ! autoaudiosink')
pipeline.set_state(gst.STATE_PLAYING)

gobject.threads_init()
gobject.MainLoop().run()

我真的建議你研究Gstreamer,因為它已經成為大多數開源平台的事實上的多媒體解決方案,並支持各種各樣的音頻文件。 使用它的示例應用程序:Rhythmbox,Banshee,Totem等......

雖然這甚至不是一個完整的答案,但要將多聲道音頻wav文件轉換為單聲道文件,您只需獲得所有頻道的平均值即可。 在立體聲的情況下,您將擁有:

mono[i]=(left[i]+right[i])/2

對於每個樣本i

希望能幫助到你!

暫無
暫無

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

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