In diesem Artikel wird hauptsächlich die Methode vorgestellt, mit der Python die zugrunde liegende API des Systems zum Abspielen von WAV-Dateien aufruft. Dazu gehört die Verwendung von Python, um die zugrunde liegende API des Systems zum Lesen und Abspielen von WAV-Dateien aufzurufen it
Das Beispiel in diesem Artikel beschreibt, wie Python die zugrunde liegende API des Systems aufruft, um WAV-Dateien abzuspielen. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:
Hier werden keine anderen Bibliotheken verwendet, aber pywin32 wird verwendet, um die zugrunde liegende API des Systems aufzurufen, um WAV-Dateien abzuspielen.
Der spezifische Code lautet wie folgt:
# 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文件,直到结束 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)
Das obige ist der detaillierte Inhalt vonPython-Methode zum Abspielen von WAV-Dateien (Aufruf der zugrunde liegenden API des Systems). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!