Android音视频开发之基础知识

一、视频文件

在这里插入图片描述

1、视频格式

常见格式:mp4、mkv、flv
封装的数据:音频码流、视频码流

常用工具: [FFmpeg下载]:https://ffmpeg.org/download.html
下载、安装并配置环境变量
ffmpeg.exe 视频编解码
ffplay.exe 播放器库
ffprobe.exe 音视频分析工具

2、视频播放—cmd命令

ffplay -i 视频文件目录

回车后开始播放视频
返回信息包含内部包含视频或者音频信息
默认播放Stream #0:0 视频或音频
例如下图:包含两条视频信息(显示Video),无音频信息
在这里插入图片描述
如果想播放第二条视频(Stream #0:1),可执行命令:

ffplay -i 视频目录 -vst 1

3、视频编码

视频就是连续的图像序列,不经过编码的连续图像数据数据量太大。
各种编码方式目的都是为了压缩,使体积更小,便于存储和传输,编码的核心思想就是去除冗余信息。

(1)空间冗余:图像内部相邻像素之间存在较强的相关性多造成的冗余
(2)时间冗余:视频图像序列中的不同帧之间的相关性所造成的冗余
(3)视觉冗余:人眼不能感知或者不敏感的那部分图像
(4)信息熵冗余:也称编码冗余,人们用于表达某一信息的比特数总比理论上表示该信息所需要的最少比特数要大,他们之间的差距就是信息熵冗余,或称编码冗余
熵编码例子:
11112222 8
4142 转换为4个1个2 4 省一半空间
(5)知识冗余:是指在有些图像中还包含与某些验证知识有关的信息

4、H.264码流分析

H.264码流文件分为两层
(1)VCL:视频编码层
负责高效的视频内容表示,VCL数据即编码处理的输出,表示被压缩编码后的视频数据序列。
(2)NAL:网络提取层
负责以网络所需求的恰当的方式对数据进行打包和传送,是传输层,不管在本地播放还是网络播放,都是需要这一层来传输。

VCL就是压缩编码后的原始数据。
VCL数据封装到NAL单元后,才可用于传输或存储
类比:VCL像JavaBean,NAL像Json序列化,经过包装后才能进行数据的传输

.h264文件
一般H.264编码器输出:起始码+NALU(NAL)单元
起始码为:0x00000001或者0x000001
起始码作用:区分每个单元的开头
起始码后面跟的第1个字节是NAL的Header信息,这个字节的低5位表示NALU类型。

5、片、宏块

一帧图片经过编码器之后,就被编码成一个或多个片,每片包含整数个宏块,NAL单元中就是装载着这些片的载体。

二、直播推流实践

1、图像采集

Camera
Camera2
CameraX
NDKCamera

步骤
(1)构建预览布局 SurfaceView或者TextureView,相当于画布来显示摄像头数据
(2)打开相机 Camera.open
(3)设置参数 Camera.Parameters
(4)设置预览数据回调 PreviewCallback
(5)设置预览画布并启动 setPreviewTexture/startPreview
(6)释放相机 stopPreview/release

2、YUV数据

YUV主要应用于优化彩色视频信号的传输,与RGB相比,YUV只需要占用极少的频宽,RGB则需要三个独立频道的信号同时传输。

YUV中Y代表明亮度,也称灰阶值,UV表示的则是色度(色调饱和度)也叫YCbCr
如果只有Y数据的图像就是黑色的,加上UV数据图像就显示成彩色的了。

编码使用YUV而不是RGB的原因:
使用YUV格式才能极大的去除冗余信息,人眼对亮点信息更敏感,对色度敏感度不高。也就是说,可以压缩UV数据,而人眼难以发现。所以压缩算法的第一步就是先把RGB数据转换为YUV数据,对Y少压缩一点,对UV压缩多一点,以平衡图像效果和压缩率

NV21与I420
YUV因为采样和数据排列方式的不同,分为不同的存储方式。

一般摄像头输出为NV21格式,而I420格式则是绝大多数编解码器默认输入输出格式。

NV21数据量的大小是widthheight3/2
NV21数据转I420数据:在这里插入图片描述

3、MediaCodec

可以访问Android底层的多媒体编解码器,例如:编码器/解码器组件

4、持续更新中…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/167881.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

17-spring aop调用过程概述

文章目录 1.源码2. debug过程 1.源码 public class TestAop {public static void main(String[] args) throws Exception {saveGeneratedCGlibProxyFiles(System.getProperty("user.dir") "/proxy");ApplicationContext ac new ClassPathXmlApplication…

【TES605】基于Virtex-7 FPGA的高性能实时信号处理平台

板卡概述 TES605是一款基于Virtex-7 FPGA的高性能实时信号处理平台,该平台采用1片TI的KeyStone系列多核DSP TMS320C6678作为主处理单元,采用1片Xilinx的Virtex-7系列FPGA XC7VX690T作为协处理单元,具有2个FMC子卡接口,各个处理节…

【PyTorch】深度学习实践 02 线性模型

深度学习的准备过程 准备数据集选择模型模型训练进行推理预测 问题 对某种产品花费 x 个工时,即可得到 y 收益,现有 x 和 y 的对应表格如下: x (hours) y(points)12243648 求花费4个工时可得…

Power BI 傻瓜入门 5. 准备数据源

本章内容将介绍: 定义Power BI支持的数据源类型探索如何在Power BI中连接和配置数据源了解选择数据源的最佳做法 现代组织有很多数据。因此,不用说,微软等企业软件供应商已经构建了数据源连接器,以帮助组织将数据导入Power BI等…

Microsoft Edge浏览器中使用免费的ChatGPT

一、双击打开浏览器 找到:扩展,打开 二、打开Microsoft Edge加载项 三、Move tab新标签 获取免费ChatGPT 四、启用Move tab。启用ChatGPT。 扩展 管理扩展 启用 五、新建标签页,使用GPT 六、使用举例 提问 GPT回复

asp.net网球馆计费管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net网球馆计费管理系统是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为vs2010,数据库为sqlserver2008,使用c#语 言开发 aspnet网球馆计费管理系统1 二、…

零售创新:社交媒体如何改变跨境电商游戏规则?

在当今数字化的时代,社交媒体已经成为了我们日常生活中不可或缺的一部分。Facebook、Instagram、Twitter、WeChat等平台不仅让我们与朋友家人保持联系,还成为了一个新的商业战场。特别是在跨境电商领域,社交媒体的崛起正在彻底改变游戏规则。…

选择实验室超声波清洗机具有哪些作用?

实验室超声波清洗机之所以一经面世就能迅速赢得众多消费者的心,这是因为实验室超声波清洗机设备厂家所提供的高性能超声波清洗机具有非常好的清洗效果。清洗效果的高低一直是各实验室关注的焦点问题,现在就选择实验室超声波清洗机具有哪些作用作简要阐述…

掌握测评补单技术对Shopee、Lazada店铺有什么好处?

虾皮(Shopee)、lazada作为东南亚地区最大的电商平台之一,吸引了众多卖家加入其平台,竞争激烈。在如此庞大的市场中,如何优化你的shopee、lazada店铺商品再结合自养号测评,提高曝光率和销售能力成为关键。本文将分享一些有效的方法…

数学预备知识

函数篇: 一次函数、反比例函数、二次函数、指数函数、对数函数、幂函数、三角函数、反三角函数、极点坐标等等 初中数学 【a,b】:开区间 (a,b):闭区间 ∞ :无穷大 ∞&#xff1…

UE4/5:通过Blender制作BlendShape导入【UE4/5曲线、变形目标,blender形态键】

UE4/5里面,我们经常可以在一些骨骼模型上面看到相关的曲线,如Metahuman里面就是通过这个曲线来改变人物的脸部表情。 而这里笔者将教导如何去制作这种曲线。 这种曲线都是存在于骨骼模型上的,所以我们要么直接制作骨骼模型导入ue&#xff0…

【Spring篇】数据源对象管理加载properties文件

🎊专栏【Spring】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【如愿】 🥰欢迎并且感谢大家指出小吉的问题 文章目录 🌺数据源对象管理🛸基础版⭐在pom.xml文件中加入下面的代码&…

HIMA F3236 F7553 面向制造业的可视化人工智能

HIMA F3236 F7553 面向制造业的可视化人工智能 近年来,出现了一种分析高触摸制造的新解决方案:基于图像传感器数据的人工智能驱动分析。与时间和运动研究或Gemba Walks不同,分析从不停止,系统更不容易出现人为错误和偏差。 直到最近&#…

Nvidia显卡基础概念介绍

一、PCIe与SXM 1.1 Nvidia GPU PCIe PCIe(peripheral component interconnect express)是一种高速串行计算机扩展总线标准,是英特尔公司在2001年提出来的,它的出现主要是为了取代AGP接口,优点就是兼容性比较好,数据传输速率高、…

吉利高端品牌领克汽车携手体验家,重塑智能创新的汽车服务体验

浙江吉利控股集团(以下简称“吉利集团”)始建于1986年,1997年进入汽车行业,一直专注实业,专注技术创新和人才培养,坚定不移地推动企业转型升级和可持续发展。现资产总值超5100亿元,员工总数超过…

百分点科技再度亮相GITEX全球大会

10月16-20日,全球最大科技信息展会之一 GITEX Global 2023在迪拜世贸中心开展,本届展会是历年来最大的一届,吸引了来自180个国家的6,000家参展商和180,000名技术高管参会。 百分点科技作为华为生态合作伙伴,继去年之后再度参展&a…

C++之std::string

string类与头文件包含&#xff1a;#include <string> string构造方法&#xff1a; // string constructor #include <iostream> #include <string>int main () {std::string s0 ("Initial string"); //根据已有字符串构造新的string实例// cons…

计算机系统概论

1. 现代计算机由哪两部分组成 计算机系统&#xff1a;硬件、软件

阿里云服务器续费流程_一篇文章搞定

阿里云服务器如何续费&#xff1f;续费流程来了&#xff0c;在云服务器ECS管理控制台选择续费实例、续费时长和续费优惠券&#xff0c;然后提交订单&#xff0c;分分钟即可完成阿里云服务器续费流程&#xff0c;阿里云服务器网aliyunfuwuqi.com分享阿里云服务器详细续费方法&am…

CPU和GPU有什么区别?

CPU&#xff1a;叫做中央处理器&#xff08;central processing unit&#xff09;作为计算机系统的运算和控制核心&#xff0c;是信息处理、程序运行的最终执行单元。 GPU&#xff1a;叫做图形处理器。图形处理器&#xff08;英语&#xff1a;Graphics Processing Unit&#x…