非常教程

Python参考手册

多媒体 | Multimedia

ossaudiodev

2.3版本的新功能。

该模块允许您访问OSS(开放式声音系统)音频接口。OSS适用于广泛的开源和商业Unices,是Linux和FreeBSD最新版本的标准音频接口。

该模块定义了由OSS设备驱动程序提供的大量常量; 见<sys/soundcard.h>在Linux或者FreeBSD的列表项。

ossaudiodev 定义了以下变量和函数:

exception ossaudiodev.OSSAudioError

这个例外在某些错误中引发。参数是一个描述出错的字符串。

(如果ossaudiodev从系统调用收到错误时,例如open()write(),或ioctl(),它提出了IOError通过直接检测到的错误ossaudiodev结果OSSAudioError。)

(为了向后兼容,异常类也可用ossaudiodev.error。)

ossaudiodev.open(mode)ossaudiodev.open(device, mode)

打开音频设备并返回OSS音频设备对象。此对象支持许多类文件的方法,如read()write()fileno()(虽然有读常规的Unix之间的细微差别/写语义和那些OSS音频设备)。它还支持许多音频特定的方法; 请参阅下面的方法的完整列表。

设备是要使用的音频设备文件名。如果未指定,则该模块首先在环境变量中AUDIODEV查找要使用的设备。如果找不到,则返回/dev/dsp

模式'r'只读(记录)访问,'w'只写(回放)访问和'rw'两者之一。由于许多声卡只允许一个进程一次打开录像机或播放器,因此只有为需要的活动打开设备是一个好主意。此外,一些声卡是半双工的:它们可以打开以便读取或写入,但不能同时打开。

注意不寻常的调用语法:第一个参数是可选的,第二个参数是必需的。这是与替代旧linuxaudiodev模块兼容的历史工件ossaudiodev

ossaudiodev.openmixer([device])

打开混音器设备并返回OSS混音器设备对象。设备是要使用的混合器设备文件名。如果未指定,则该模块首先在环境变量中MIXERDEV查找要使用的设备。如果找不到,则返回/dev/mixer

1.音频设备对象

在您可以写入或读取音频设备之前,您必须按正确的顺序调用三种方法:

  • setfmt() 设置输出格式
  • channels() 设置通道数
  • speed() 设置采样率

或者,您可以使用该setparameters()方法一次设置全部三个音频参数。这样更方便,但在所有情况下可能都不那么灵活。

通过open()定义以下方法和(只读)属性返回的音频设备对象:

oss_audio_device.close()

明确关闭音频设备。当您完成写入或读取音频设备时,应该明确地关闭它。封闭的设备不能再次使用。

oss_audio_device.fileno()

返回与设备关联的文件描述符。

oss_audio_device.read(size)

从音频输入中读取大小字节并将它们作为Python字符串返回。与大多数Unix设备驱动程序不同,处于阻止模式(默认设置)的OSS音频设备将阻塞,read()直到整个请求的数据量可用。

oss_audio_device.write(data)

将Python字符串数据写入音频设备并返回写入的字节数。如果音频设备处于阻塞模式(默认设置),则整个字符串总是被写入(同样,这与通常的Unix设备语义不同)。如果设备处于非阻塞模式,则可能不会写入某些数据 - 请参阅writeall()

oss_audio_device.writeall(data)

将整个Python字符串数据写入音频设备:等待音频设备能够接受数据,写入尽可能多的数据,并重复数据直到数据完全写入。如果设备处于阻止模式(默认设置),则与此效果相同write(); writeall()仅在非阻塞模式下有用。没有返回值,因为写入的数据量总是等于所提供的数据量。

以下方法分别映射到一个ioctl()系统调用。的对应是显然的:例如,setfmt()对应于所述SNDCTL_DSP_SETFMT的ioctl,和sync()SNDCTL_DSP_SYNC(咨询OSS文档时这可能是有用的)。如果底层ioctl()失败,他们都会升起IOError

oss_audio_device.nonblock()

将设备置于非阻塞模式。一旦进入非阻塞模式,无法将其返回到阻塞模式。

oss_audio_device.getfmts()

返回声卡支持的音频输出格式的掩码。OSS支持的一些格式是:

格式

描述

AFMT_MU_LAW

对数编码(由Sun .au文件和/ dev / audio使用)

AFMT_A_LAW

对数编码

AFMT_IMA_ADPCM

由交互式多媒体协会定义的4:1压缩格式

AFMT_U8

无符号的8位音频

AFMT_S16_LE

已签名的16位音频,小端字节顺序(由英特尔处理器使用)

AFMT_S16_BE

已签名的16位音频,大端字节顺序(68k,PowerPC,Sparc使用)

AFMT_S8

签名,8位音频

AFMT_U16_LE

无符号的16位小端音频

AFMT_U16_BE

无符号的16位大端音频

请查阅OSS文档以获取音频格式的完整列表,并注意大多数设备仅支持这些格式的一部分。一些较旧的设备仅支持AFMT_U8; 今天使用的最常见的格式是AFMT_S16_LE

oss_audio_device.setfmt(format)

尝试将当前音频格式设置为格式 - 请参阅getfmts()列表。返回设备设置为的音频格式,可能不是所请求的格式。也可用于返回当前的音频格式 - 通过传递“音频格式”来完成此操作AFMT_QUERY

oss_audio_device.channels(nchannels)

将输出通道的数量设置为nchannels。值1表示单声道,2立体声。某些设备可能有两个以上的通道,而一些高端设备可能不支持单声道。返回设备设置的通道数量。

oss_audio_device.speed(samplerate)

尝试将音频采样率设置为每秒采样率采样率。返回实际设置的比率。大多数声音设备不支持任意采样率。常见的价格是:

描述

8000

/ dev / audio的默认速率

11025

语音录制

22050

44100

CD质量音频(16位/采样和2通道)

96000

DVD质量音频(24位/采样)

oss_audio_device.sync()

等到声音设备播放其缓冲区中的每个字节。(当设备关闭时,会发生这种情况。)OSS文档建议关闭并重新打开设备,而不是使用sync()

oss_audio_device.reset()

立即停止播放或录制,并将设备恢复到可以接受命令的状态。OSS文档建议在呼叫后关闭并重新打开设备reset()

oss_audio_device.post()

告诉驱动程序,输出中可能会出现暂停,使设备可以更智能地处理暂停。在等待用户输入之前或在执行磁盘I / O之前,您可以在播放专辑效果之后使用此功能。

以下便利方法结合了几个ioctl,或一个ioctl和一些简单的计算。

oss_audio_device.setparameters(format, nchannels, samplerate[, strict=False])

在一次方法调用中设置关键音频采样参数 - 采样格式,通道数量和采样率。格式nchannels,和采样率应该在中的规定setfmt()channels(),和speed()方法。如果严格为真,则setparameters()检查每个参数是否实际设置为所请求的值,OSSAudioError如果不是则引发。返回一个元组(格式nchannels采样率表示实际上是由设备驱动器(即,相同的返回值设置的参数值)setfmt()channels()speed())。

例如,

(fmt, channels, rate) = dsp.setparameters(fmt, channels, rate)

相当于

fmt = dsp.setfmt(fmt)
channels = dsp.channels(channels)
rate = dsp.rate(rate)

oss_audio_device.bufsize()

以样本形式返回硬件缓冲区的大小。

oss_audio_device.obufcount()

返回硬件缓冲区中尚未播放的样本数。

oss_audio_device.obuffree()

返回可以排队到硬件缓冲区中的样本数量,以便不被阻塞地播放。

音频设备对象还支持多种只读属性:

oss_audio_device.closed

布尔值,指示设备是否已关闭。

oss_audio_device.name

包含设备文件名称的字符串。

oss_audio_device.mode

该文件的I / O模式,要么"r""rw""w"

2.调音台设备对象

混音器对象提供了两种类似文件的方法:

oss_mixer_device.close()

该方法关闭打开的混音器设备文件。在该文件关闭后再次尝试使用混音器将会引发一次IOError

oss_mixer_device.fileno()

返回打开的混音器设备文件的文件句柄编号。

其余的方法特定于音频混合:

oss_mixer_device.controls()

此方法返回一个指定可用混音器控件的位掩码(“Control”是特定的可混音“通道”,如SOUND_MIXER_PCMor SOUND_MIXER_SYNTH)。该位掩码表示所有可用混音器控件的子集 - SOUND_MIXER_*在模块级定义的常量。例如,要确定当前的混音器对象是否支持PCM混音器,请使用以下Python代码:

mixer=ossaudiodev.openmixer()
if mixer.controls() & (1 << ossaudiodev.SOUND_MIXER_PCM):
    # PCM is supported
    ... code ...

对于大多数用途来说,SOUND_MIXER_VOLUME(主音量)和SOUND_MIXER_PCM控件应该就足够了 - 但是在选择混音器控件时,使用混音器的代码应该是灵活的。例如,在重症超声SOUND_MIXER_VOLUME中不存在。

oss_mixer_device.stereocontrols()

返回指示立体声混音器控件的位掩码。如果设置了一位,则相应的控制是立体声; 如果未设置,则控制器为单声道或不支持混音器(与controls()确定哪一个配合使用)。

有关controls()从位掩码获取数据的示例,请参阅该函数的代码示例。

oss_mixer_device.reccontrols()

返回指定可用于记录的混音器控件的位掩码。有关controls()从位掩码读取的示例,请参阅代码示例。

oss_mixer_device.get(control)

返回给定混音器控件的音量。返回的卷是一个2元组(left_volume,right_volume)。音量指定为从0(无声)到100(全音量)的数字。如果控件是单音的,则2元组仍然返回,但两个音量都是相同的。

引发OSSAudioError如果被指定了无效的控制,或者IOError如果指定了不支持的控制。

oss_mixer_device.set(control, (left, right))

将给定混音器控制的音量设置为(left,right)left并且right必须是整数并且在0(无声)和100(全音量)之间。成功时,新卷将作为2元组返回。请注意,这可能与指定的音量不完全相同,因为某些声卡混音器的分辨率有限。

如果指定了无效的混音器控制,或者指定的音量超出范围,则会引发OSSAudioError

oss_mixer_device.get_recsrc()

此方法返回一个位掩码,指示当前正在将哪些控件用作记录源。

oss_mixer_device.set_recsrc(bitmask)

调用此功能指定一个录音源。如果成功,则返回指示新录制源(或多个源)的位掩码; IOError如果指定了无效源,则会引发此问题。将当前录音源设置为麦克风输入:

mixer.setrecsrc (1 << ossaudiodev.SOUND_MIXER_MIC)
Python

Python 是一种面向对象的解释型计算机程序设计语言,由荷兰人 Guido van Rossum 于1989年发明,第一个公开发行版发行于1991年。 Python 是纯粹的自由软件, 源代码和解释器 CPython 遵循 GPL 协议。Python 语法简洁清晰,特色之一是强制用空白符( white space )作为语句缩进。

主页 https://www.python.org/
源码 https://github.com/python/cpython
版本 2.7
发布版本 2.7.13

Python目录

1.内置常量 | Built-in Constants
2.内置例外 | Built-in Exceptions
3.内置函数 | Built-in Functions
4.内置类型 | Built-in Types
5.编译器 | Compiler
6.加密 | Cryptography
7.数据压缩 | Data Compression
8.数据持久性 | Data Persistence
9.数据类型 | Data Types
10.调试和分析 | Debugging & Profiling
11.开发工具 | Development Tools
12.文件和目录访问 | File & Directory Access
13.文件格式 | File Formats
14.构架 | Frameworks
15.输入 | Importing
16.输入/输出 | Input/ouput
17.国际化 | Internationalization
18.网络 | Internet
19.网络数据 | Internet Data
20.翻译 | Interpreters
21.语言 | Language
22.记录 | Logging
23.Mac OS
24.MS Windows
25.多媒体 | Multimedia
26.联网 | Networking
27.数字与数学 | Numeric & Mathematical
28.操作系统 | Operating System
29.可选操作系统 | Optional Operating System
30.限制执行 | Restricted Execution
31.运行 | Runtime
32.SGI IRIX
33.软件包装与分销 | Software Packaging & Distribution
34.字符串 | String
35.结构化标记 | Structured Markup
36.Tk
37.Unix
38.Python 简介
39.Python pass 语句
40.Python 循环嵌套
41.Python 运算符
42.Python log10() 函数
43.Python log() 函数
44.Python floor() 函数
45.Python fabs() 函数
46.Python exp() 函数
47.Python cmp() 函数
48.Python ceil() 函数
49.Python abs() 函数
50.Python Number(数字)
51.Python pow() 函数
52.Python modf() 函数
53.Python min() 函数
54.Python max() 函数
55.Python asin() 函数
56.Python acos() 函数
57.Python uniform() 函数
58.Python shuffle() 函数
59.Python seed() 函数
60.Python random() 函数
61.Python randrange() 函数
62.Python choice() 函数
63.Python sqrt() 函数
64.Python round() 函数
65.Python radians() 函数
66.Python degrees() 函数
67.Python tan() 函数
68.Python sin() 函数
69.Python hypot() 函数
70.Python cos() 函数
71.Python atan2() 函数
72.Python atan() 函数
73.Python 元组
74.Python 列表(List)
75.Python 字符串
76.Python 字典(Dictionary)
77.Python 日期和时间
78.Python 函数
79.Python 模块
80.Python capitalize()方法
81.Python center()方法
82.Python count() 方法
83.Python expandtabs()方法
84.Python endswith()方法
85.Python encode()方法
86.Python decode()方法
87.Python find()方法
88.Python index()方法
89.Python 异常处理
90.Python isspace()方法
91.Python isnumeric()方法
92.Python islower()方法
93.Python isdigit()方法
94.Python isalpha()方法
95.Python isalnum()方法
96.Python isupper()方法
97.Python istitle()方法
98.Python min()方法
99.Python max()方法
100.Python maketrans()方法