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

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

相关推荐
TSINGSEE21 小时前
国标GB28181视频质量诊断:EasyGBS服务插件EasyVQD快速识别花屏、蓝屏、画面冻结抖动
人工智能·音视频·实时音视频·视频编解码·视频质量诊断·花屏检测·画面抖动
灯火不休ᝰ2 天前
[kotlin] 从Java到Kotlin:掌握基础语法差异的跃迁指南
java·kotlin·安卓
感谢地心引力5 天前
安卓、苹果手机无线投屏到Windows
android·windows·ios·智能手机·安卓·苹果·投屏
ℳ₯㎕ddzོꦿ࿐7 天前
告别延迟:HLS (m3u8) 实时转 FLV 全栈方案实战
视频编解码
霜雪i8 天前
ISP模式
视频编解码·h.266
CheungChunChiu8 天前
视频编解码与 GOP 结构详解
linux·视频编解码
乙酸氧铍10 天前
手机使用 ZeroTermux 调用 python 编辑缩放图像
图像处理·python·智能手机·安卓·termux
深圳市友昊天创科技有限公司12 天前
友昊天创推出8K ,4K 120Hz 100米延长器方案
音视频·实时音视频·视频编解码
深圳市友昊天创科技有限公司12 天前
ASM4242 雷电扩展坞 CV4242 PCIE扩展坞
音视频·实时音视频·视频编解码
深圳市友昊天创科技有限公司12 天前
友昊天创推出延长器方案GSV5600+HDBase VS010**/VS100**
音视频·实时音视频·视频编解码