【音视频】音视频录制、播放原理

一、音视频录制原理

通常,音视频录制的步骤如下图所示:

  • 我们分别从音频和视频开始采样,通过麦克风和摄像头来接受我们的音频信息和图像信息,这通常是同时进行的,不过,通常视频的采集会比音频的采集慢,因此我们需要对采样后的数据进行同步,也就是对相应的音频帧和视频帧进行同步。通常我们会引入一个时钟作为同步标志,可以是视频作为主时钟,也可以是音频,或者是使用系统时钟作为同步等等,不过在实际中,使用音频作为主时钟比较常见,因为人对音频的感受更为明显。

  • 采集到音频帧和视频帧之后,通常会根据需要对它们做一层处理,比如对音频进行降噪 、增益调整 等操作,而对于视频帧,可以进行例如饱和度调整、锐化等操作。

  • 处理好的音频帧和视频帧会放入分别放入一个队列中,这个队列用于存储临时的帧,以便后续的编码操作。同时队列也有着缓冲区的作用,可以避免采样和编码速度不匹配等情况。

  • 队列中的帧会被取出,用于相应的音频、视频编码,这一步是为了使用特定的格式,如音频的MP3 、AAC ,视频的H264 、H265。经过压缩后的音视频体积将大大减小,方便后续的传输和存储。

  • 编码后的音视频将放入音频包和视频包队列,等待进一步处理。

  • 接着,从包队列中取出音视频数据,通过复用器 对音视频进行封装,也就是使用各种容器包装音视频,如MP4 、TS 、AVI等

  • 最后,这些特定格式的容器就可以作为文件保存了,也就是我们平常创建的视频文件。

复用器是一个音视频封装的工具,可以将经过编码后的音视频数据包,使用特定的容器格式,如MP4、AVI等,合成一个完整的音视频文件

二、音视频播放原理

音视频播放的步骤通常与录制相反,二者可以看做是各自的逆操作,通常,步骤如下图所示:

  • 首先我们从系统中读取媒体文件,如(MP4 、AVI等),文件中通常包含着编码好的音频流和视频流,有时还有字幕流等,那么我们就需要将文件中的这些对应流进行分离,才能进行下一步处理。
  • 我们利用解复用器就可以将媒体文件中的音频和视频数据还原出来,这一步称为音视频解封装。
  • 解封装出来的音视频数据将被存放在音频包、视频包队列中,等待后续的解码操作。
  • 从对应的队列中取出数据包,就需要对相应的数据包进行解码,如音频的AAC 、MP3 、视频的H264、H264等,通常,解码的难度通常比编码的难度小。解码后的数据包变成了录制时的帧数据,存储在帧队列中,等待后续的渲染操作。
  • 从视频帧和音频队列取出帧之后,如果无需进行特殊处理,我们可以对其进行同步,而同步策略通常以音频作为主时钟。有时,我们还可以将同步策略放在处理帧之后。
  • 最终,处理好的音频和视频帧结果处理和调整,将同步渲染到外部设备中,如扬声器和显示器等,此时的视频才真正被播放出来,经过我们的眼睛和耳朵接收到。

解复用器与录制时的复用器相反,它主要是把封装在一起的音频和视频数据包分离出来,变成独立的音频数据和视频数据

相关推荐
allnlei7 小时前
Opus In-Band FEC 详解:原理、实现与开源方案
ffmpeg·音视频·gstreamer
爱吃提升8 小时前
文生视频模型发展趋势(2026)
人工智能·音视频
可乐鸡翅yeah_9 小时前
新手梳理:M3U8 线上问题,哪些是前端锅,哪些是后端锅
前端·ios·音视频·实时音视频·m3u8·音视频在线播放
apple_6926588510 小时前
最新ComfyUI 0.37.1使用教程:画图、3D、音频都有改动 ComfyUI升级到0.37.1啦,新增或改进五大功能
音视频
VidDown15 小时前
从视频画面里提取文字:OCR、文字检测与结构化输出
python·网络协议·ocr·音视频·视频编解码·视频
音视频牛哥17 小时前
一帧视频的底层工程:像素格式、内存带宽、GPU 与 AI
音视频·像素格式·yuv rgb·nv12 nv21·rgb565·rtsp yuv·rtmp rgb
VidDown17 小时前
文件没问题但网页播不了:播放器接入实战与那些“环境问题
python·网络协议·音视频·视频编解码·视频
the3clipse18 小时前
视频编码技术如何赋能游戏性能优化:从硬件隔离到AI驱动的带宽革命
游戏·性能优化·音视频·视频编码·硬件加速·ai编码·自适应编码
I Am a robert girl18 小时前
打破音频生态壁垒:用 WinAirCast 把 Windows 声音塞进 HomePod
windows·音视频·跨平台开发·音频串流·airplay 2·homepod
揽秀亭长18 小时前
视频转脚本有哪些技术路线?三种常见方案对比分析
人工智能·音视频