今天我们继续给大家讲解Android手机直播流程中的编码技术,编码过程分为视频和音频解码,这篇文字先介绍视频编码的技术。图玩智能为企业提供直播平台的二次开发服务,为大家搭建更加完善的直播系统,欢迎随时咨询www.toivan.com.

编码

通过摄像头和麦克风我们可以采集到相应的视音频数据,但是这些是固定格式的原始数据,一般来说摄像头采集到的是一帧一帧画面,而麦克风采集的是PCM音频数据。如果直接将这些数据进行发送,这样往往会数据量很大,造成很大的带宽浪费,因此在发送前往往需要对视音频进行编码。

视频编码

1、预测编码

众所周知,一幅图像由许多个所谓像素的点组成,大量的统计表明,同一幅图像中像素之间具有较强的相关性,两个像素之间的距离越短,则其相关性越强,通俗地讲,即两个像素的值越接近。于是,人们可利用这种像素间的相关性进行压缩编码,这种压缩方式称为帧内预测编码。不仅如此,邻近帧之间的相关性一般比帧内像素间的相关性更强,压缩比也更大。由此可见,利用像素之间(帧内)的相关性和帧间的相关性,即找到相应的参考像素或参考帧作为预测值,可以实现视频压缩编码。

2、变换编码

大量统计表明,视频信号中包含着能量上占大部分的直流和低频成分,即图像的平坦部分,也有少量的高频成分,即图像的细节。因此,可以用另一种方法进行视频编码,将图像经过某种数学变换后,得到变换域中的图像(如图所示),其中 u,v 分别是空间频率坐标。

3、基于波形的编码

基于波形的编码采用了把预测编码和变换编码组合起来的基于块的混合编码方法。为了减少编码的复杂性,使视频编码操作易于执行,采用混合编码方法时,首先把一幅图像分成固定大小的块,例如块 8×8(即每块 8 行,每行 8 个像素)、块 16×16(每块 16 行,每行 16 个像素)等等,然后对块进行压缩编码处理。

自 1989 年 ITU-T 发布第一个数字视频编码标准——H.261 以来,已陆续发布了 H.263 等视频编码标准及 H.320、H.323 等多媒体终端标准。ISO 下属的运动图像专家组(MPEG)定义了 MPEG-1、MPEG-2、MPEG-4 等娱乐和数字电视压缩编码国际标准。

2003 年 3 月份,ITU-T 颁布了 H.264 视频编码标准。它不仅使视频压缩比较以往标准有明显提高,而且具有良好的网络亲和性,特别是对 IP 互联网、无线移动网等易误码、易阻塞、QoS 不易保证的网络视频传输性能有明显的改善。 所有这些视频编码都采用了基于块的混合编码法,都属于基于波形的编码。

4、基于内容的编码

还有一种基于内容的编码技术,这时先把视频帧分成对应于不同物体的区域,然后对其编码。具体说来,即对不同物体的形状、运动和纹理进行编码。在最简单情况下,利用二维轮廓描述物体的形状,利用运动矢量描述其运动状态,而纹理则用颜色的波形进行描述。

当视频序列中的物体种类已知时,可采用基于知识或基于模型的编码。例如,对人的脸部,已开发了一些预定义的线框对脸的特征进行编码,这时编码效率很高,只需少数比特就能描述其特征。对于人脸的表情(如生气、高兴等),可能的行为可用语义编码,由于物体可能的行为数目非常小,可获得非常高的编码效率。

MPEG-4 采用的编码方法就既基于块的混合编码,又有基于内容的编码方法。

5、软编与硬编

在Android平台上实现视频的编码有两种实现方式,一种是软编,一种是硬编。软编的话,往往是依托于cpu,利用cpu的计算能力去进行编码。比如我们可以下载x264编码库,写好相关的jni接口,然后传入相应的图像数据。经过x264库的处理以后就将原始的图像转换成为h264格式的视频。

硬编则是采用Android自身提供的MediaCodec,使用MediaCodec需要传入相应的数据,这些数据可以是yuv的图像信息,也可以是一个Surface,一般推荐使用Surface,这样的话效率更高。Surface直接使用本地视频数据缓存,而没有映射或复制它们到ByteBuffers;因此,这种方式会更加高效。在使用Surface的时候,通常不能直接访问原始视频数据,但是可以使用ImageReader类来访问不可靠的解码后(或原始)的视频帧。这可能仍然比使用ByteBuffers更加高效,因为一些本地缓存可以被映射到 direct ByteBuffers。当使用ByteBuffer模式,可以利用Image类和getInput/OutputImage(int)方法来访问到原始视频数据帧。

android直播视频编码,Android手机直播之视频编码技术相关推荐

  1. 直播源代码中关于手机直播平台开发的登陆注册介绍

    一套完整的手机直播平台,需要有一套完善的直播源代码.开发一套符合大众需求,得到市场认可的直播平台,是需要开发公司经过不断优化调整更新的.只有开发出符合大众需求的直播平台,才能快速在市场当中得到认可和使 ...

  2. 段视频伪原创 手机如何去除视频md5

             段视频伪原创 手机如何去除视频md5          然而,虽然流量给短视频赢得了鲜花和掌声,但是流量的变现依然是横在短视频头上的达摩克利斯之剑.                 ...

  3. html5 手机拍视频滤镜,还在用滤镜拍视频?这家手机支持一键视频美颜,效果不要太赞...

    原标题:还在用滤镜拍视频?这家手机支持一键视频美颜,效果不要太赞 还有不到十天就是春节了,期待已久与家人团聚的时刻即将到来,在回家之后相信有不少人都会开启拍拍拍的模式,无论是拍照片还是拍短视频,只要是 ...

  4. android手游直播怎么推流,安卓手机直播,Total Control手游投屏教程

    安卓手机直播,Total Control手游投屏教程 作者:小葫芦直播管家 来源:小葫芦 时间:2018-04-27 10:57 手游主播们,安卓手机投屏直播,你们都学会了吗? 是时候表演真正的技术了 ...

  5. Android之通过ContentResolver获取手机图片和视频的路径和生成缩略图和缩略图路径

    1 问题 获取手机所有图片和视频的路径和生成图片和视频的缩略图和缩略图路径 生成缩略图我们用的系统函数 public static Bitmap getThumbnail(ContentResolve ...

  6. android 视频添加音乐,手机怎么给视频加音乐,安卓手机软件怎么给视频添加音乐比较方便...

    注意此教程方案是『安卓手机端教程方案』 如果在手机端操作不方便或对眼睛不好 也可以用另外电脑端的教程方案操作:电脑视频加背景音乐[找更多方案] 现在的手机功能是越来越强大,用手机可以上网看视频.聊天. ...

  7. android 小视频添加水印,安卓手机怎么给视频加水印 视频加水印的手机软件|微信小视频怎么加水印...

    感觉中午一个小时的午休时间更本不够似的,以至于现在的我还头昏脑胀的厉害,睡眼惺忪的我还得默默的敲击着键盘,全都是为了生活啊,算了不传递这些负能量了,来说说咱们今天的教程,是关于如何用手机给视频加水印的 ...

  8. android手机视频编辑,安卓手机如何使用视频编辑器给自己录制的视频去除原声并添加配乐?安卓手机视频编辑器...

    点击"视频编辑"就可以开始来进行视频编辑操作了,首先我们要来选择自己想要来进行配乐的视频文件.也可以点击上方的"录制"按钮来直接录制视频素材.这里小编选择了图库 ...

  9. android视频叠加字符,手机上给视频加logo 安卓手机上给视频加摇摆的文字水印的方法...

    注意此教程方案是『安卓手机端教程方案』 如果在手机端操作不方便或对眼睛不好 也可以用另外电脑端的教程方案操作:视频加旋转水印[找更多方案] 今天要介绍安卓手机上视频编辑助手是可以给视频添加摇摆的文字水 ...

  10. EasyDarwin开源手机直播方案:EasyPusher手机直播推送,EasyDarwin流媒体服务器,EasyPlayer手机播放器...

    在不断进行EasyDarwin开源流媒体服务器的功能和性能完善的同时,我们也配套实现了目前在安防和移动互联网行业比较火热的移动端手机直播方案,主要就是我们的 EasyPusher直播推送项目 和 Ea ...

最新文章

  1. Csharp: FreeTextbox 编辑器控件运行时错误: 'FTB_ResizeGalleryArea' 未定义
  2. iptables端口映射实例
  3. (转载)Android项目实战(二十八):使用Zxing实现二维码及优化实例
  4. db2与oracle的区别 锁,db2和oracle语句区别
  5. 【Linux】Linux中正则表达式
  6. [BUUCTF-pwn]——mrctf2020_easyoverflow
  7. BMVC 2020 各奖项公布!最佳论文可能就是你要的涨点神器
  8. 案例:实现在购物车中添加商品和删除购物车中指定商品的功能
  9. 左侧侧拉栏html,html – 将侧边栏拉伸到页面的完整高度
  10. PLC-Recorder通过Modbus TCP/Modbus RTU转换器实现RS-485总线设备采集的方法
  11. GeoTools-GeoJson转ShapeFile
  12. python基于django的校园公寓宿舍报修管理系统设计与实现
  13. CSP-S2022游记
  14. 安装Anaconda之后cmd打不开
  15. 修复WiFi网卡驱动异常导致WiFi图标消失报错代码(56)
  16. Excel表格怎么快速计算出算式结果
  17. php 调用java接口
  18. *POJ1830 高斯消元
  19. powerdesigner CDM中联系理解
  20. web太极八卦图纯css

热门文章

  1. list contains比较对象需要注意的地方
  2. python列表元素求和_Python 计算列表元素之和
  3. Python 之父爆料:明年至少令 Python 提速 1 倍!
  4. Spark任务输出文件过程详解
  5. 客服人该如何降低投诉率
  6. h3c虚拟化服务器配置,H3C CAS 虚拟化平台安装部署
  7. springmvc整合mybatis框架源码 bootstrap html5 mysql oracle maven
  8. namenode的启动
  9. python后端与前端数据交互_前端与后端的数据交互(jquery ajax+python flask)
  10. 前端与后端之间的数据传递