pyopenal为python提供了openal绑定和接口。使用pyopenal可以方便的播放wave、ogg vorbis、ogg opus和flac文件,并实现3D音频的播放。
但弱要播放ogg vorbis、ogg opus和flac文件,需安装pyogg库。
在windows平台pyopenal和pyogg的安装十分简单,可以直接使用pypi进行安装。
pip install pyopenal
pip install pyogg
本篇文章首先介绍使用pyopenal来播放一个音频的方法。
以下是相关代码,代码中有注释。
from openal import *
import pyogg
audio_file1 = VorbisFile('D:/sounds/audio1.ogg') #加载ogg文件,音频文件路径中不能包含中文路径
audio_file2 = WaveFile('D:/sounds/audio2.wav') #加载wave文件
audio_buffer1 = Buffer(audio_file1) #创建音源缓冲区并将音频文件对象加入缓冲区
audio_buffer2 = Buffer(audio_file2)
audio_source1 = Source() #创建声源对象
audio_source1._set_buffer(audio_buffer1) #将音源缓冲区绑定到audio_source上
audio_source2 = Source(audio_buffer2, True) #创建声源对象时直接绑定缓冲区
audio_source1.play() #播放声源
audio_source1.stop() #停止播放声源
audio_source1.set_looping(True) #将声源设定为循环播放
audio_source1.set_gain(1.0) #设置声源音量
audio_source1.pause() #暂停播放,使用play()方法继续播放
oalQuit() #关闭设备
在一个程序内,声源source的最大存在数量为256,因此需合理分配声源对象,若想销毁某声源可以使用destroy()方法
audio_source1.destroy() #销毁audio_source1所指向的声源
多个source可以绑定同一个音源缓冲区,但一个音源缓冲区若被多个source绑定,在使用oalQuit()关闭音频设备之前需将所有source销毁才可顺利关闭
以上代码是为以后实现3 D音频作为基础,若单单只想对音频进行播放也可使用简便加载音频的方法,代码如下:
import openal
audio_file1=openal.oalOpen('D:/sounds/audio1.ogg') #加载并创建音源对象
audio_file1.play() #播放音频
audio_file1.stop() #停止播放音频
上面的例子中,oalOpen()主要是将(加载音频数据到缓冲区)、(创建音源对象)、(将音源对象和缓冲区绑定)这三者结合在了一起,虽然这样使用很方便,但在开发的具体使用中还是推荐第一种方法,第一种方法更为灵活一些。
本篇文章就到这里,下篇文章将详细介绍声源Source所具有的各种方法和属性。