Python控制windows系統(tǒng)音量實(shí)現(xiàn)實(shí)例
使用python可以對(duì)windows系統(tǒng)的音量進(jìn)行讀取或者設(shè)置。
平臺(tái):visual studio code
語(yǔ)言:python
需要的python模塊:
1、pyqt5
2、ctypes:
ctypes 是 Python 的外部函數(shù)庫(kù)。它提供了與 C 兼容的數(shù)據(jù)類型,并允許調(diào)用 DLL 或共享庫(kù)中的函數(shù)。可使用該模塊以純
Python 形式對(duì)這些庫(kù)進(jìn)行封裝。
這里是引用
3、comtypes:
comtypes是一個(gè)基于ctypes-ffi外部函數(shù)庫(kù)的純Python COM包
這里是引用
4、pycaw
Python核心音頻WindowsAPI庫(kù)
UI界面:
代碼:
1、初始化音量接口
def init_vol(self): """初始化音量對(duì)應(yīng)""" # 音量對(duì)應(yīng)關(guān)系 # 0% --- -65.25 # 55% --- -8.92 # 100% --- 0.0 self.volume_match={0: -65.25, 1: -56.99, 2: -51.67, 3: -47.74, 4: -44.62, 5: -42.03, 6: -39.81, 7: -37.89, 8: -36.17, 9: -34.63, 10: -33.24, 11: -31.96, 12: -30.78, 13: -29.68, 14: -28.66, 15: -27.7, 16: -26.8, 17: -25.95, 18: -25.15, 19: -24.38, 20: -23.65, 21: -22.96, 22: -22.3, 23: -21.66, 24: -21.05, 25: -20.46, 26: -19.9, 27: -19.35, 28: -18.82, 29: -18.32, 30: -17.82, 31: -17.35, 32: -16.88, 33: -16.44, 34: -16.0, 35: -15.58, 36: -15.16, 37: -14.76, 38: -14.37, 39: -13.99, 40: -13.62, 41: -13.26, 42: -12.9, 43: -12.56, 44: -12.22, 45: -11.89, 46: -11.56, 47: -11.24, 48: -10.93, 49: -10.63, 50: -10.33, 51: -10.04, 52: -9.75, 53: -9.47, 54: -9.19, 55: -8.92, 56: -8.65, 57: -8.39, 58: -8.13, 59: -7.88, 60: -7.63, 61: -7.38, 62: -7.14, 63: -6.9, 64: -6.67, 65: -6.44, 66: -6.21, 67: -5.99, 68: -5.76, 69: -5.55, 70: -5.33, 71: -5.12, 72: -4.91, 73: -4.71, 74: -4.5, 75: -4.3, 76: -4.11, 77: -3.91, 78: -3.72, 79: -3.53, 80: -3.34, 81: -3.15, 82: -2.97, 83: -2.79, 84: -2.61, 85: -2.43, 86: -2.26, 87: -2.09, 88: -1.91, 89: -1.75, 90: -1.58, 91: -1.41, 92: -1.25, 93: -1.09, 94: -0.93, 95: -0.77, 96: -0.61, 97: -0.46, 98: -0.3, 99: -0.15, 100: 0.0} #音量值反對(duì)應(yīng) self.volume_match_2={-65.25:0, -56.99:1, -51.67:2, -47.74:3, -44.62:4, -42.03:5, -39.81:6,-37.89:7, -36.17:8, -34.63:9, -33.24:10, -31.96:11, -30.78:12, -29.68:13, -28.66:14, -27.7:15, -26.8:16, -25.95:17, -25.15:18, -24.38:19, -23.65:20, -22.96:21, -22.3:22, -21.66:23, -21.05:24, -20.46:25, -19.9:26, -19.35:27, -18.82:28, -18.32:29, -17.82:30, -17.35:31, -16.88:32, -16.44:33, -16.0:34, -15.58:35,-15.16:36, -14.76:37, -14.37:38, -13.99:39, -13.62:40, -13.26:41, -12.9:42, -12.56:43, -12.22:44,-11.89:45, -11.56:46, -11.24:47, -10.93:48, -10.63:49, -10.33:50, -10.04:51, -9.75:52, -9.47:53, -9.19:54, -8.92:55, -8.65:56, -8.39:57, -8.13:58, -7.88:59, -7.63:60, -7.38:61, -7.14:62, -6.9:63, -6.67:64, -6.44:65, -6.21:66, -5.99:67, -5.76:68, -5.55:69, -5.33:70, -5.12:71,-4.91:72, -4.71:73, -4.5:74, -4.3:75, -4.11:76, -3.91:77, -3.72:78, -3.53:79, -3.34:80, -3.15:81, -2.97:82, -2.79:83, -2.61:84, -2.43:85, -2.26:86, -2.09:87, -1.91:88, -1.75:89, -1.58:90, -1.41:91, -1.25:92, -1.09:93, -0.93:94, -0.77:95, -0.61:96, -0.46:97, -0.3:98, -0.15:99, 0.0:100} self.devices11=AudioUtilities.GetSpeakers() self.interface=self.devices11.Activate(IAudioEndpointVolume._iid_,CLSCTX_ALL,None) self.volum11=cast(self.interface,POINTER(IAudioEndpointVolume)) self.mute=self.volum11.GetMute()
電腦的音量雖然顯示是一個(gè)整數(shù),但實(shí)際的音量值是一個(gè)浮點(diǎn)數(shù),就是上面代碼里所列出的,從0到100的對(duì)應(yīng)值。利用pycaw獲取音頻接口,然后激活,并將獲取的輸出轉(zhuǎn)為C語(yǔ)言下的指針。
2、獲取音量
vm=self.volum11.GetMasterVolumeLevel() #print(vm) vm2=round(vm,2) #print(vm2) vm3=self.volume_match_2[vm2] #print(vm3) #v1=self.volum11.GetVolumeRange() #print(v1) #return vm3 self.lbl1.setText(str(vm3))
獲取音量,使用GetMasterVolumeLevel函數(shù)即可,這個(gè)函數(shù)獲取的是一個(gè)浮點(diǎn)數(shù),將浮點(diǎn)數(shù)作一下四舍五入的處理,小數(shù)點(diǎn)保留兩位(與音量值數(shù)組對(duì)應(yīng)),然后去數(shù)組里匹配,將對(duì)應(yīng)的音量(整數(shù))輸出顯示即可。
3、設(shè)置系統(tǒng)音量:
v11=int(v1) self.sys_volume_value=self.volume_match[v11] #print(self.sys_volume_value) self.volum11.SetMasterVolumeLevel(self.sys_volume_value,None)
設(shè)置音量與獲取音量正好是相反的過(guò)程,在UI界面上設(shè)置一個(gè)音量值(整數(shù)),將其代入第二個(gè)數(shù)組,來(lái)匹配真實(shí)音量值(浮點(diǎn)),然后將對(duì)應(yīng)的音量值利用函數(shù)SetMasterVolumeLevel輸入給電腦音頻接口即可。
4、演示視頻鏈接:
到此這篇關(guān)于Python控制windows系統(tǒng)音量實(shí)現(xiàn)實(shí)例的文章就介紹到這了,更多相關(guān)Python控制系統(tǒng)音量?jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于Python中zipfile壓縮包模塊的使用
這篇文章主要介紹了關(guān)于Python中zipfile壓縮包模塊的使用,zipfile?模塊提供了創(chuàng)建、讀取、寫入、添加及列出?ZIP?文件的工具,本文做一個(gè)簡(jiǎn)單的總結(jié),需要的朋友可以參考下2023-04-04python實(shí)現(xiàn)動(dòng)態(tài)GIF英數(shù)驗(yàn)證碼識(shí)別示例
這篇文章主要為大家介紹了python實(shí)現(xiàn)動(dòng)態(tài)GIF英數(shù)驗(yàn)證碼識(shí)別示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01詳解numpy矩陣的創(chuàng)建與數(shù)據(jù)類型
這篇文章主要介紹了詳解numpy矩陣的創(chuàng)建與數(shù)據(jù)類型,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10django創(chuàng)建簡(jiǎn)單的頁(yè)面響應(yīng)實(shí)例教程
這篇文章主要給大家介紹了關(guān)于django如何創(chuàng)建簡(jiǎn)單的頁(yè)面響應(yīng)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用django具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09python利用socketserver實(shí)現(xiàn)并發(fā)套接字功能
這篇文章主要為大家詳細(xì)介紹了python利用socketserver實(shí)現(xiàn)并發(fā)套接字功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01python實(shí)現(xiàn)釘釘機(jī)器人自動(dòng)打卡天天早下班
這篇文章主要為大家介紹了python實(shí)現(xiàn)釘釘機(jī)器人自動(dòng)打卡天天下早班實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06python繪制已知點(diǎn)的坐標(biāo)的直線實(shí)例
今天小編就為大家分享一篇python繪制已知點(diǎn)的坐標(biāo)的直線實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07