增加python文档

This commit is contained in:
2025-03-09 17:10:56 +08:00
parent 7153217140
commit 723430cade
1039 changed files with 699509 additions and 0 deletions

View File

@@ -0,0 +1,608 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh_CN">
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>ossaudiodev --- 访问兼容OSS的音频设备 &#8212; Python 3.8.20 文档</title><meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="../_static/pydoctheme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/language_data.js"></script>
<script src="../_static/translations.js"></script>
<script src="../_static/sidebar.js"></script>
<link rel="search" type="application/opensearchdescription+xml"
title="在 Python 3.8.20 文档 中搜索"
href="../_static/opensearch.xml"/>
<link rel="author" title="关于这些文档" href="../about.html" />
<link rel="index" title="索引" href="../genindex.html" />
<link rel="search" title="搜索" href="../search.html" />
<link rel="copyright" title="版权所有" href="../copyright.html" />
<link rel="next" title="国际化" href="i18n.html" />
<link rel="prev" title="sndhdr --- 推测声音文件的类型" href="sndhdr.html" />
<link rel="canonical" href="https://docs.python.org/3/library/ossaudiodev.html" />
<style>
@media only screen {
table.full-width-table {
width: 100%;
}
}
</style>
<link rel="shortcut icon" type="image/png" href="../_static/py.svg" />
<script type="text/javascript" src="../_static/copybutton.js"></script>
<script type="text/javascript" src="../_static/menu.js"></script>
</head>
<body>
<div class="mobile-nav">
<input type="checkbox" id="menuToggler" class="toggler__input" aria-controls="navigation"
aria-pressed="false" aria-expanded="false" role="button" aria-label="Menu" />
<label for="menuToggler" class="toggler__label">
<span></span>
</label>
<nav class="nav-content" role="navigation">
<a href="https://www.python.org/" class="nav-logo">
<img src="../_static/py.svg" alt="Logo"/>
</a>
<div class="version_switcher_placeholder"></div>
<form role="search" class="search" action="../search.html" method="get">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" class="search-icon">
<path fill-rule="nonzero"
d="M15.5 14h-.79l-.28-.27a6.5 6.5 0 001.48-5.34c-.47-2.78-2.79-5-5.59-5.34a6.505 6.505 0 00-7.27 7.27c.34 2.8 2.56 5.12 5.34 5.59a6.5 6.5 0 005.34-1.48l.27.28v.79l4.25 4.25c.41.41 1.08.41 1.49 0 .41-.41.41-1.08 0-1.49L15.5 14zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z" fill="#444"></path>
</svg>
<input type="text" name="q" aria-label="快速搜索"/>
<input type="submit" value="转向"/>
</form>
</nav>
<div class="menu-wrapper">
<nav class="menu" role="navigation" aria-label="main navigation">
<div class="language_switcher_placeholder"></div>
<h3><a href="../contents.html">目录</a></h3>
<ul>
<li><a class="reference internal" href="#"><code class="xref py py-mod docutils literal notranslate"><span class="pre">ossaudiodev</span></code> --- 访问兼容OSS的音频设备</a><ul>
<li><a class="reference internal" href="#audio-device-objects">音频设备对象</a></li>
<li><a class="reference internal" href="#mixer-device-objects">混音器设备对象</a></li>
</ul>
</li>
</ul>
<h4>上一个主题</h4>
<p class="topless"><a href="sndhdr.html"
title="上一章"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sndhdr</span></code> --- 推测声音文件的类型</a></p>
<h4>下一个主题</h4>
<p class="topless"><a href="i18n.html"
title="下一章">国际化</a></p>
<div role="note" aria-label="source link">
<h3>本页</h3>
<ul class="this-page-menu">
<li><a href="../bugs.html">报告 Bug</a></li>
<li>
<a href="https://github.com/python/cpython/blob/3.8/Doc/library/ossaudiodev.rst"
rel="nofollow">显示源代码
</a>
</li>
</ul>
</div>
</nav>
</div>
</div>
<div id="outdated-warning" style="padding: .5em; text-align: center; background-color: #FFBABA; color: #6A0E0E;">
这个文档所针对的是一个已不再受支持的 Python 旧版本。
你应当升级版本,并阅读
<a href="/3/library/ossaudiodev.html"> Python 当前稳定版本的文档</a>.
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>导航</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="总目录"
accesskey="I">索引</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python 模块索引"
>模块</a> |</li>
<li class="right" >
<a href="i18n.html" title="国际化"
accesskey="N">下一页</a> |</li>
<li class="right" >
<a href="sndhdr.html" title="sndhdr --- 推测声音文件的类型"
accesskey="P">上一页</a> |</li>
<li><img src="../_static/py.svg" alt="python logo" style="vertical-align: middle; margin-top: -1px"/></li>
<li><a href="https://www.python.org/">Python</a> &#187;</li>
<li class="switchers">
<div class="language_switcher_placeholder"></div>
<div class="version_switcher_placeholder"></div>
</li>
<li>
</li>
<li id="cpython-language-and-version">
<a href="../index.html">3.8.20 Documentation</a> &#187;
</li>
<li class="nav-item nav-item-1"><a href="index.html" >Python 标准库</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="mm.html" accesskey="U">多媒体服务</a> &#187;</li>
<li class="right">
<div class="inline-search" role="search">
<form class="inline-search" action="../search.html" method="get">
<input placeholder="快速搜索" aria-label="快速搜索" type="text" name="q" />
<input type="submit" value="转向" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
|
</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="module-ossaudiodev">
<span id="ossaudiodev-access-to-oss-compatible-audio-devices"></span><h1><a class="reference internal" href="#module-ossaudiodev" title="ossaudiodev: Access to OSS-compatible audio devices. (Linux, FreeBSD)"><code class="xref py py-mod docutils literal notranslate"><span class="pre">ossaudiodev</span></code></a> --- 访问兼容OSS的音频设备<a class="headerlink" href="#module-ossaudiodev" title="永久链接至标题"></a></h1>
<hr class="docutils" />
<p>该模块允许您访问 OSS开放式音响系统音频接口。 OSS 可用于广泛的开源和商业 Unices并且是 Linux 和最新版本的 FreeBSD 的标准音频接口。</p>
<div class="versionchanged">
<p><span class="versionmodified changed">在 3.3 版更改: </span>此模块中过去会引发 <a class="reference internal" href="exceptions.html#IOError" title="IOError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">IOError</span></code></a> 的操作现在将引发 <a class="reference internal" href="exceptions.html#OSError" title="OSError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">OSError</span></code></a></p>
</div>
<div class="admonition seealso">
<p class="admonition-title">参见</p>
<dl class="simple">
<dt><a class="reference external" href="http://www.opensound.com/pguide/oss.pdf">开放之声系统程序员指南</a></dt><dd><p>OSS C API 的官方文档</p>
</dd>
</dl>
<p>该模块定义了大量由OSS设备驱动提供的常量 请参阅 <code class="docutils literal notranslate"><span class="pre">&lt;sys/soundcard.h&gt;</span></code> Linux 或 FreeBSD 上的列表。</p>
</div>
<p><a class="reference internal" href="#module-ossaudiodev" title="ossaudiodev: Access to OSS-compatible audio devices. (Linux, FreeBSD)"><code class="xref py py-mod docutils literal notranslate"><span class="pre">ossaudiodev</span></code></a> 定义了下列变量和函数:</p>
<dl class="exception">
<dt id="ossaudiodev.OSSAudioError">
<em class="property">exception </em><code class="sig-prename descclassname">ossaudiodev.</code><code class="sig-name descname">OSSAudioError</code><a class="headerlink" href="#ossaudiodev.OSSAudioError" title="永久链接至目标"></a></dt>
<dd><p>此异常会针对特定错误被引发。 其参数为一个描述错误信息的字符串。</p>
<p>(如果 <a class="reference internal" href="#module-ossaudiodev" title="ossaudiodev: Access to OSS-compatible audio devices. (Linux, FreeBSD)"><code class="xref py py-mod docutils literal notranslate"><span class="pre">ossaudiodev</span></code></a> 从系统调用例如 <code class="xref c c-func docutils literal notranslate"><span class="pre">open()</span></code>, <code class="xref c c-func docutils literal notranslate"><span class="pre">write()</span></code><code class="xref c c-func docutils literal notranslate"><span class="pre">ioctl()</span></code> 接收到错误,它将引发 <a class="reference internal" href="exceptions.html#OSError" title="OSError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">OSError</span></code></a>。 由 <a class="reference internal" href="#module-ossaudiodev" title="ossaudiodev: Access to OSS-compatible audio devices. (Linux, FreeBSD)"><code class="xref py py-mod docutils literal notranslate"><span class="pre">ossaudiodev</span></code></a> 直接检测到的错误将引发 <a class="reference internal" href="#ossaudiodev.OSSAudioError" title="ossaudiodev.OSSAudioError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">OSSAudioError</span></code></a>。)</p>
<p>(为了向下兼容,此异常类也可通过 <code class="docutils literal notranslate"><span class="pre">ossaudiodev.error</span></code> 访问。)</p>
</dd></dl>
<dl class="function">
<dt id="ossaudiodev.open">
<code class="sig-prename descclassname">ossaudiodev.</code><code class="sig-name descname">open</code><span class="sig-paren">(</span><em class="sig-param">mode</em><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.open" title="永久链接至目标"></a></dt>
<dt>
<code class="sig-prename descclassname">ossaudiodev.</code><code class="sig-name descname">open</code><span class="sig-paren">(</span><em class="sig-param">device</em>, <em class="sig-param">mode</em><span class="sig-paren">)</span></dt>
<dd><p>打开一个音频设备并返回 OSS 音频设备对象。 此对象支持许多文件类方法,例如 <code class="xref py py-meth docutils literal notranslate"><span class="pre">read()</span></code>, <code class="xref py py-meth docutils literal notranslate"><span class="pre">write()</span></code><code class="xref py py-meth docutils literal notranslate"><span class="pre">fileno()</span></code> (不过传统的 Unix 读/写语义与 OSS 音频设备的存在一些细微的差异)。 它还支持一些音频专属的方法;完整的方法列表见下文。</p>
<p><em>device</em> 是要使用的音频设备文件名。 如果未指定,则此模块会先在环境变量 <span class="target" id="index-4"></span><code class="xref std std-envvar docutils literal notranslate"><span class="pre">AUDIODEV</span></code> 中查找要使用的设备。 如果未找到,它将回退为 <code class="file docutils literal notranslate"><span class="pre">/dev/dsp</span></code></p>
<p><em>mode</em> 可以为 <code class="docutils literal notranslate"><span class="pre">'r'</span></code> 表示只读(录音)访问,<code class="docutils literal notranslate"><span class="pre">'w'</span></code> 表示只写(回放)访问以及 <code class="docutils literal notranslate"><span class="pre">'rw'</span></code> 表示同时读写。 由于许多声卡在同一时间只允许单个进程打开录音机或播放器,因此好的做法是只根据活动的需要打开设备。 并且,有些声卡是半双工的:它们可以被打开用于读取或写入,但不能同时读写。</p>
<p>请注意这里特殊的调用语法: <em>first</em> 参数是可选的,而第二个参数则是必需的。 这是出于历史原因要与 <a class="reference internal" href="#module-ossaudiodev" title="ossaudiodev: Access to OSS-compatible audio devices. (Linux, FreeBSD)"><code class="xref py py-mod docutils literal notranslate"><span class="pre">ossaudiodev</span></code></a> 所替代的 <code class="xref py py-mod docutils literal notranslate"><span class="pre">linuxaudiodev</span></code> 模块保持兼容。</p>
</dd></dl>
<dl class="function">
<dt id="ossaudiodev.openmixer">
<code class="sig-prename descclassname">ossaudiodev.</code><code class="sig-name descname">openmixer</code><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param">device</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.openmixer" title="永久链接至目标"></a></dt>
<dd><p>打开一个混音设备并返回 OSS 混音设备对象。 <em>device</em> 是要使用的混音设备文件名。 如果未指定,则此模块会先在环境变量 <span class="target" id="index-5"></span><code class="xref std std-envvar docutils literal notranslate"><span class="pre">MIXERDEV</span></code> 中查找要使用的设备。 如果未找到,它将回退为 <code class="file docutils literal notranslate"><span class="pre">/dev/mixer</span></code></p>
</dd></dl>
<section id="audio-device-objects">
<span id="ossaudio-device-objects"></span><h2>音频设备对象<a class="headerlink" href="#audio-device-objects" title="永久链接至标题"></a></h2>
<p>在你写入或读取音频设备之前,你必须按照正确的顺序调用三个方法:</p>
<ol class="arabic simple">
<li><p><code class="xref py py-meth docutils literal notranslate"><span class="pre">setfmt()</span></code> 设置输出格式</p></li>
<li><p><code class="xref py py-meth docutils literal notranslate"><span class="pre">channels()</span></code> 设置声道数量</p></li>
<li><p><code class="xref py py-meth docutils literal notranslate"><span class="pre">speed()</span></code> 设置采样率</p></li>
</ol>
<p>或者,你也可以使用 <code class="xref py py-meth docutils literal notranslate"><span class="pre">setparameters()</span></code> 方法一次性地设置全部三个音频参数。 这更为便捷,但可能不会在所有场景下都一样灵活。</p>
<p><a class="reference internal" href="#ossaudiodev.open" title="ossaudiodev.open"><code class="xref py py-func docutils literal notranslate"><span class="pre">open()</span></code></a> 所返回的音频设备对象定义了下列方法和(只读)属性:</p>
<dl class="method">
<dt id="ossaudiodev.oss_audio_device.close">
<code class="sig-prename descclassname">oss_audio_device.</code><code class="sig-name descname">close</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_audio_device.close" title="永久链接至目标"></a></dt>
<dd><p>显式地关闭音频设备。 当你完成写入或读取音频设备后,你应当显式地关闭它。 已关闭的设备不可被再次使用。</p>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_audio_device.fileno">
<code class="sig-prename descclassname">oss_audio_device.</code><code class="sig-name descname">fileno</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_audio_device.fileno" title="永久链接至目标"></a></dt>
<dd><p>返回与设备相关联的文件描述符。</p>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_audio_device.read">
<code class="sig-prename descclassname">oss_audio_device.</code><code class="sig-name descname">read</code><span class="sig-paren">(</span><em class="sig-param">size</em><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_audio_device.read" title="永久链接至目标"></a></dt>
<dd><p>从音频输入设备读取 <em>size</em> 个字节并返回为 Python 字节串。 与大多数 Unix 设备驱动不同,处于阻塞模式(默认)的 OSS 音频设备将阻塞 <a class="reference internal" href="#ossaudiodev.oss_audio_device.read" title="ossaudiodev.oss_audio_device.read"><code class="xref py py-func docutils literal notranslate"><span class="pre">read()</span></code></a> 直到所请求大小的数据全部可用。</p>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_audio_device.write">
<code class="sig-prename descclassname">oss_audio_device.</code><code class="sig-name descname">write</code><span class="sig-paren">(</span><em class="sig-param">data</em><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_audio_device.write" title="永久链接至目标"></a></dt>
<dd><p>将一个 <a class="reference internal" href="../glossary.html#term-bytes-like-object"><span class="xref std std-term">bytes-like object</span></a> <em>data</em> 写入音频设备并返回写入的字节数。 如果音频设备处于阻塞模式(默认),则总是会写入完整数据(这还是不同于通常的 Unix 设备语义)。 如果设备处于非阻塞模式,则可能会有部分数据未被写入 --- 参见 <a class="reference internal" href="#ossaudiodev.oss_audio_device.writeall" title="ossaudiodev.oss_audio_device.writeall"><code class="xref py py-meth docutils literal notranslate"><span class="pre">writeall()</span></code></a></p>
<div class="versionchanged">
<p><span class="versionmodified changed">在 3.5 版更改: </span>现在接受可写的 <a class="reference internal" href="../glossary.html#term-bytes-like-object"><span class="xref std std-term">字节类对象</span></a></p>
</div>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_audio_device.writeall">
<code class="sig-prename descclassname">oss_audio_device.</code><code class="sig-name descname">writeall</code><span class="sig-paren">(</span><em class="sig-param">data</em><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_audio_device.writeall" title="永久链接至目标"></a></dt>
<dd><p>将一个 <a class="reference internal" href="../glossary.html#term-bytes-like-object"><span class="xref std std-term">bytes-like object</span></a> <em>data</em> 写入音频设备:等待直到音频设备能够接收数据,将根据其所能接收的数据量尽可能多地写入,并重复操作直至 <em>data</em> 被完全写入。 如果设备处于阻塞模式(默认),则其效果与 <a class="reference internal" href="#ossaudiodev.oss_audio_device.write" title="ossaudiodev.oss_audio_device.write"><code class="xref py py-meth docutils literal notranslate"><span class="pre">write()</span></code></a> 相同;<a class="reference internal" href="#ossaudiodev.oss_audio_device.writeall" title="ossaudiodev.oss_audio_device.writeall"><code class="xref py py-meth docutils literal notranslate"><span class="pre">writeall()</span></code></a> 仅适用于非阻塞模式。 它没有返回值,因为写入的数据量总是等于所提供的数据量。</p>
<div class="versionchanged">
<p><span class="versionmodified changed">在 3.5 版更改: </span>现在接受可写的 <a class="reference internal" href="../glossary.html#term-bytes-like-object"><span class="xref std std-term">字节类对象</span></a></p>
</div>
</dd></dl>
<div class="versionchanged">
<p><span class="versionmodified changed">在 3.2 版更改: </span>音频设备对象还支持上下文管理协议,就是说它们可以在 <a class="reference internal" href="../reference/compound_stmts.html#with"><code class="xref std std-keyword docutils literal notranslate"><span class="pre">with</span></code></a> 语句中使用。</p>
</div>
<p>下列方法各自映射一个 <code class="xref c c-func docutils literal notranslate"><span class="pre">ioctl()</span></code> 系统调用。 对应关系很明显:例如,<code class="xref py py-meth docutils literal notranslate"><span class="pre">setfmt()</span></code> 对应 <code class="docutils literal notranslate"><span class="pre">SNDCTL_DSP_SETFMT</span></code> ioctl<code class="xref py py-meth docutils literal notranslate"><span class="pre">sync()</span></code> 对应 <code class="docutils literal notranslate"><span class="pre">SNDCTL_DSP_SYNC</span></code> (这在查阅 OSS 文档时很有用)。 如果下层的 <code class="xref c c-func docutils literal notranslate"><span class="pre">ioctl()</span></code> 失败,它们将引发 <a class="reference internal" href="exceptions.html#OSError" title="OSError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">OSError</span></code></a></p>
<dl class="method">
<dt id="ossaudiodev.oss_audio_device.nonblock">
<code class="sig-prename descclassname">oss_audio_device.</code><code class="sig-name descname">nonblock</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_audio_device.nonblock" title="永久链接至目标"></a></dt>
<dd><p>将设备转为非阻塞模式。 一旦处于非阻塞模式,将无法将其转回阻塞模式。</p>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_audio_device.getfmts">
<code class="sig-prename descclassname">oss_audio_device.</code><code class="sig-name descname">getfmts</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_audio_device.getfmts" title="永久链接至目标"></a></dt>
<dd><p>返回声卡所支持的音频输出格式的位掩码。 OSS 支持的一部分格式如下:</p>
<table class="docutils align-default">
<colgroup>
<col style="width: 36%" />
<col style="width: 64%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>格式</p></th>
<th class="head"><p>描述</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p><code class="xref py py-const docutils literal notranslate"><span class="pre">AFMT_MU_LAW</span></code></p></td>
<td><p>一种对数编码格式(被 Sun <code class="docutils literal notranslate"><span class="pre">.au</span></code> 文件和 <code class="file docutils literal notranslate"><span class="pre">/dev/audio</span></code> 所使用)</p></td>
</tr>
<tr class="row-odd"><td><p><code class="xref py py-const docutils literal notranslate"><span class="pre">AFMT_A_LAW</span></code></p></td>
<td><p>一种对数编码格式</p></td>
</tr>
<tr class="row-even"><td><p><code class="xref py py-const docutils literal notranslate"><span class="pre">AFMT_IMA_ADPCM</span></code></p></td>
<td><p>一种 4:1 压缩格式,由 Interactive Multimedia Association 定义</p></td>
</tr>
<tr class="row-odd"><td><p><code class="xref py py-const docutils literal notranslate"><span class="pre">AFMT_U8</span></code></p></td>
<td><p>无符号的 8 位音频</p></td>
</tr>
<tr class="row-even"><td><p><code class="xref py py-const docutils literal notranslate"><span class="pre">AFMT_S16_LE</span></code></p></td>
<td><p>有符号的 16 位音频,采用小端字节序(如 Intel 处理器所用的)</p></td>
</tr>
<tr class="row-odd"><td><p><code class="xref py py-const docutils literal notranslate"><span class="pre">AFMT_S16_BE</span></code></p></td>
<td><p>有符号的 16 位音频,采用大端字节序(如 68k, PowerPC, Sparc 所用的)</p></td>
</tr>
<tr class="row-even"><td><p><code class="xref py py-const docutils literal notranslate"><span class="pre">AFMT_S8</span></code></p></td>
<td><p>有符号的 8 位音频</p></td>
</tr>
<tr class="row-odd"><td><p><code class="xref py py-const docutils literal notranslate"><span class="pre">AFMT_U16_LE</span></code></p></td>
<td><p>无符号的 16 位小端字节序音频</p></td>
</tr>
<tr class="row-even"><td><p><code class="xref py py-const docutils literal notranslate"><span class="pre">AFMT_U16_BE</span></code></p></td>
<td><p>无符号的 16 位大端字节序音频</p></td>
</tr>
</tbody>
</table>
<p>请参阅 OSS 文档获取音频格式的完整列表,还要注意大多数设备都只支持这些列表的一个子集。 某些较旧的设备仅支持 <code class="xref py py-const docutils literal notranslate"><span class="pre">AFMT_U8</span></code>;目前最为常用的格式是 <code class="xref py py-const docutils literal notranslate"><span class="pre">AFMT_S16_LE</span></code></p>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_audio_device.setfmt">
<code class="sig-prename descclassname">oss_audio_device.</code><code class="sig-name descname">setfmt</code><span class="sig-paren">(</span><em class="sig-param">format</em><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_audio_device.setfmt" title="永久链接至目标"></a></dt>
<dd><p>尝试将当前音频格式设为 <em>format</em> --- 请参阅 <a class="reference internal" href="#ossaudiodev.oss_audio_device.getfmts" title="ossaudiodev.oss_audio_device.getfmts"><code class="xref py py-meth docutils literal notranslate"><span class="pre">getfmts()</span></code></a> 获取格式列表。 返回为设备设置的音频格式,这可能并非所请求的格式。 也可被用来返回当前音频格式 --- 这可以通过传入特殊的 &quot;音频格式&quot; <code class="xref py py-const docutils literal notranslate"><span class="pre">AFMT_QUERY</span></code> 来实现。</p>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_audio_device.channels">
<code class="sig-prename descclassname">oss_audio_device.</code><code class="sig-name descname">channels</code><span class="sig-paren">(</span><em class="sig-param">nchannels</em><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_audio_device.channels" title="永久链接至目标"></a></dt>
<dd><p>将输出声道数设为 <em>nchannels</em>。 值为 1 表示单声道2 表示立体声。 某些设备可能拥有 2 个以上的声道,并且某些高端设备还可能不支持单声道。 返回为设备设置的声道数。</p>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_audio_device.speed">
<code class="sig-prename descclassname">oss_audio_device.</code><code class="sig-name descname">speed</code><span class="sig-paren">(</span><em class="sig-param">samplerate</em><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_audio_device.speed" title="永久链接至目标"></a></dt>
<dd><p>尝试将音频采样率设为每秒 <em>samplerate</em> 次采样。 返回实际设置的采样率。 大多数设备都不支持任意的采样率。 常见的采样率为:</p>
<table class="docutils align-default">
<colgroup>
<col style="width: 14%" />
<col style="width: 86%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>采样率</p></th>
<th class="head"><p>描述</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p>8000</p></td>
<td><p><code class="file docutils literal notranslate"><span class="pre">/dev/audio</span></code> 的默认采样率</p></td>
</tr>
<tr class="row-odd"><td><p>11025</p></td>
<td><p>语音录音</p></td>
</tr>
<tr class="row-even"><td><p>22050</p></td>
<td></td>
</tr>
<tr class="row-odd"><td><p>44100</p></td>
<td><p>CD品质的音频16位采样和2通道</p></td>
</tr>
<tr class="row-even"><td><p>96000</p></td>
<td><p>DVD品质的音频24位采样</p></td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_audio_device.sync">
<code class="sig-prename descclassname">oss_audio_device.</code><code class="sig-name descname">sync</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_audio_device.sync" title="永久链接至目标"></a></dt>
<dd><p>等待直到音频设备播放完其缓冲区中的所有字节。 (这会在设备被关闭时隐式地发生。) OSS 建议关闭再重新打开设备而不是使用 <a class="reference internal" href="#ossaudiodev.oss_audio_device.sync" title="ossaudiodev.oss_audio_device.sync"><code class="xref py py-meth docutils literal notranslate"><span class="pre">sync()</span></code></a></p>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_audio_device.reset">
<code class="sig-prename descclassname">oss_audio_device.</code><code class="sig-name descname">reset</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_audio_device.reset" title="永久链接至目标"></a></dt>
<dd><p>立即停止播放或录制并使设备返回可接受命令的状态。 OSS 文档建议在调用 <a class="reference internal" href="#ossaudiodev.oss_audio_device.reset" title="ossaudiodev.oss_audio_device.reset"><code class="xref py py-meth docutils literal notranslate"><span class="pre">reset()</span></code></a> 之后关闭并重新打开设备。</p>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_audio_device.post">
<code class="sig-prename descclassname">oss_audio_device.</code><code class="sig-name descname">post</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_audio_device.post" title="永久链接至目标"></a></dt>
<dd><p>告知设备在输出中可能有暂停,使得设备可以更智能地处理暂停。 你可以在播放一个定点音效之后、等待用户输入之前或执行磁盘 I/O 之前使用此方法。</p>
</dd></dl>
<p>下列便捷方法合并了多个 ioctl或是合并了一个 ioctl 与某些简单的运算。</p>
<dl class="method">
<dt id="ossaudiodev.oss_audio_device.setparameters">
<code class="sig-prename descclassname">oss_audio_device.</code><code class="sig-name descname">setparameters</code><span class="sig-paren">(</span><em class="sig-param">format</em>, <em class="sig-param">nchannels</em>, <em class="sig-param">samplerate</em><span class="optional">[</span>, <em class="sig-param">strict=False</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_audio_device.setparameters" title="永久链接至目标"></a></dt>
<dd><p>在一次方法调用中设置关键的音频采样参数 --- 采样格式、声道数和采样率。 <em>format</em>, <em>nchannels</em><em>samplerate</em> 应当与在 <a class="reference internal" href="#ossaudiodev.oss_audio_device.setfmt" title="ossaudiodev.oss_audio_device.setfmt"><code class="xref py py-meth docutils literal notranslate"><span class="pre">setfmt()</span></code></a>, <a class="reference internal" href="#ossaudiodev.oss_audio_device.channels" title="ossaudiodev.oss_audio_device.channels"><code class="xref py py-meth docutils literal notranslate"><span class="pre">channels()</span></code></a><a class="reference internal" href="#ossaudiodev.oss_audio_device.speed" title="ossaudiodev.oss_audio_device.speed"><code class="xref py py-meth docutils literal notranslate"><span class="pre">speed()</span></code></a> 方法中所指定的一致。 如果 <em>strict</em> 为真值,则 <a class="reference internal" href="#ossaudiodev.oss_audio_device.setparameters" title="ossaudiodev.oss_audio_device.setparameters"><code class="xref py py-meth docutils literal notranslate"><span class="pre">setparameters()</span></code></a> 会检查每个参数是否确实被设置为所请求的值,如果不是则会引发 <a class="reference internal" href="#ossaudiodev.OSSAudioError" title="ossaudiodev.OSSAudioError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">OSSAudioError</span></code></a>。 返回一个元组 (<em>format</em>, <em>nchannels</em>, <em>samplerate</em>) 指明由设备驱动实际设置的参数值 (即与 <a class="reference internal" href="#ossaudiodev.oss_audio_device.setfmt" title="ossaudiodev.oss_audio_device.setfmt"><code class="xref py py-meth docutils literal notranslate"><span class="pre">setfmt()</span></code></a>, <a class="reference internal" href="#ossaudiodev.oss_audio_device.channels" title="ossaudiodev.oss_audio_device.channels"><code class="xref py py-meth docutils literal notranslate"><span class="pre">channels()</span></code></a><a class="reference internal" href="#ossaudiodev.oss_audio_device.speed" title="ossaudiodev.oss_audio_device.speed"><code class="xref py py-meth docutils literal notranslate"><span class="pre">speed()</span></code></a> 的返回值相同)。</p>
<p>例如,:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="p">(</span><span class="n">fmt</span><span class="p">,</span> <span class="n">channels</span><span class="p">,</span> <span class="n">rate</span><span class="p">)</span> <span class="o">=</span> <span class="n">dsp</span><span class="o">.</span><span class="n">setparameters</span><span class="p">(</span><span class="n">fmt</span><span class="p">,</span> <span class="n">channels</span><span class="p">,</span> <span class="n">rate</span><span class="p">)</span>
</pre></div>
</div>
<p>等价于</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="n">fmt</span> <span class="o">=</span> <span class="n">dsp</span><span class="o">.</span><span class="n">setfmt</span><span class="p">(</span><span class="n">fmt</span><span class="p">)</span>
<span class="n">channels</span> <span class="o">=</span> <span class="n">dsp</span><span class="o">.</span><span class="n">channels</span><span class="p">(</span><span class="n">channels</span><span class="p">)</span>
<span class="n">rate</span> <span class="o">=</span> <span class="n">dsp</span><span class="o">.</span><span class="n">rate</span><span class="p">(</span><span class="n">rate</span><span class="p">)</span>
</pre></div>
</div>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_audio_device.bufsize">
<code class="sig-prename descclassname">oss_audio_device.</code><code class="sig-name descname">bufsize</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_audio_device.bufsize" title="永久链接至目标"></a></dt>
<dd><p>返回硬件缓冲区的大小,以采样数表示。</p>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_audio_device.obufcount">
<code class="sig-prename descclassname">oss_audio_device.</code><code class="sig-name descname">obufcount</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_audio_device.obufcount" title="永久链接至目标"></a></dt>
<dd><p>返回硬件缓冲区中待播放的采样数。</p>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_audio_device.obuffree">
<code class="sig-prename descclassname">oss_audio_device.</code><code class="sig-name descname">obuffree</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_audio_device.obuffree" title="永久链接至目标"></a></dt>
<dd><p>返回可以被加入硬件缓冲区队列以非阻塞模式播放的采样数。</p>
</dd></dl>
<p>音频设备对象还支持几个只读属性:</p>
<dl class="attribute">
<dt id="ossaudiodev.oss_audio_device.closed">
<code class="sig-prename descclassname">oss_audio_device.</code><code class="sig-name descname">closed</code><a class="headerlink" href="#ossaudiodev.oss_audio_device.closed" title="永久链接至目标"></a></dt>
<dd><p>指明设备是否已被关闭的布尔值。</p>
</dd></dl>
<dl class="attribute">
<dt id="ossaudiodev.oss_audio_device.name">
<code class="sig-prename descclassname">oss_audio_device.</code><code class="sig-name descname">name</code><a class="headerlink" href="#ossaudiodev.oss_audio_device.name" title="永久链接至目标"></a></dt>
<dd><p>包含设备文件名称的字符串。</p>
</dd></dl>
<dl class="attribute">
<dt id="ossaudiodev.oss_audio_device.mode">
<code class="sig-prename descclassname">oss_audio_device.</code><code class="sig-name descname">mode</code><a class="headerlink" href="#ossaudiodev.oss_audio_device.mode" title="永久链接至目标"></a></dt>
<dd><p>文件的 I/O 模式,可以为 <code class="docutils literal notranslate"><span class="pre">&quot;r&quot;</span></code>, <code class="docutils literal notranslate"><span class="pre">&quot;rw&quot;</span></code><code class="docutils literal notranslate"><span class="pre">&quot;w&quot;</span></code></p>
</dd></dl>
</section>
<section id="mixer-device-objects">
<span id="id1"></span><h2>混音器设备对象<a class="headerlink" href="#mixer-device-objects" title="永久链接至标题"></a></h2>
<p>混音器对象提供了两个文件类方法:</p>
<dl class="method">
<dt id="ossaudiodev.oss_mixer_device.close">
<code class="sig-prename descclassname">oss_mixer_device.</code><code class="sig-name descname">close</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_mixer_device.close" title="永久链接至目标"></a></dt>
<dd><p>此方法会关闭打开的混音器设备文件。 在文件被关闭后任何继续使用混音器的尝试都将引发 <a class="reference internal" href="exceptions.html#OSError" title="OSError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">OSError</span></code></a></p>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_mixer_device.fileno">
<code class="sig-prename descclassname">oss_mixer_device.</code><code class="sig-name descname">fileno</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_mixer_device.fileno" title="永久链接至目标"></a></dt>
<dd><p>返回打开的混音器设备文件的文件句柄号。</p>
</dd></dl>
<div class="versionchanged">
<p><span class="versionmodified changed">在 3.2 版更改: </span>混音器设备还支持上下文管理协议。</p>
</div>
<p>其余方法都是混音专属的:</p>
<dl class="method">
<dt id="ossaudiodev.oss_mixer_device.controls">
<code class="sig-prename descclassname">oss_mixer_device.</code><code class="sig-name descname">controls</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_mixer_device.controls" title="永久链接至目标"></a></dt>
<dd><p>此方法返回一个表示可用的混音控件的位掩码 (&quot;控件&quot; 是专用的可混合 &quot;声道&quot;,例如 <code class="xref py py-const docutils literal notranslate"><span class="pre">SOUND_MIXER_PCM</span></code><code class="xref py py-const docutils literal notranslate"><span class="pre">SOUND_MIXER_SYNTH</span></code>)。 该掩码会指定所有可用混音控件的一个子集 --- 它们是在模块层级上定义的 <code class="xref py py-const docutils literal notranslate"><span class="pre">SOUND_MIXER_*</span></code> 常量。 举例来说,要确定当前混音器对象是否支持 PCM 混音器,就使用以下 Python 代码:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="n">mixer</span><span class="o">=</span><span class="n">ossaudiodev</span><span class="o">.</span><span class="n">openmixer</span><span class="p">()</span>
<span class="k">if</span> <span class="n">mixer</span><span class="o">.</span><span class="n">controls</span><span class="p">()</span> <span class="o">&amp;</span> <span class="p">(</span><span class="mi">1</span> <span class="o">&lt;&lt;</span> <span class="n">ossaudiodev</span><span class="o">.</span><span class="n">SOUND_MIXER_PCM</span><span class="p">):</span>
<span class="c1"># PCM is supported</span>
<span class="o">...</span> <span class="n">code</span> <span class="o">...</span>
</pre></div>
</div>
<p>对于大多数目的来说,<code class="xref py py-const docutils literal notranslate"><span class="pre">SOUND_MIXER_VOLUME</span></code> (主音量) 和 <code class="xref py py-const docutils literal notranslate"><span class="pre">SOUND_MIXER_PCM</span></code> 控件应该足够了 --- 但使用混音器的代码应当在选择混音器控件时保持灵活。 例如在 Gravis Ultrasound 上,<code class="xref py py-const docutils literal notranslate"><span class="pre">SOUND_MIXER_VOLUME</span></code> 是不存在的。</p>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_mixer_device.stereocontrols">
<code class="sig-prename descclassname">oss_mixer_device.</code><code class="sig-name descname">stereocontrols</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_mixer_device.stereocontrols" title="永久链接至目标"></a></dt>
<dd><p>返回一个表示立体声混音控件的位掩码。 如果设置了比特位,则对应的控件就是立体声的;如果未设置,则控件为单声道或者不被混音器所支持(请配合 <a class="reference internal" href="#ossaudiodev.oss_mixer_device.controls" title="ossaudiodev.oss_mixer_device.controls"><code class="xref py py-meth docutils literal notranslate"><span class="pre">controls()</span></code></a> 使用以确定是哪种情况)。</p>
<p>请查看 <a class="reference internal" href="#ossaudiodev.oss_mixer_device.controls" title="ossaudiodev.oss_mixer_device.controls"><code class="xref py py-meth docutils literal notranslate"><span class="pre">controls()</span></code></a> 函数的代码示例了解如何从位掩码获取数据。</p>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_mixer_device.reccontrols">
<code class="sig-prename descclassname">oss_mixer_device.</code><code class="sig-name descname">reccontrols</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_mixer_device.reccontrols" title="永久链接至目标"></a></dt>
<dd><p>返回一个指明可被用于录音的混音器控件的位掩码。 请查看 <a class="reference internal" href="#ossaudiodev.oss_mixer_device.controls" title="ossaudiodev.oss_mixer_device.controls"><code class="xref py py-meth docutils literal notranslate"><span class="pre">controls()</span></code></a> 的代码示例了解如何读取位掩码。</p>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_mixer_device.get">
<code class="sig-prename descclassname">oss_mixer_device.</code><code class="sig-name descname">get</code><span class="sig-paren">(</span><em class="sig-param">control</em><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_mixer_device.get" title="永久链接至目标"></a></dt>
<dd><p>返回给定混音控件的音量。 返回的音量是一个 2 元组 <code class="docutils literal notranslate"><span class="pre">(left_volume,right_volume)</span></code>。 音量被表示为从 0 (静音) 到 100 (最大音量) 的数字。 如果控件是单声道的,仍然会返回一个 2 元组,但两个音量必定相同。</p>
<p>如果指定了无效的控件则会引发 <a class="reference internal" href="#ossaudiodev.OSSAudioError" title="ossaudiodev.OSSAudioError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">OSSAudioError</span></code></a>,或者如果指定了不受支持的控件则会引发 <a class="reference internal" href="exceptions.html#OSError" title="OSError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">OSError</span></code></a></p>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_mixer_device.set">
<code class="sig-prename descclassname">oss_mixer_device.</code><code class="sig-name descname">set</code><span class="sig-paren">(</span><em class="sig-param">control</em>, <em class="sig-param">(left</em>, <em class="sig-param">right)</em><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_mixer_device.set" title="永久链接至目标"></a></dt>
<dd><p>将给定混音控件的音量设为 <code class="docutils literal notranslate"><span class="pre">(left,right)</span></code><code class="docutils literal notranslate"><span class="pre">left</span></code><code class="docutils literal notranslate"><span class="pre">right</span></code> 必须为整数并在 0 (静音) 至 100 (最大音量) 之间。 当执行成功的,新的音量将以 2 元组形式返回。 请注意这可能不完全等于所指定的音量,因为某些声卡的混音器有精度限制。</p>
<p>如果指定了无效的混音控件,或者指定的音量超出限制则会引发 <a class="reference internal" href="#ossaudiodev.OSSAudioError" title="ossaudiodev.OSSAudioError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">OSSAudioError</span></code></a></p>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_mixer_device.get_recsrc">
<code class="sig-prename descclassname">oss_mixer_device.</code><code class="sig-name descname">get_recsrc</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_mixer_device.get_recsrc" title="永久链接至目标"></a></dt>
<dd><p>此方法返回一个表示当前被用作录音源的的控件的位掩码。</p>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_mixer_device.set_recsrc">
<code class="sig-prename descclassname">oss_mixer_device.</code><code class="sig-name descname">set_recsrc</code><span class="sig-paren">(</span><em class="sig-param">bitmask</em><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_mixer_device.set_recsrc" title="永久链接至目标"></a></dt>
<dd><p>调用此函数来指定一个录音源。 如果成功则返回一个指明新录音源的位掩码;如果指定了无效的源则会引发 <a class="reference internal" href="exceptions.html#OSError" title="OSError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">OSError</span></code></a>。 如果要将当前录音源设为麦克风输入:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="n">mixer</span><span class="o">.</span><span class="n">setrecsrc</span> <span class="p">(</span><span class="mi">1</span> <span class="o">&lt;&lt;</span> <span class="n">ossaudiodev</span><span class="o">.</span><span class="n">SOUND_MIXER_MIC</span><span class="p">)</span>
</pre></div>
</div>
</dd></dl>
</section>
</section>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<h3><a href="../contents.html">目录</a></h3>
<ul>
<li><a class="reference internal" href="#"><code class="xref py py-mod docutils literal notranslate"><span class="pre">ossaudiodev</span></code> --- 访问兼容OSS的音频设备</a><ul>
<li><a class="reference internal" href="#audio-device-objects">音频设备对象</a></li>
<li><a class="reference internal" href="#mixer-device-objects">混音器设备对象</a></li>
</ul>
</li>
</ul>
<h4>上一个主题</h4>
<p class="topless"><a href="sndhdr.html"
title="上一章"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sndhdr</span></code> --- 推测声音文件的类型</a></p>
<h4>下一个主题</h4>
<p class="topless"><a href="i18n.html"
title="下一章">国际化</a></p>
<div role="note" aria-label="source link">
<h3>本页</h3>
<ul class="this-page-menu">
<li><a href="../bugs.html">报告 Bug</a></li>
<li>
<a href="https://github.com/python/cpython/blob/3.8/Doc/library/ossaudiodev.rst"
rel="nofollow">显示源代码
</a>
</li>
</ul>
</div>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>导航</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="总目录"
>索引</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python 模块索引"
>模块</a> |</li>
<li class="right" >
<a href="i18n.html" title="国际化"
>下一页</a> |</li>
<li class="right" >
<a href="sndhdr.html" title="sndhdr --- 推测声音文件的类型"
>上一页</a> |</li>
<li><img src="../_static/py.svg" alt="python logo" style="vertical-align: middle; margin-top: -1px"/></li>
<li><a href="https://www.python.org/">Python</a> &#187;</li>
<li class="switchers">
<div class="language_switcher_placeholder"></div>
<div class="version_switcher_placeholder"></div>
</li>
<li>
</li>
<li id="cpython-language-and-version">
<a href="../index.html">3.8.20 Documentation</a> &#187;
</li>
<li class="nav-item nav-item-1"><a href="index.html" >Python 标准库</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="mm.html" >多媒体服务</a> &#187;</li>
<li class="right">
<div class="inline-search" role="search">
<form class="inline-search" action="../search.html" method="get">
<input placeholder="快速搜索" aria-label="快速搜索" type="text" name="q" />
<input type="submit" value="转向" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
|
</li>
</ul>
</div>
<div class="footer">
&copy; <a href="../copyright.html">版权所有</a> 2001-2024, Python Software Foundation.
<br />
This page is licensed under the Python Software Foundation License Version 2.
<br />
Examples, recipes, and other code in the documentation are additionally licensed under the Zero Clause BSD License.
<br />
<br />
The Python Software Foundation is a non-profit corporation.
<a href="https://www.python.org/psf/donations/">Please donate.</a>
<br />
<br />
最后更新于 12月 09, 2024.
<a href="https://docs.python.org/3/bugs.html">Found a bug</a>?
<br />
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 2.4.4.
</div>
</body>
</html>