音视频

基础

视频

1、码率 视频文件在单位时间内使用的数据流量,也叫码率或码流率,通俗一点的理解就是取样率,是视频编码中画面质量控制中最重要的部分,一般我们用的单位是kb/s或者Mb/s 关系着带宽、文件体积

2、帧率 FPS(Frames Per Second)- - - 帧/秒 关系着画面流畅度和cpu消耗

3、分辨率 指视频成像产品所成图像的大小或尺寸 关系着图像尺寸和清晰度

音频

​ 1、声道数:声道数是音频传输的重要指标,现在主要有单声道和双声道之分。双声道又称为立体声,在硬件中要占两条线路,音质、音色好, 但立体声数字化后所占空间比单声道多一倍。

2、量化位数: 量化位是对模拟音频信号的幅度轴进行数字化,它决定了模拟信号数字化以后的动态范围。由于计算机按字节运算,一般的量化位数为 8位和16位。量化位越高,信号的动态范围越大,数字化后的音频信号就越可能接近原始信号,但所需要的存储空间也越大。

3、采样率:也称为采样速度或者采样频率,定义了每秒从连续信号中提取并组成离散信号的采样个数,它用赫兹(Hz)来表示。cd采样率44100hz dvd 采样率 48000hz

比特率(音频) = 采样率 x 采样位数 x 声道数

同步

1. 无法察觉:音频和视频的时间戳差值在:-100ms ~ +25ms 之间

2. 能够察觉:音频滞后了 100ms 以上,或者超前了 25ms 以上

3. 无法接受:音频滞后了 185ms 以上,或者超前了 90ms 以上

ijkplayer中的同步

普通的同步原理

mp4

stss 关键帧stts 时间戳表

h.264

H264可以分为2层:视频编码层『VCL』和网络提取层『NAL』

VCL 最后会被包装成NAL

宏块 16×16

帧内预测 各个方向的预测 8种预测方式(8个方向)

帧间预测 运动搜索 找同样的宏块运动路径 运动补偿

在 NALU 头里面,主要的内容是类型 NAL Type。0x07 表示 SPS,是序列参数集, 包括一个图像序列的所有信息,如图像尺寸、视频格式等。0x08 表示 PPS,是图像参数集,包括一个图像的所有分片的所有相关信息,包括图像类型、序列号等

逐行扫描 帧编码 适用于动态图像

隔行扫描 场编码 适用于非动态图像 I帧 = 奇数场 + 偶数场

YUV (YCbCr)

Y 亮度分量 U 蓝色分量 V 红色分量

H.265(hevc)

目前的HEVC标准共有三种模式:Main、Main10和Main Still Picture。Main模式支持8bit色深(即红绿蓝三色各有256个色度,共1670万色),Main10模式支持10bit色深,将会用于超高清电视(UHDTV)上

1.帧内预测 33个方向

2.编码代码 树编码(四叉树) 宏块 8×8 16×16 32 ×32 64×64

3.可变量的尺寸转换(从4×4 到32×32)

10bit

10bit视频是指一种视频编码的特征,意思是每个颜色通道用10个bit来表达。这样,每个颜色通道的色彩级数从8bit的256级提高到了1024级

1.防止banding(色彩平滑过渡区域的色带,8bit编码技术可以通过一种称为dither(抖动)的方法,也就是在色块边缘混入细碎的相邻色的色点,来模糊色块边缘)产生2 提升暗场效果3.更好地容纳噪点

缺点 硬件的支持

MediaCodec

切换码率会花屏,因为要重新初始化一个新的MediaCodec实例,这时候会触发GPU重新生成一个dev node,在这个过程中不会平滑执行的,存在花屏的情况

ffmpeg

av_read_frame会阻塞 通过 avformatcontext->interrupt_calllback 来防止阻塞

seek 针对无关键帧位置信息,通过码率猜一个位置,然后读到一个payload头,判断是继续向前还是向后查找

分析文件 (probesize analyzeduration 那个标准先达到,那就听谁的,停止probe)

probesize默认为5000000(5M) 最小是32字节 可设置为2048

analyzeduration 默认5s flv 90s mpeg 7s

直播

首开时间

1.申请资源的播放 URL 地址的时机优化

争取在用户点击播放之前拿到 URL

2. DNS 解析优化

提前完成 DNS 解析,并缓存结果

增加DNS缓存模块

注意事项:1.app启动时,缓存一部分提前配置的dns

​ 2.缓存的ip刷新问题 DNS 解析有一个 TTL 超时时间,到期前要记得重新解析刷新

​ 监测手机网络切换事件,比如:WiFi 切换到 4G 后,需要清空缓存

​ CDN 服务商会从 HTTP/RTMP 协议中的Host字段/tcUrl参数中 “提取” 的域名,所以需要改造播放器底层的 HTTP/RTMP 代码模块,提供设置字段的接口

3. 服务器的连接和数据传输速度优化

主要是服务器节点与播放器之间的网络传输优化

**4. 视频流的媒体信息解析优化 **

​ 主要是解析提取算法的优化

​ mp4的moov可能会处于头或者尾的位置。对于 moov 媒体信息在尾部的 mp4 文件,播放器读取一定数据后,如果判断 moov 在尾部,则可以暂停这个线程,同时启动第二线程通过 http range 字段读取尾部的 moov

针对ffmpeg的播放器

1.减小 probesize

2.减小 analyzeduration

3.预设码流的音视频格式

5. 解码和渲染策略优化

​ GOP 缓存,确保首帧为关键帧解码渲染

​ 服务器缓存一个Gop帧数据,首先下发

延时优化

1. 网络线路优化

- 选择优质的 CDN 加速服务,保障传输的网络带宽和线路资源

- 测速选线,动态监测,智能调度,确保每一路流的传输质量

2. 降缓冲区

- 生产端减小 GOP 大小,从而减少服务端 GOP 缓存的大小

- 生产端根据发送缓冲区情况,动态调整帧率、码率

- 播放端主动丢帧/追帧/倍数播放,加快缓冲区的消耗

3. 协议/传输优化

- Based on TCP -> Based on UDP,如:QUIC,RTP/RTCP

- 传输策略优化:前向纠错,丢包重传策略,拥塞控制优化,关键帧请求等

4. 处理性能优化

- 硬件编解码/美颜/渲染等处理

- 算法性能调优

OpenGL ES

纹理坐标系是二维坐标系,原点在左下角,s(x)轴向右,t(y)轴向上,x y 取值范围都是 [0, 1] strq

但由于计算机中图片都是 y 轴向下,所以实际上依然是原点在左上角,s(x)轴向右,t(y)轴向下

vector 坐标 是居中的十字坐标 x,y,z的取值范围都是 [-1,1] xyzw

attribute 属性变量。只能用于顶点着色器中。 一般用该变量来表示一些顶点数据,如:顶点坐标、纹理坐标、颜色等

uniforms 一致变量。在着色器执行期间一致变量的值是不变的。与const常量不同的是,这个值在编译时期是未知的是由着色器外部初始化的。

varying 易变变量。是从顶点着色器传递到片元着色器的数据变量。

android触屏音文件地址,Android音视频复习点相关推荐

  1. android 代码功能测试,Android触屏测试实例代码

    本文实例详细描述了Android触屏测试代码,可实现对触屏的点击.移动.离开等事件的处理,对于Android初学者有很好的借鉴价值. 具体功能代码如下: package com.test; impor ...

  2. android 触摸 事件,Android触屏事件和MotionEvent详解

    Android屏幕操作 屏幕是用户和Android设备交互的主要媒介,屏幕分为触屏和非触屏.Android设备目前有四种类型:Android Phone,Android Tablet,Android ...

  3. android 触摸时震动,android触屏震动以及震动强度批改

    android触屏震动以及震动强度修改 PhoneWindowManager.java: 在interceptKeyBeforeQueueing函数中 performHapticFeedbackLw( ...

  4. android横竖屏切换函数,Android横竖屏切换小结.PDF

    Android横竖屏切换小结 Android横竖屏切换小结 Android手机或平板都会存在横竖屏切换的功能,通常是由物理重力感应触发的,但是 有时候也不尽然,通常在设置里面我们可以对手机的横竖屏切换 ...

  5. [Android] 触屏setOnTouchListener实现图片缩放、移动、绘制和添加水印

        前一篇文章讲述了Android实现图片Matrix矩阵类缩放.旋转.对比度.亮度.饱和度处理,但是真正的图片软件都是使用触屏实现图片缩放.移动.添加水印等功能,所以该篇文章主要通过setOnT ...

  6. android触屏设备event模拟,android 使用命令模拟点击 滑动

    adb shell getevent -p 出现上述截图的就是屏幕触摸输入设备 带上 -l adb shell getevent -p-l . EV_ABS      ABS_MT_TRACKING_ ...

  7. android触屏压力方案,触摸屏实现原理与在android上实现.doc

    PAGE 6 武汉工程大学邮电与信息工程学院毕业设计(论文) 武汉工程大学邮电与信息工程学院 毕业设计(论文) 触摸屏的实现原理及在android上的实现 The Principle of the T ...

  8. Android触屏校验

    需求背景,在开机动画结束后弹出触屏校验 : 效果图 : 实现方法 :使用WindowManager在launcher上面添加View 具体代码: import android.annotation.S ...

  9. android锁屏软件开发,Android一键锁屏开发全过程

    一.项目简介: 项目:<Android 一键锁屏> 开发周期:4天 代码量:100行 二.项目流程: 三.项目代码 1.主程序代码: 1.private DevicePolicyManag ...

  10. android横竖屏切换动画,Android应用怎么实现屏幕横竖屏切换功能

    Android应用怎么实现屏幕横竖屏切换功能 发布时间:2020-11-26 15:48:57 来源:亿速云 阅读:121 作者:Leah Android应用怎么实现屏幕横竖屏切换功能?针对这个问题, ...

最新文章

  1. 【Python】Radiobutton组件 LabelFrame组件 Entry组件
  2. 扒皮下京东首页楼层图标的动画效果实现方式
  3. linux下将目录授权给其他用户的步骤
  4. 博士申请 | 加拿大Mila实验室唐建教授招收深度学习方向博士生和实习生
  5. C# 数据结构 之 堆栈和队列
  6. SAP系统里的订单,可以随便删除么?
  7. ts 模板库文件_vue与ts的使用模版
  8. layer弹出相册层
  9. HTML DOM 的nodeType属性
  10. ajax 单击事件删除,AJAX删除事件与加载数据方法介绍
  11. 计算机自带扫雷游戏不显示,win7系统自带扫雷游戏打不开的解决方法
  12. html5一个可拖动的图片大小,HTML5画布中的可拖动和可调整大小元素
  13. kubeedge源码分析
  14. Win10如何把D盘空间分给C盘|Win10硬盘分成多个分区
  15. Vue - $route matched 属性实现面包屑导航
  16. 首届百度Apollo生态大会为什么选择长沙?
  17. mysql count(0)_sql中count(0)是什么意思?
  18. goland本地包import飘红
  19. 【无标题】口算小程序
  20. Maven Resources Compiler: Failed to copy ‘XXX‘ to ‘target/xxx‘编译报错

热门文章

  1. python背景图颜色_matplotlib作图,刻度和背景颜色
  2. CASS11.0新功能介绍(支持AutoCAD2020平台,用户可以体验高雅黑带来的极致眼颜)
  3. AU实战操作之混音、降噪
  4. 根据爬虫实现语义泛化的拓展思路
  5. 拼多多店铺怎样提升转化率,如何优化店铺基础值?
  6. HTML标签之table
  7. codeblocks安装教程
  8. 10 Bad Habits To Avoid As A Developer
  9. Windows下一个SlikSVN使用
  10. HTML+CSS 仿淘宝静态首页