您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

简述Python如何调用系统底层API播放wav文件

2024/3/13 5:31:42发布38次查看
这篇文章主要介绍了python调用系统底层api播放wav文件的方法,涉及python使用pywin32调用系统底层api读取与播放wav文件的相关操作技巧,需要的朋友可以参考下
本文实例讲述了python调用系统底层api播放wav文件的方法。分享给大家供大家参考,具体如下:
这里未使用其他库,只是使用 pywin32 调用系统底层 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文件,直到结束 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文件的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product