欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python調(diào)用系統(tǒng)底層API播放wav文件的方法

 更新時間:2017年08月11日 11:42:43   作者:羅兵  
這篇文章主要介紹了Python調(diào)用系統(tǒng)底層API播放wav文件的方法,涉及Python使用pywin32調(diào)用系統(tǒng)底層API讀取與播放wav文件的相關(guān)操作技巧,需要的朋友可以參考下

本文實例講述了Python調(diào)用系統(tǒng)底層API播放wav文件的方法。分享給大家供大家參考,具體如下:

這里未使用其他庫,只是使用 pywin32 調(diào)用系統(tǒng)底層 API 播放 wav 文件。

具體代碼如下:

# Our raison d'etre - playing sounds
import pywintypes
import struct
import win32event
import win32com.directsound.directsound as ds
import os
WAV_HEADER_SIZE = struct.calcsize('<4sl4s4slhhllhh4sl')
def wav_header_unpack(data):
  '''解包wav文件頭信息'''
  (riff, riffsize, wave, fmt, fmtsize, format, nchannels, samplespersecond, \
  datarate, blockalign, bitspersample, data, datalength) = struct.unpack('<4sl4s4slhhllhh4sl', data)
  if riff != b'RIFF' or fmtsize != 16 or fmt != b'fmt ' or data != b'data':
    raise ValueError
  wfx = pywintypes.WAVEFORMATEX()
  wfx.wFormatTag = format
  wfx.nChannels = nchannels
  wfx.nSamplesPerSec = samplespersecond
  wfx.nAvgBytesPerSec = datarate
  wfx.nBlockAlign = blockalign
  wfx.wBitsPerSample = bitspersample
  return wfx, datalength
# 播放wav文件,直到結(jié)束
sound_file = "音效-足球觀眾的歡呼聲.wav"
fname = os.path.join(os.path.dirname(__file__), sound_file)
f = open(fname, 'rb')
# 讀取/解包wav文件頭
hdr = f.read(WAV_HEADER_SIZE)
wfx, size = wav_header_unpack(hdr)
d = ds.DirectSoundCreate(None, None)
d.SetCooperativeLevel(None, ds.DSSCL_PRIORITY)
sdesc = ds.DSBUFFERDESC()
sdesc.dwFlags = ds.DSBCAPS_STICKYFOCUS | ds.DSBCAPS_CTRLPOSITIONNOTIFY
sdesc.dwBufferBytes = size
sdesc.lpwfxFormat = wfx
buffer = d.CreateSoundBuffer(sdesc, None)
event = win32event.CreateEvent(None, 0, 0, None)
notify = buffer.QueryInterface(ds.IID_IDirectSoundNotify)
notify.SetNotificationPositions((ds.DSBPN_OFFSETSTOP, event))
buffer.Update(0, f.read(size))
buffer.Play(0)
win32event.WaitForSingleObject(event, -1)

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python文件與目錄操作技巧匯總》、《Python文本文件操作技巧匯總》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進階經(jīng)典教程

希望本文所述對大家Python程序設(shè)計有所幫助。

相關(guān)文章

  • 使用Python畫股票的K線圖的方法步驟

    使用Python畫股票的K線圖的方法步驟

    這篇文章主要介紹了使用Python畫股票的K線圖的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2019-06-06
  • pandas combine_first函數(shù)處理兩個數(shù)據(jù)集重疊和缺失

    pandas combine_first函數(shù)處理兩個數(shù)據(jù)集重疊和缺失

    combine_first是pandas中的一個函數(shù),它可以將兩個DataFrame對象按照索引進行合并,用一個對象中的非空值填充另一個對象中的空值,這個函數(shù)非常適合處理兩個數(shù)據(jù)集有部分重疊和缺失的情況,可以實現(xiàn)數(shù)據(jù)的補全和更新,本文介紹combine_first函數(shù)的語法及一些案例應(yīng)用
    2024-01-01
  • Pandas數(shù)據(jù)操作及數(shù)據(jù)分析常用技術(shù)介紹

    Pandas數(shù)據(jù)操作及數(shù)據(jù)分析常用技術(shù)介紹

    Pandas是Python中用于數(shù)據(jù)處理和數(shù)據(jù)分析的庫,具有強大的數(shù)據(jù)操作和分析功能,包括數(shù)據(jù)清洗、轉(zhuǎn)換、篩選、聚合等。常用技術(shù)有數(shù)據(jù)讀取與寫入、數(shù)據(jù)索引、數(shù)據(jù)切片、數(shù)據(jù)合并、數(shù)據(jù)透視表、數(shù)據(jù)可視化等,適用于各種數(shù)據(jù)分析和機器學(xué)習任務(wù)
    2023-04-04
  • python數(shù)據(jù)結(jié)構(gòu)之圖的實現(xiàn)方法

    python數(shù)據(jù)結(jié)構(gòu)之圖的實現(xiàn)方法

    這篇文章主要介紹了python數(shù)據(jù)結(jié)構(gòu)之圖的實現(xiàn)方法,實例分析了Python圖的表示方法與常用尋路算法的實現(xiàn)技巧,需要的朋友可以參考下
    2015-07-07
  • 利用Python正則表達式過濾敏感詞的方法

    利用Python正則表達式過濾敏感詞的方法

    今天小編就為大家分享一篇利用Python正則表達式過濾敏感詞的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Pandas自定義選項option設(shè)置

    Pandas自定義選項option設(shè)置

    pandas有一個option系統(tǒng)可以控制pandas的展示情況,一般來說我們不需要進行修改,但是不排除特殊情況下的修改需求。本文將會詳細講解pandas中的option設(shè)置,感興趣的可以了解下
    2021-07-07
  • Python SQLAlchemy簡介及基本用法

    Python SQLAlchemy簡介及基本用法

    SQLAlchemy是一個基于Python實現(xiàn)的ORM對象關(guān)系映射框架,該框架建立在DB API之上,使用關(guān)系對象映射進行數(shù)據(jù)庫操作,這篇文章主要介紹了SQLAlchemy簡介以及基本使用,需要的朋友可以參考下
    2023-08-08
  • Python標準庫之typing的用法(類型標注)

    Python標準庫之typing的用法(類型標注)

    這篇文章主要介紹了Python標準庫之typing的用法(類型標注),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • python通過郵件服務(wù)器端口發(fā)送郵件的方法

    python通過郵件服務(wù)器端口發(fā)送郵件的方法

    這篇文章主要介紹了python通過郵件服務(wù)器端口發(fā)送郵件的方法,涉及Python發(fā)送郵件的相關(guān)技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • numpy中np.sort返回索引的具體使用

    numpy中np.sort返回索引的具體使用

    本文主要介紹了使用numpy中np.sort函數(shù)返回索引的詳細解釋和使用方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2023-07-07

最新評論