この記事では、Python がシステムの基礎となる API を呼び出して wav ファイルを再生する方法を主に紹介します。これには、pywin32 を使用してシステムの基礎となる API を呼び出して wav ファイルを読み取って再生するための Python の関連操作スキルが含まれます。
この記事では、Python について例を示して説明します。システムの基礎となる API を呼び出して wav ファイルを再生する方法です。参考のために皆さんと共有してください。詳細は次のとおりです: ここでは他のライブラリは使用されていません。wav ファイルを再生するためにシステムの基礎となる API を呼び出すために pywin32 のみが使用されます。 具体的なコードは次のとおりです:# 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)
以上がPython がシステムの基礎となる API を呼び出して wav ファイルを再生する方法を簡単に説明します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。