安卓音视频整理

这是关于安卓音视频的一个系列文章,大家可以从这里随意跳跃:

0.安卓音视频整理

1.安卓音视频整理(一)—— 音频模块

2.安卓音视频整理(二)—— 音视频编解码

3.安卓音视频整理(三)—— 图像模块

4.安卓音视频整理(四)—— 音视频播放器

5.安卓音视频整理(五)—— MediaSDK的封装

摘要:今天开始,我将会整理一下我在音视频开发中的一些知识积累,主要会包括 基础概念、音频模块、图像模块、音视频编解码、音视频播放器、MediaSDK的封装 这些内容。

本系列文章将会重点围绕上图的内容来扩展,主要包括Android 音频录制、视频录制、音视频编解码,播放器设计等。此篇文章介绍一些有关音视频的基本概念。

1. 音频基础概念

① 音频量化过程

模拟信号 —> 采样 —> 量化 —> 编码 —> 数字信号

音频量化过程见下图:

② 音频量化基本参数

  • 采样大小:一个采样用多少bit存放 。常见的有 8bit,16bit,24bit,32位。
  • 采样率:采样的频率,速率。定义为每秒从连续信号中提取并组成离散信号的采样个数。常见的有 8kHz, 16kHz, 32kHz, 44.1kHz, 48kHz,96kHz 等。
  • 声道数:单声道, 双声道, 多声道。

③ 人类对声音的感知

人类的听觉范围: 20Hz —— 20 kHz
人类的发声范围: 85Hz —— 1100 Hz

④ 音频码率计算

码率为数据传输时单位时间传送的数据位数。单位 bps 即:位每秒。几乎所有的编码格式重视的都是如何用最低的码率达到最少的失真。

码率  = 采样率 x 采样大小  x 声道数 (bps)

例如: 采样率为44.KHz, 采样大小为 16bit, 双声道的PCM 编码的 WAV 文件的码率是多少?

答:它的码率为 44.1K x 16 x 2 = 1411.2 kbps

⑤ 声音三要素

  • 音调: 就是音频, 男生 < 女生 < 儿童
  • 音量: 振动的幅度,振幅越大,音量越大
  • 音色: 与材质有很大关系, 音色本质是谐波

2.音频编码

① 有损和无损

相对自然界的信号,音频编码最多只能做到无限接近,至少目前的技术只能这样了,相对自然界的信号,任何数字音频编码方案都是有损的,因为无法完全还原。

在计算机应用中,能够达到最高保真水平的就是脉冲代码调制编码,即PCM编码,因此,PCM被约定俗成为无损编码,被广泛用于素材保存及音乐制作中,但这并不意味着PCM就能够确保信号绝对的保真。

② 数据带宽

数据带宽,它和ADSL中的带宽是一个概念。将码率除以8,就可以得到这个WAV的数据带宽.
如:采样率为44.1KHz,采样大小为16bit,双声道的PCM编码的音频信号:

  • 码率为:44.1K x 16 x 2 = 1411.2 kbps
  • 数据带宽为:1411.2/8 = 176.4Kb/s

这表示存储一秒钟采样率为44.1KHz,采样大小为16bit,双声道的PCM编码的音频信号,需要176.4KB的空间,1分钟则约为10.34M。这太大了,大部分用户是不可接受的。要降低磁盘的占用,只有2种方法,降低采样指标或者编码压缩,然而,降低指标并不可取。主要还是对音频数据进行编码,以达到压缩数据量的目的。

③ 音频编码类型

根据编码方式的不同,音频编码技术分为三种:

  • 波形编码:音质量高,但编码率也很高。典型的波形编码方法为PCM(Pulse Code Modulation,脉冲编码调制)被广泛运用与多媒体
  • 参数编码:编码率很低,产生的合成语音的音质不高。典型的参数编码方法为LPC(Linear Predictive Coding,线性预测编码)主要运用于军事、移动通信
  • 混合编码:使用参数编码技术和波形编码技术,编码率和音质介于两者之间

④ 编码格式

常见的编码格式:
PCM、WAV、MP3、OGG、AAC、M4A 等。

3.视频基本概念

① 分辨率

分辨率影响图像的大小,与图像大小成正比,分辨率越高,图像越大,分辨率越低,图像越小。常见的分辨率:

  • 720p: 1280 x 720
  • 1080p: 1920 x 1080
  • 2K: 2560 x 1440
  • 4K: 3048 x 2160

② 清晰度

  • 在码率一定的情况下,分辨率与清晰度成反比关系:分辨率越高,图像越模糊,分辨率越低,图像越清晰。
  • 在分辨率一定的情况下,码率与清晰度成正比关系:码率越高,图像越清晰,码率越低,图像越模糊。

③ 帧率

帧率是指每秒显示的图片数,或者指每秒能够更新图片的次数,又称FPS。

越高的帧速率可以得到更流畅逼真的画面、每秒帧数越多,所显示的动作就会越流畅。帧率也会影响体积,帧率越高,每秒显示的画面越多,体积就越大。

由于人类眼睛的特殊生理结构,如果画面帧率高于16,就会认为是连贯的,此现象称之为视觉暂留。

当帧数达到一定数值后,再增长的话,人眼能感知的流畅度的提升就比较有限了。一般来说30fps是可以接受的,将性能提升至60fps则可以明显提升交互感和逼真感,如果超过75fps一般就不容易察觉到有明显的流畅度提升了。如果帧率超过屏幕刷新率只会浪费图形处理能力,因为监视器不能以这么快的速度更新。

4.视频编码

①视频的格式

视频的格式包括两种:封装格式编码格式

一张图片可以用很多种算法来显示在屏幕中,所以图片的编码方式就有了JPEG,BMP,PNG等。

视频是动态图像,用什么样的方式表达1s内的若干图片,这就是简单意义上的视频编码,继而就诞生了MPEG,H.264等多种编码格式

后来有了音频,字幕,配音,就需要一个容器把他们全部放进去保存,所以就诞生了封装格式

② 封装格式

所谓封装格式,是按照一定的规则来将视频轨道、音频轨道、字幕、时间戳、编码方式等零散信息组装在一起,在播放视频文件的时候一起同步进行播放,并且提供了视频索引,可以让我们在播放视频拖动进度条时,播放器可以按照这些信息来匹配解码器,同步音视频。

视频文件的封装格式不影响视频的画质,影响视频画质的是视频的编码格式

典型的三种视频封装格式:ts,MP4和mkv

  • ts适合网络流媒体播放,体积较大,一般用于电视直播或网络直播中。
  • MP4一般只包括一条视频轨和一条音频轨,适合大多数设备,兼容性最好。
  • mkv可以封装多个音频轨,字幕轨,合适网络传播分享。

③ 编码格式

编码格式就是指通过特定的压缩技术,将某个视频格式的文件转换成另一种视频格式文件存在的方法。

不同编码方法的区别主要是压缩算法的不同。视频编码的目的主要是压缩数据体积。

视频中常用的编码标准有H.26X系列MPEG系列,移动端使用最多的是MP4视频文件,主要使用H.264 AVC编码格式。

④ H.264 AVC编码格式

  • 低码率:和MPEG2,MPEG4等压缩技术相比,在同等图像质量下,采用H.264技术压缩后的数据量只有MPEG2的1/8,MPEG4的1/3。H.264的最大优势是具有很高的数据压缩率,可以有效减少用户带宽的占用。
  • 高质量的图像:H。264能提供连续,流畅的高质量图像。
  • 容错能力强:H.264提供了解决在不稳定网络环境下容易发生的丢包等错误的必要工具。
  • 网络适应性强:H.264提供了网路抽象层,使得H.264的文件能容易地在不同网络上传输。

下一篇:1.安卓音视频整理(一)—— 音频模块

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android知识点整理包括但不限于以下内容: 1. Android基础知识: - Android系统架构和组件:包括应用层、应用框架层、系统运行库层和Linux内核层。 - Android应用的生命周期:包括活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)和内容提供器(Content Provider)的生命周期。 - Android应用的资源管理:包括布局文件、字符串资源、图像资源等的使用和管理。 - Android应用的权限管理:包括权限的声明和请求。 2. Android界面开发: - 布局管理器:包括线性布局(LinearLayout)、相对布局(RelativeLayout)、帧布局(FrameLayout)等。 - 视图控件:包括文本视图(TextView)、按钮(Button)、图像视图(ImageView)等。 - 用户交互:包括点击事件、手势识别、触摸事件等的处理。 3. Android数据存储: - Shared Preferences:用于存储少量的键值对数据。 - SQLite数据库:用于存储结构化数据。 - 文件存储:包括内部存储和外部存储的文件存储方式。 4. Android网络编程: - 网络请求:使用HttpURLConnection或HttpClient进行网络请求。 - JSON解析:使用JSONObject或GSON库解析JSON数据。 - 图片加载:使用Picasso或Glide库加载网络图片。 5. Android多媒体开发: - 音频播放:使用MediaPlayer进行音频播放。 - 视频播放:使用VideoView或ExoPlayer进行视频播放。 - 相机和相册:使用Camera或Camera2 API进行拍照和录制视频。 6. Android传感器: - 加速度传感器、光传感器、陀螺仪等的使用。 7. Android地图和定位: - 使用Google Maps API进行地图显示和定位功能的开发。 以上仅为Android知识点的概要,实际开发中还涉及更多的内容。希望以上信息对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值