多媒体知识

2023-10-15 18:29:26 浏览数 (1)

标准多媒体系统介绍

多媒体技术涵盖的面广,涉及的平台很多,商业化产品也很多。 但是其最核心的技术大致是一样的, 基本框图如下:

数据输入系统:这部分的功能比较单一,主要是采集设备(U 盘,Sdcard,flash,网络等设备)的数据,通过系统文件处理部分,将数据送到后面 Demux 系统。 如果是带操作系统的平台,如 linux, WinCE, android 等等,一般就是常见的 fopen, fread 等文件操作函数;如果是Non-OS 系统或者网络播放,需要自己实现对应的数据操作功能。

Demux 系统:这部分主要是将输入的数据 parse 成 audio /video/subtitle ES(Elementary Stream)流,再分别将video ES 和 audio ES 送对应的 video decoder 和 audio decoder 去解码.前端数据输入系统送进来的流一般是带container 的,如 TS,FLV,MP4 等。这些流不仅仅只有压缩后的数据,还有些 pts,subtitle 等其他信息,一般的解码器只接受纯粹的压缩数据,所以需要进行 Demux(解复用)。Demux 系统是多媒体系统的核心技术之一,也是很多播放器厂商的核心源码。因为要支持多种文件格式,如TS,MPEG,FLV,ASF,WMV 等。这部分code 比较庞大,需要对照每种格式的 spec 来阅读。

基本码流(Elementary Stream),简称ES。是由编码器输出的原始基础码流,它只含有解码器所必需的、并与原始图象或原始音频相接近的信息。MPEG对已压缩信号的句法作了严格的定义,以保证解码器能够正常解码。MPEG对编码器未作定义,但它必须能够提供句法正确的码流。

Elementary Stream(基本码流) 由压缩器输出的用于传送 单路视音频信号的原始码流。

Decode 系统:主要分为 video decoder 和 audio decoder.video decoder 对前端 Demux 模块送出的 video ES 流进行解码,输出的是 video 输出系统支持的 YUV 或RGB 数据;audio decoder 对前端 demux 端送出的 audio ES 数流进行解码,输出的是 audio 输出系统支持的 PCM 数据。尽管上层 AP 多种多样,码流格式也非常多,但是最后送到这一层的都是标准压缩格式(如H264,H263,MPEG4,WMV1 等)的 ES 流和 DTS,DTS 主要是决定解码的时机。由于解码过程非常繁琐,涉及到复杂的数学变换,所以这部分一般都是由底层专用硬件 DSP 完成。由于 PC CPU 性能很强大,PC 的播放大多数是软解。

AV 同步系统: 解码后 audio video 数据经过同步后输出到屏幕或喇叭,参考标准是两者的 pts。因为人耳对声音敏感性远远高于图像,audio 数据轻微的丢失和损坏,耳朵都能识别出来;相反,图像帧数的丢失,人眼不一定能看出来,例如,20FPS 和 25FPS 的视频,非专业人员很难区分开。最基本的原则是依照 audio 的pts 来决定对 video 数据的处理,如果video pts 在声音后面,video 帧可能会静止或缓播等 audio 追上来;相反,如果 video pts 如果在 audio 前面,直接丢 video 帧或快播,追赶 audio,达到音视频同步。如果没有 audio数据,视频会根据帧率解码,直接送到 display 系统。

这部分也是多媒体系统的核心技术之一,也是最容易出错的地方。不同播放器,细节机制方面可能稍有差别,但是基本策略是一样的。

输出系统:主要分为 video 输出系统和 audio 输出系统.对于 video 输出系统是将 YUV,RGB 或其他类型原始数据送到芯片显示系统,有的芯片底层有硬件加速功能。这部分功能比较简单,就是将数据送到屏幕,实现原理和具体芯片方案有很大的关系。对于 audio 输出系统是将PCM 数据送到 audio HAL 层处理后最后从给speaker 输出.

2 常见多媒体概念及术语描述

  • ES 流(Elementary Stream): 也叫基本码流,包含视频、音频或数据的连续码流.
  • PES 流(Packet Elementary Stream): 也叫打包的基本码流, 是将基本的码流 ES 流根据需要分成长度不等的数据包, 并加上包头就形成了打包的基本码流 PES 流。
  • TS 流(Transport Stream): 也叫传输流, 是由固定长度为 188 字节的包组成, 含有独立时基的一个或多个 pr ogram, 一个 program 又可以包含多个视频、音频、和文字信息的 ES 流;每个 ES 流会有不同的 PID 标示. 而为了可以分析这些ES 流, TS 有一些固定的PID 用来间隔发送 program 和ES 流信息的表格: PAT 和PMT 表.(在 M PEG-2 系统中,由视频, 音频的ES 流和辅助数据复接生成的用于实际传输的标准信息流称为MPEG-2 传送流) 。
  • 封装 (container): 就是捆绑打包, 将视频文件和音频文件、字幕文件打包在一起,并按照一定规则建立排序和索引,便于播放器或播放软件来索引播放。包括 AVI、TS、MKV、MP4 等。
  • DTS(解码时间戳)和 PTS(显示时间戳):分别是解码器进行解码和显示帧时相对于 SCR(系统参考)的时间戳。SCR 可以理解为解码器应该开始从磁盘读取数据时的时间。
  • 码率(BitRate):指视频或音频文件在单位时间内使用的数据流量,该参数的单位通常是 Kbps,也就是千比特每秒。通常 2000kbps~3000kbps 就已经足以将画质效果表现到极致了。码率参数与视频文件最终体积大小有直接性的关系。
  • 固定码率(Constant BitRate):指的是编码器的输出码率(或者解码器的输入码率)应该是固定制(常数)。 CBR 不适合高清晰度视频的编码,因为 CBR 将导致没有足够的码率应对复杂多变内容部分进行编码(从而导致画质下降),同时在简单的内容部分会浪费一些码率。
  • 可变码率(Variable BitRate):编码器的输出码率(或者解码器的输入码率)可以根据编码器的输入源信号的负责度自适应的调整,目的是达到保持输出质量保持不变而不是保持输出码率保持不变。VBR 编码会消耗较多的计算时间,但可以更好的利用有限的存储空间:用比较多的码率对复杂度高的段进行编码,用比较少的码率对复杂度低的段进行编码。总之需要清晰度高且体积小的视频,选择VBR 是明智的选择。
  • 平均码率(Average BitRate):指音频或视频的平均码率,可以简单的认为等于文件大小除以播放时间。在音频编码方面与 CBR 基本相同,会按照设定的目标码率进行编码。但当编码器认为“适当”的时候,会使用高于目标码率的数值来进行编码以保证更好的质量。
  • 帧率(Frame Rate):是用于测量画面显示帧数的量度。所谓的测量单位为每秒显示帧数(Frames per Second, 缩写:FPS)。如电影的帧率一般是 25fps 和 29.97fps,而第一人称射击游戏等要求画面极为顺畅的特殊场合, 则需要 30fps 以上的效果,高于 60fps 就没有必要了。
  • 分辨率:指视频宽高的像素数值,单位为 Px。通常视频分辨率的数值宽高比要等于画面比例,不然视频文件就会产生黑边。标准 1080P 的分辨率为 1920×1080,帧率为 60fps,也就是真高清。而最常见的网络传播的 1 080P 高清片帧率通常为 23.976 fps
  • 采样率:每秒从连续信号中提取并组成离散信号的采样个数,它用赫兹(Hz)来表示。一般音乐 CD 的采样率是 44100Hz,所以视频编码中的音频采样率保持在这个级别就完全足够了,通常视频转换器也将这个采样率作为默认设置。

0 人点赞