音视频开发_音频基础知识

如何采集声音——模数转换原理

声音模数转换是将声音信号从模拟形式转换为数字形式的过程。它是数字声音处理的基础,常用于语音识别、音频编码等应用中。

音视频通信流程

  1. 音视频采集:首先是从麦克风、摄像头等设备中采集音频和视频数据,将现实世界中的声音和图像转换成数字信号。

  2. 编码:采集到的音频和视频数据需要经过压缩编码处理,以减小数据量和提高传输效率。音频编码常用的有AAC、MP3等,视频编码则有H.264、H.265(HEVC)等编码标准。

  3. 传输:经过编码后的音视频数据通过网络传输到接收端。这一环节的关键是确保数据传输的稳定性和实时性,以保证音视频通信的顺畅性。

  4. 解码:接收端接收到传输过来的编码数据后,需要进行解码操作,将数字信号还原成可播放的音频和视频数据。

  5. 渲染:最后一步是将解码得到的音频和视频数据渲染到屏幕上或者扬声器中,让用户可以听到声音并观看画面。

音频处理流程

  1. 音频采集:首先是从麦克风等音频设备中采集声音信号,将模拟声音信号转换成数字信号,即PCM(脉冲编码调制)数据。

  2. 预处理:在音频采集后,可以进行预处理,包括降噪、增益控制、滤波等操作,以净化声音信号,提高音频质量。

  3. 特征提取:从音频信号中提取出各种特征,如频谱特征、时域特征等,用于后续音频处理和分析。

  4. 音频编解码:对音频信号进行编码,将其压缩成较小的数据量,以降低存储和传输成本。常用的音频编码格式包括AAC、MP3等。

  5. 音频处理算法:应用各种音频处理算法,如均衡器、混响器、压缩器等,对音频信号进行增强、修饰或调节,以满足不同的音频处理需求。

  6. 音频合成:将经过处理的音频信号进行合成,生成最终的音频输出,可以是音乐、语音等。

  7. 音频重放:最后将处理后的音频信号通过扬声器或耳机进行播放,使用户可以听到音频输出。

视频处理流程

  1. 视频采集: 视频采集是指使用摄像头或其他视频采集设备来获取现实世界中的视频图像。视频采集设备将光学信号转换为电子信号,并经过模数转换器将其转换为数字形式,以便于后续处理。

  2. 视频编码: 在视频编码阶段,视频数据会被压缩以减小文件大小并提高传输效率。常见的视频编码标准包括H.264、H.265(HEVC)、VP9等,它们可以对视频进行有损或无损压缩。

  3. 视频传输: 编码后的视频数据可以通过网络传输到远程设备或存储设备。视频传输涉及网络协议、数据包发送和接收等技术,确保视频数据的安全和及时性传输。

  4. 视频解码: 在视频接收端,接收到的视频数据需要进行解码以还原成可供显示的视频图像。解码器将压缩后的视频数据解码为原始的视频帧,以便后续处理和显示。

  5. 视频处理: 视频处理包括对视频进行编辑、特效添加、滤镜处理等操作,以满足不同应用场景的需求,如视频剪辑、实时滤镜、实时特效等。

  6. 视频渲染: 最后一步是将经过处理的视频数据渲染到屏幕上,让用户可以观看到视频内容。这包括视频帧的合成、色彩空间转换、分辨率适配等技术。

为什么高品质音频采样车>=44.1Khz

  1. 声音质量:较高的采样率可以更准确地捕捉音频信号的细节和动态范围,使得声音质量更加清晰、自然。这对于音频内容的录制、编辑和播放都非常重要。

  2. 奈奎斯特定理:奈奎斯特定理规定,为了准确还原一个信号,采样率至少要是信号最高频率的两倍。人类能够听到的最高频率大约为20kHz,因此44.1kHz的采样率足以覆盖整个可听频率范围。

  3. 专业标准:在音频行业中,44.1kHz已被广泛接受为CD音质的标准采样率。在音视频开发中,遵循这一标准可以确保音频内容的兼容性和质量。

  4. 播放设备支持:大多数现代音频设备和平台都支持44.1kHz及以上的音频采样率,因此使用高品质的采样率可以确保音频内容在各种设备上的良好表现。

什么是PCM

PCM是脉冲编码调制(Pulse Code Modulation)的缩写,是一种常用的数字音频编码格式。在音视频开发中,PCM通常指的是未经压缩的原始音频数据流,其特点如下:

  1. 线性采样:PCM是一种线性采样编码方式,即将模拟声音信号通过固定时间间隔进行采样,并将每个采样值转换为对应的数字编码。

  2. 无损编码:PCM是一种无损编码方式,即不对音频数据进行任何压缩或编码,能够完整保留原始音频信号的信息。

  3. 单声道/立体声:PCM可以是单声道(Mono)或立体声(Stereo),单声道的PCM每个采样点只包含一个声道的数据,而立体声的PCM则包含左右两个声道的数据。

  4. 采样率和位深度:PCM音频数据的质量取决于采样率和位深度。采样率表示每秒采集的样本数,位深度表示每个样本的编码精度。例如,CD音质的PCM采样率为44.1kHz,位深度为16位。

在这里插入图片描述

PCM码率计算

计算 PCM 码率的方法如下:

  1. 确定采样位深度(bit depth):通常情况下,音频采样位深度为 16 位(2 字节)或 24 位(3 字节)。
  2. 确定采样频率(sample rate):常见的采样频率有 44100 Hz(CD 质量)、48000 Hz(DVD 质量)等。
  3. 计算每秒的数据量:将采样位深度和采样频率相乘,并考虑声道数(单声道为 1,立体声为 2),即可得到每秒的数据量。
  4. 计算码率:最后,将每秒的数据量乘以8(将单位从字节转换为比特),即可得到 PCM 码率。

PCM 码率计算的公式为:

PCM 码率 = 采样频率 × 位深度 × 声道数

PCM数据格式特点
PCM 8位- 采样精度为8位,即256个离散级别
- 音质较差,动态范围较窄
- 文件较小,适用于低要求的应用场景
PCM 16位- 采样精度为16位,即65,536个离散级别
- 音质较好,动态范围更大
- 常用于音乐制作、录音和高保真音频存储
PCM 24位- 采样精度为24位,即16,777,216个离散级别
- 更高的分辨率,音质优秀
- 适用于专业音频领域和发烧友级别的音频存储
PCM 32位- 采样精度为32位,即4,294,967,296个离散级别
- 高精度的音频表示,动态范围极大
- 常用于高级音频处理、专业录音和音乐制作

一个采样点用多少位表示

采样点(Sample Point)是指在一段连续的音频或视频信号中,以固定时间间隔进行采样得到的离散数据点。

对于音频来说,采样点代表了声音信号在特定时间点上的振幅值。通过对连续的声音信号进行定期采样,可以将其转换为离散的采样点序列,从而表示和存储声音。

对于视频来说,采样点代表了图像信号在特定时间点上的亮度和颜色信息。通过对连续的图像信号进行定期采样,可以将其转换为一系列离散的图像帧,用于表示和播放视频。

采样点的密度和采样频率决定了对原始信号的采样精细程度。采样频率表示每秒钟进行多少次采样,通常以赫兹(Hz)为单位。较高的采样频率意味着更频繁的采样,能够更准确地捕捉到信号的变化,但也会增加数据量和处理复杂度。

在音频中,采样点通常由位深度(bit depth)决定,表示每个采样点的量化级别。位深度越高,可以表示的音量级别就越多,从而提供更好的音频质量和动态范围。

一个采样点通常用多少位表示,取决于所使用的编码格式和采样精度要求。

对于音频来说,采样点的位表示通常是指采样位深度(bit depth),也称为量化位数或采样精度。常见的位深度有 8 位、16 位、24 位等。

位深度表示每个采样点的量化级别或可区分的音量级别。较高的位深度可以提供更高的动态范围和更好的音频质量,但同时也会增加文件大小和数据传输带宽。

为什么位深度很重要呢?这涉及到声音的动态范围。位深度越高,意味着能够表示更多的音量级别,从而提供更大的动态范围。例如,一个 16 位的采样点可以表示 2^16 = 65536 个不同的音量级别,而一个 8 位的采样点只能表示 2^8 = 256 个音量级别。因此,较高的位深度可以更准确地捕捉和再现音频信号的细节和动态变化。

较高的位深度也会带来更大的数据量,需要在音频质量和数据大小之间找到一个平衡点。

在视频中,一个采样点通常指的是图像中的一个像素点。每个像素点的表示和位深度与音频略有不同,通常使用 RGB 格式或 YUV 格式来表示像素颜色值。位深度决定了每个颜色通道的精度和可以表示的颜色级别数量。

采样值用整数还是浮点数表示

在音视频开发中,采样值可以使用整数或浮点数来表示,具体选择取决于所使用的编码格式、数据精度要求以及实际应用需求。

整数表示:

  1. 整数通常用于表示音频和视频的采样值,尤其是在数字信号处理和编解码过程中。
  2. 整数表示能够提供较高的计算效率,因为整数计算相对于浮点数计算来说更快速。
  3. 对于音频来说,整数表示的采样值通常以固定的位深度(比如 8 位、16 位、24 位等)进行存储,这种表示方式能够满足绝大多数的音频质量要求。
  4. 在视频中,整数表示通常用于表示像素的亮度值或颜色分量值,例如在 YUV 或 RGB 格式中,通常使用 8 位或 10 位整数表示每个颜色通道的值。

浮点数表示:

  1. 浮点数通常用于一些对音频和视频信号精度要求较高的应用,比如专业音频处理、高保真音频编解码以及某些特定的视频处理领域。
  2. 浮点数表示能够提供更高的精度,因为它可以表示更广范围内的数值和动态范围。
  3. 在音频领域,浮点数表示通常被用于高保真音频处理和编解码工作中,以提供更好的音频质量和动态范围。
  4. 在视频领域,某些专业视频处理应用也会采用浮点数表示来进行像素值的计算和处理,以获得更高的图像精度和动态范围。

一般情况下,对于一般的音视频应用,使用整数表示能够满足大部分需求,并且具有较高的计算效率。

音量大小和采样值大关系

音量大小通常是通过采样值来表示的。采样值是对声音信号在特定时间点上的幅度进行数字化测量的结果。音频设备会以一定的频率对声音信号进行采样,每次采样时记录声音信号的幅度,并将其转换为数字形式。

音频的采样值通常以位深度(bit depth)来表示,比如常见的16位、24位、32位等。位深度越高,可以表示的音量级别就越多,音频的动态范围也就更大。

一般来说,音频的采样值与音量之间的关系可以用以下公式表示:
音量 = 20 * log10(采样值 / 最大采样值)

其中,最大采样值是该位深度下能够表示的最大采样值。例如,在16位深度下,最大采样值为32767(对应于1的16次方减1)。通过这个公式,我们可以计算出特定采样值对应的音量大小。

多少个采样点作为一帧数据

在音频处理领域,采样点是指在一段时间内对信号进行采样的数据点。常见的音频采样率有 44.1kHz、48kHz 等,它们表示每秒钟采样的次数。而帧大小则表示一帧数据中包含的采样点个数。

对于音频编码标准如 MPEG-1 Audio Layer 3 (MP3)、Advanced Audio Coding (AAC) 等,一般会将音频数据分割成固定大小的帧进行压缩。常见的帧大小为 1152 个采样点或者 1024 个采样点,这些值是经过优化得出的,并可以提供较好的音频质量和压缩效率。

在视频处理领域,一帧图像由多个像素点组成,每个像素点包含了颜色和亮度信息。视频的帧率表示每秒钟显示的帧数,常见的帧率有 24fps、30fps、60fps 等。帧率越高,视频的流畅度越高,但同时也需要更大的数据传输带宽。

左右通道的采样数据如何排列

左右通道的采样数据一般以交替或者交错的方式排列,具体取决于使用的音频数据格式。以下是左右通道采样数据排列的两种常见方式:

  1. 交替排列(Interleaved)

    • 在交替排列中,左右通道的采样数据依次交替存储在音频数据中。
    • 如果采样数据是16位,左右通道的数据会交替存储,例如:L0, R0, L1, R1, L2, R2, …,其中L表示左通道,R表示右通道,数字表示采样数据。
    • 交替排列的优点是数据组织紧凑,便于处理和传输,但区分左右通道需要额外的处理。
  2. 交错排列(Non-interleaved)

    • 在交错排列中,左右通道的采样数据分别存储在各自的缓冲区中。
    • 通常会使用两个单独的缓冲区来存储左右通道的数据,左通道数据存储在一个缓冲区中,右通道数据存储在另一个缓冲区中。
    • 交错排列的优点是左右通道的数据更容易区分和独立处理,但需要更多的内存空间。

什么音视频采集完之后,不能直接传输,要进行编码?

  1. 压缩传输:音视频编码可以将原始信号进行压缩,减小了信号数据量,提高了传输效率。原始音视频信号通常会占用较大的带宽和存储空间,而编码后的数据可以通过压缩算法减少数据量,使得传输更加高效。

  2. 网络带宽限制:网络传输的带宽是有限的,如果直接传输原始音视频数据,可能会导致传输过程中的丢包、延迟增加等问题,影响音视频的实时性和流畅性。通过编码后的数据可以有效地利用带宽资源,降低传输时延和丢包率。

  3. 兼容性和扩展性:不同的设备和平台对音视频格式的支持存在差异。通过进行编码,可以将原始音视频信号转换为通用的音视频格式(如MP4、H.264、AAC等),以确保在各种设备和平台上的兼容性和可播放性。

  4. 保护知识产权:对于某些有版权保护的音视频内容,编码可以应用数字版权管理(DRM)技术,对音视频内容进行加密和保护,防止未经授权的复制和传播。

  5. 数据安全性:在音视频传输过程中,存在着数据被窃听、篡改等安全风险。通过进行编码和加密,可以增强音视频数据的安全性,防止数据被恶意截取或修改。

音频编码原理

音频编码是将模拟音频信号转换为数字音频信号的过程:

  1. 采样:模拟音频信号是连续的波形,需要通过采样将其离散化为一系列数字样本。采样率决定了每秒采样的次数,常见的采样率有44.1kHz、48kHz等。

  2. 量化:采样后的模拟音频信号幅度值是连续的,需要通过量化将其转换为离散的数字值。量化过程中会将幅度值映射到固定的离散级别,以表示音频信号的强度。

  3. 编码:编码是将量化后的数字音频信号用数字编码方式表示和存储。常用的音频编码方式有脉冲编码调制(PCM)、脉冲编码调制(PCM)、自适应差分脉冲编码调制(ADPCM)等。

  4. 压缩:为了减小音频文件大小和提高传输效率,通常会对编码后的音频数据进行压缩处理。压缩算法有损压缩和无损压缩两种,常见的音频压缩标准包括MP3、AAC等。

  5. 解码(Decoding):接收端接收到压缩的音频数据后,需要进行解码操作,将压缩的数字音频信号解码成原始的数字音频信号。解码过程是编码过程的逆过程。

音频编码实现了对模拟音频信号的数字化处理,使得音频可以以数字形式进行存储、传输和处理。

音频编码标准

音频编码标准描述
PCM (Pulse Code Modulation)基本的脉冲编码调制方式,无损编码,采样率高,文件较大
MP3 (MPEG-1 Audio Layer 3)有损压缩音频编码,流行的音频格式,文件小,保留较高音质
AAC (Advanced Audio Coding)高级音频编码标准,有损压缩,音质优秀,常用于在线音频流媒体
OGG Vorbis开源音频编码,有损压缩,提供高音质,文件相对小
FLAC (Free Lossless Audio Codec)无损音频编码,保留原始音频质量,文件较大,用于音频编辑和存档
Opus开放式、免专利的音频编码标准,支持广泛的比特率,适用于语音通话和音频流传输
WMA (Windows Media Audio)微软开发的音频编码标准,有损压缩,适用于 Windows 平台
AC3 (Dolby Digital)杜比数字音频编码标准,多用于 DVD、蓝光光盘等视频音频压缩
DTS (Digital Theater Systems)数字影院系统音频编码标准,提供高质量环绕声音效果
ALAC (Apple Lossless Audio Codec)苹果无损音频编码标准,保留音频原始质量,适用于苹果设备

音视频解码

音频解码是将经过编码压缩的数字音频数据解码为原始的音频信号的过程。音频解码的原理与流程包括以下几个主要步骤:

  1. 接收编码数据:首先接收到经过编码压缩的音频数据,这些数据可能采用不同的音频编码标准和压缩算法,如MP3、AAC等。

  2. 解压缩:对接收到的压缩音频数据进行解压缩操作,将压缩的音频数据还原为原始的未压缩音频数据。

  3. 解码:对解压缩后的音频数据进行解码处理,将数字音频数据转换为模拟音频信号。解码过程是编码过程的逆过程,通过解码还原原始音频数据。

  4. 数字模拟转换:将解码后的数字音频信号转换为模拟音频信号,以便于输出到扬声器或耳机进行声音播放。

  5. 声音输出:将模拟音频信号输出到扬声器、耳机或其他音频设备,使用户可以听到解码后的音频信号。

  6. 声音处理:可以对解码后的音频信号进行后续处理,如均衡、混响、音量调节等,以改善音频质量或满足特定需求。

参考:

音视频流媒体开发课程(从基础到高级,从理论到实践)学习计划、一对一答疑
音视频开发(FFmpeg/WebRTC/RTMP)

整理了一些音视频开发学习资料、面试题 如有需要自行添加群:739729163 领取
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/733262.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Windows】VMware虚拟机应用(一):下载安装 VMware Workstation

目录 一、下载 二、注意事项 三、安装 四、密钥激活 4.1 密钥 4.2 激活 一、下载 进入官网下载页 VMware Customer Connect | The All-In-One VMware Product Support Portal 先登录,下载时要求登录。 点【Downloads】 进入产品下载页面,切换到…

手写简易操作系统(三)--加载Loader

前情提要 上一节我们讲了如何启动计算机,这一节我们讲如何加载内核,内核是存在于硬盘上的一段程序,要加载这段程序,那么必然需要从硬盘上读取数据,这里我们就需要使用 ATA PIO 模式 根据ATA规范,所有符合A…

docker部署springboot jar包项目

docker部署springboot jar包项目 前提,服务器环境是docker环境,如果服务器没有安装docker,可以先安装docker环境。 各个环境安装docker: Ubuntu上安装Docker: ubuntu离线安装docker: CentOS7离线安装Docker&#xff1…

可视化场景(2):电商大屏-引爆业绩,直观呈现

hello,我是贝格前端工场,本期分享可视化大屏在电商领域的应用,如需要定制,可以与我们联络,开始了。 电商领域的可视化大屏可以提供实时的销售数据、用户行为分析、库存管理等信息,帮助企业实时监控经营状况…

不知道吧,腾讯云轻量应用服务器使用有一些限制!

腾讯云轻量应用服务器相对于云服务器CVM是有一些限制的,比如轻量服务器不支持更换内网IP地址,不支持自定义私有网络VPC,内网连通性方面也有限制,轻量不支持CPU内存、带宽或系统盘单独升级,只能整个套餐整体升级&#x…

Anthropic 公司最新宣布,他们的 AI 聊天机器人模型击败了 OpenAI 的 GPT-4

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

Unity Text文本实现滚动跑马灯效果

在一些公告上我们经常会看到文字滚动跑马灯的效果。 那么在Unity上如何实现? 1、首先创建一个Text(或者TextMeshPro)组件,然后输入需要显示的文本内容,如图: 2、编写控制脚本TextRoll.cs: using System.Collections…

钉钉h5应用 globalthis is not defined vite client

钉钉h5应用 globalthis is not defined vite client problem 背景 钉钉h5应用使用 vue3 vite 构建的前端工程 问题 h5页面在pc端浏览器和pc端钉钉打开正常h5页面在移动端钉钉打开异常 页面空白 通过调试工具找到报错信息 globalthis is not defined vite client reason …

ULTRAL SCALE FPGA TRANSCEIVER速率

CPLL支持2-6.25速率 QPLL支持速率 实际使用CPLL最高可以超过这个,QPLL最低也可以低于这个,xilinx留的阈量还是比较大。

这是谁的女儿?其母亲早已红过头了,现在小小年纪的她也爆红网络,没想到吧?

这是谁的女儿?其母亲早已红过头了,现在小小年纪的她也爆红网络,没想到吧? 原来,作母亲的她在红极一时后似乎沉寂了下来,没想到她11岁的女儿近年来也在社交媒体上走红,她为何也成了小网红呢&…

数字化转型导师坚鹏:大模型的应用实践(金融)

大模型的应用实践 ——开启人类AI新纪元 打造数字化转型新利器 课程背景: 很多企业和员工存在以下问题: 不清楚大模型对我们有什么影响? 不知道大模型的发展现状及作用? 不知道大模型的针对性应用案例? 课程…

C# 高级特性(十一):多线程之async,await

之前使用Thread和Task启动多线程时都会遇到一个麻烦,就是如何反馈结果。在代码里就是如何设计回调函数。如果带界面还得考虑UI线程的问题。 而使用async,await可以达到两个效果。 1 不用设计回调函数,直接按单线程的格式写。 2 不用考虑UI…

【决策树】预测用户用电量

决策树预测用户用电量 文章目录 决策树预测用户用电量  👉引言💎一、 数据预处理数据预处理初步数据分析 二、 机器学习算法决策树回归预测用电量决策树模型介绍:回归预测 三、 可视化结果四、 数据分析与结论代码如下 👉引言&a…

代码随想录算法训练营第四天|24.两两交换链表中的节点、19.删除链表的倒数第N的节点、07.链表相交、142.环形链表II

代码随想录算法训练营第四天|24.两两交换链表中的节点、19.删除链表的倒数第N的节点、07.链表相交、142.环形链表II 24.两两交换链表中的节点 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成…

Vue+OpenLayers7入门到实战:OpenLayers7点聚合(聚散点)功能,地图缩小显示聚集数量,点击聚集点散开和地图放大后显示要素图片

返回《Vue+OpenLayers7》专栏目录:Vue+OpenLayers7入门到实战 前言 本章介绍如何使用OpenLayers7在地图上实现地图点聚合(聚散点)功能,实现地图缩小显示聚集数量,点击聚集点和地图放大后显示要素对应icon图片的功能。 二、依赖和使用 "ol": "7.5.2"…

猫头虎分享已解决Bug || 云服务中断:CloudOutage, CloudProviderError

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

markdown页面宽度放宽

变成以上样式 ------------------------------------------------ 然后最后一行加上 #write{ max-width: 90%; } /* 调整源码正文宽度 */ #typora-source .CodeMirror-lines { max-width: 90%; } /* 调整输出 PDF 文件宽度 */ media print { #write{ max-w…

图|dfs bfs|最小生成树|最短路|一篇搞定图的所有知识点

文章目录 图前言项目代码仓库图的基本概念图的表示方法邻接矩阵邻接表图的一些相关概念 图的遍历bfsdfs如果给的图不是连通图? 最小生成树Kruskal算法Prim算法 最短路径单源最短路径--Dijkstra算法单源最短路径--Bellman-Ford算法多源最短路径--Floyd-Warshall算法 …

WiFi模块助力少儿编程:创新学习与实践体验

随着科技的飞速发展,少儿编程已经成为培养孩子们创造力和问题解决能力的重要途径之一。在这个过程中,WiFi模块的应用为少儿编程领域注入了新的活力,使得学习编程不再是单一的代码教学,而是一个充满创新与实践的综合性体验。 物联网…

Python快速入门系列-2(Python基础语法)

第三章:Python基础语法 3.1 变量与数据类型3.1.1 变量的定义与赋值3.1.2 数据类型3.1.3 类型转换 3.2 注释与缩进3.2.1 注释3.2.2 缩进 3.3 条件语句与循环结构3.3.1 条件语句3.3.2 循环结构 3.4 函数与模块3.4.1 函数3.4.2 参数和返回值3.4.3 模块3.4.4 标准库中的…