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编码使用的一些原理。

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

相关推荐
qiuqiushuibx2 天前
安卓基础001
安卓
第三女神程忆难3 天前
Android Kotlin 高阶函数详解及其在协程中的应用
android·开发语言·kotlin·移动开发·安卓·高阶函数·1024程序员节
x0245 天前
Android Room(SQLite) too many SQL variables异常
sqlite·安卓·android jetpack·1024程序员节
起司锅仔5 天前
Android视频编解码 MediaCodec使用(2)
android·视频编解码
惜.己5 天前
Appium环境搭建全流程(含软件)
python·测试工具·node.js·appium·pytest·安卓·1024程序员节
shandianchengzi6 天前
【记录】Android|安卓平板 猫游戏(四款,peppy cat,含下载教程和链接)
android·游戏·安卓·平板·cat··tablet
jingling5557 天前
adb常见指令以及问题解决
开发语言·功能测试·测试工具·adb·安卓
jingling5557 天前
adb安装,连接模拟器以及常见指令
开发语言·功能测试·测试工具·adb·安卓
2401_856654517 天前
这TOP3免费录屏软件,助你轻松跃升视频制作小能手
编辑器·音视频·视频编解码·视频·备忘录模式