Android视频编解码 简述(1)

Android视频编解码 简述

简述

随着现在大屏幕的风潮来袭,出现了许多设备互联的需求,其中最重要的功能之一就是投屏功能,其次现在的app都离不开视频播放,这些功能的背后都少不了音视频编解码,我们这个章节就来了解一下编解码的一些知识。

首先我们先来说一下为什么需要编解码,其实主要目的就是为了减少视频的大小,试想如果我们有一个10242048分辨率的视频(手机屏幕的大小差不多这个量级),我们使用RGBA来编码,一个像素4个字节,那么一个图像就是2MB 4,就是8MB,就算一秒钟30帧,那么一秒钟视频就是240MB,一分钟就10+GB了,这个大小很夸张,而实际上我们一个1分钟的视频可能也就10M左右,这个就是因为编码大大压缩了视频的大小。

我们平时的视频播放或者投屏都是在服务端先将数据编码,然后通过信道(wifi)传输到客户端,客户端再解码显示。

编码为什么能做到这么大的压缩率呢

编码这么大的压缩率主要要依赖于视频的一些特性,一方面是单个图片可以压缩,单张图片其实有非常多的冗余信息,因为一个物体附近的颜色可能都非常相近,然后通过一些有损压缩压缩一些人眼不敏感的信息,可以将单张图片压缩到10%左右的大小(并不准确,需要依赖图片自身的特性),一张jepg图片可能就是200KB左右。

其次视频中连续的图片都有大量相似的内容,例如一个人在一个场景里走的视频,每一帧之间可能背景部分几乎是完全一样的,只有人的部分发生了位置偏移,所以可以参照一张图片,其他的图片都发送偏移信息,就是所谓的I帧。

涉及内容

本章会先介绍Android的编解码框架MediaCodec提供给app接口如何使用,会通过相机数据写一个demo。

然后会介绍一下MediaCodec的框架流程。

还有H264编码使用的一些原理。

后续可能会进一步研究软件编解码的原理,由于视频编解码的实现非常复杂,而且一般不是做编解码器的话也不需要去学习它的具体实现,对原理有一定了解即可,所以可能会把时间线放的很长~

相关推荐
Jacen.L1 天前
如何选择视频测试编码器? -- 编码器测试序列选择方法论
音视频·视频编解码
一点晖光2 天前
uview 的u-tabs组件在微信小程序中会出现横向滚动条
微信小程序·安卓·横向滚动条
TEL189246224772 天前
IT6565:单芯片双通道DisplayPort 1.4转HDMI 2.0转换器,带嵌入式MCU
音视频·实时音视频·视频编解码
TEL189246224773 天前
IT6695:单芯片HDMI转VGA转换器,集成MCU
音视频·实时音视频·视频编解码
TEL189246224773 天前
IT6563:单芯片四通道DisplayPort 1.2转HDMI 2.0转换器,带嵌入式MCU
音视频·实时音视频·视频编解码
视频技术分享3 天前
音视频SDK:驱动实时互动时代的核心技术引擎
实时互动·音视频·语音识别·实时音视频·视频编解码·视频
给算法爸爸上香4 天前
yolo tensorrt视频流检测软解码和硬解码
yolo·ffmpeg·视频编解码·tensorrt·nvcodec
@海~涛4 天前
AOSP源码下载与编译
android·数据库·缓存·安卓·安全架构
极客小云7 天前
【深入理解 Android 中的 build.gradle 文件】
android·安卓·安全架构·安全性测试
TEL189246224779 天前
IT66320:1输入1输出HDMI 2.0重定时器,配备HDMI 2.1 eARC接收器和嵌入式MCU
音视频·实时音视频·视频编解码