安卓手机的视频传输方案的研究(初步)
来源:互联网 发布:淘宝怎样快速提升信誉 编辑:程序博客网 时间:2024/06/06 12:55
导师分配任务需要实现安卓手机的实时语音和视频传输功能。之前并没有相关的开发经验,于是翻看师兄的毕业设计,简单的把师兄留下的工程重复了下,他只做到了视频的传输,没有语音。而且视频是以序列图片的模式用TCP协议发送到接收端,然后直接在不停地接收端将收到的图片绘制在容器中。这样做并不能解决问题。
于是只能慢慢翻看资料,安卓也是刚刚上手。好在之前有JAVA的基础,安卓上手起来也不是太难。但是发现天杀的google并没有留下相关的视频流的接口,能用的只有两个:1、Camera.PreviewCallback获取预览的每一帧图像;2、MediaRecorder可以直接录制3PG或者MP4文件。
再翻看网上资料发现有前人已经做了相关方面的研究,SkySeraph在他的博客中详细分析了安卓实时视频采集/编码/传输/解码/播放的相关技术很有参考价值。
方案
压缩率
压缩/传输方式
实时性
平均流量消耗
传输距离
用camera的回调函数发送原始的yuv420数据
0
无压缩,按帧传输
高(20~30 fps)
很高(6.5 Mbps)
近距离有线或无线
对一帧数据用GZIP库压缩后发送(很奇葩的做法)
较高(70%~80%)
帧内压缩,按帧传输
低(5 fps)
较高(300 Kbps)
可以远距离
对一帧数据用JPEG方式压缩后传输
一般(60%左右)
帧内压缩,按帧传输
高(25 fps)
高(170 Kbps)
可以远距离(带宽允许的话)
用MediaRecorder对yuv420进行H264硬编码后发送
高(95%)
帧间压缩,视频流传输
高(20 fps)
低(30~70 Kbps)
可以远距离
调用本地H264编码库(JNI)对一帧YUV420数据编码后发送(软编码)
高(97%)
帧间压缩,按帧传输
低(2 fps)
低(20 Kbps)
可以远距离
上表是另一网友总结的安卓平台下的几种实时视频解决方案,前面三种为发送序列图片的方式,并不能很好的完成要求,后面两种能够较好的解决问题。第四种方式,有一个开源的项目Sipdroid可以参考
针对第五种实现方式也有相应的开源项目DroidIPCam代码托管在google服务器上
第五种方式需要自己构建JNI动态编码库,还需要自己对音频与视频同步编码,相比而言第四种方法能直接调用安卓设备本身的资源硬编码,能同时将音视频一起录制然后发送,相比简单很多。
- 安卓手机的视频传输方案的研究(初步)
- 安卓传输文件的一些研究
- 下载安卓手机app内不允许下载的视频
- 介绍一些安卓手机的隐藏代码,适合发烧友研究研究
- 基于B/S结构的无线视频传输方案
- 基于DirectShow的MPEG-4视频传输系统的研究与实现(转载)
- 基于Socket的Android手机视频实时传输
- 基于Socket的Android手机视频实时传输
- 基于Socket的Android手机视频实时传输
- 基于Socket的Android手机视频实时传输
- 安卓手机定位研究
- 主流手机平台的多媒体开发方案研究
- AOP 的初步研究
- WebLogic的初步研究
- WebLogic的初步研究
- WebLogic的初步研究
- WebLogic的初步研究
- webService的初步研究
- Oracle 控制文件损坏恢复
- kipmi0 uses too much CPU ,使用率过高
- 关于Oracle将小于1的数字to_char后丢掉0的解决办法
- openldap 在centos 6 ldap_bind: Invalid credentials (49)
- 数组全排列
- 安卓手机的视频传输方案的研究(初步)
- OCP考题解析_043: 会话时区和ORA_SDTZ环境变量
- opensuse下利用youcompleteme补全boost库
- Oracle小数点保留问题
- ORA-00257: archiver error. Connect internal only, until freed
- SAP中文语言包安装配置
- 08.集合框架(一)【集合概述】【接口Collection,Iterator,List,ListIterator】【类LinkedList,ArrayList】
- 10月30日学习杂记——母板页字段的调用
- 从程序员到项目经理(3)认识项目经理