手机Android音视频采集与直播推送
2016-08-23 10:56
609 查看
本文载自:http://blog.csdn.net/xiejiashu/article/details/34860575
恰逢2014 Google I/O大会,不难看出安卓在Google的推进以及本身的开放性作用下,已经快延生到生活的
各个方面了,从安卓智能手机、平板,到可穿戴的Android Ware、眼镜、手表、再到Android汽车、智能家
居、电视,甚至最近看新闻,日本出的几款机器人都是Android系统的,再把目光放回监控行业,传统监控
中的移动终端设备,例如:单兵设备、手持设备、车载终端设备,包括家庭监控中用到的智能设备,都可以
用Android系统替代了,不仅开发容易,而且易扩展,设备也更加智能了。
图 - Android在手持设备中的应用
一步一步来,我们先实现Android手机的音视频采集与上传的实时监控功能。Google Code上有一个开源项
目:spydroid-ipcamera,spydroid能在Android手机中建立一个精简的HTTP Server和RTSP Server,功
能类似于一般的IpCamera,既能够通过网页访问摄像机并修改监控配置,还能通过http或者rtsp协议,获取
监控的实时音视频,而且从其代码结构中,可以看出,spydroid已经实现了RTSPServer、RTSPClient、
RTP、RTCP、H264、AAC…等等功能,总之,咱们需要的Utility都已经具备了,只要将这些功能组合到一块
就能实现咱们要的直播需求了。
图 - Android实现IPCamera的功能
在之前的博客“基于Darwin实现的分布式流媒体直播服务器系统”中,我们用Windows的摄像头和麦克风
样,我们参考EasyIpCamera的设计方法,App启动后,连接并保活至中心管理服务器,接收来自CMS的控
制命令。采集安卓摄像头视频和mic声音,进行H264和AAC编码(这里我们只参考spydroid实现了硬编码,
软编码在后续中将会更新进来,不过经过尝试,目前大部分Android音视频采集都支持硬编码),再通过
RTSP和RTP,将实时音视频数据推送到流媒体服务器,并由流媒体服务器进行转发和分发,实现直播。
图 - Android接入EasyDSS
这里主要就是RTSP/RTP的推送过程,这个在之前的博客“基于DSS的先侦听后推送式流媒体转发”中详细
描述了这个过程,具体的推送代码也可以参考live555的DarwinInjector类实现,咱们这里直接修改
spydroid中的RTSPClient就可以实现ANNOUNCE/SETUP/PLAY/RTP过程了,具体流程源代码及协议流程
也可以参考“用Darwin和live555实现的直播框架”中的描述。
Android采集端下载:http://pan.baidu.com/s/1kTwrasB EasyDSS(Win)服务器下载:http://pan.baidu.com/s/1ntoFSSh EasyDSS(Linux)服务器下载:http://pan.baidu.com/s/1c0b6bUo
使用方法与博客“基于Darwin实现的分布式流媒体直播服务器系统”中EasyIpCamera的方法一致,只需要
配置EasyDSS服务器CMS的地址和端口号,就可以接入到EasyDSS,后续所有流程与EasyIpCamera类似,
只有当有客户端请求实时视频的时候才会推送音视频流,其他情况只与CMS连接保活,流媒体处于Idle状
态。
图 - Android采集端配置界面
实时效果:经过测试对吧,延时性与网络和手机的相关性很大,不同网络条件,不同手机硬件,可能对比出
的延时效果不一样,用三星Glaxy3手机,在网络情况比较好的情况下,实时音视频的延时大概在1.3s(公网
传输)左右:
图 - 连续测试2’52’,延时1.35s
图 - 连续测试9’17”,延时1.58s
恰逢2014 Google I/O大会,不难看出安卓在Google的推进以及本身的开放性作用下,已经快延生到生活的
各个方面了,从安卓智能手机、平板,到可穿戴的Android Ware、眼镜、手表、再到Android汽车、智能家
居、电视,甚至最近看新闻,日本出的几款机器人都是Android系统的,再把目光放回监控行业,传统监控
中的移动终端设备,例如:单兵设备、手持设备、车载终端设备,包括家庭监控中用到的智能设备,都可以
用Android系统替代了,不仅开发容易,而且易扩展,设备也更加智能了。
图 - Android在手持设备中的应用
一步一步来,我们先实现Android手机的音视频采集与上传的实时监控功能。Google Code上有一个开源项
目:spydroid-ipcamera,spydroid能在Android手机中建立一个精简的HTTP Server和RTSP Server,功
能类似于一般的IpCamera,既能够通过网页访问摄像机并修改监控配置,还能通过http或者rtsp协议,获取
监控的实时音视频,而且从其代码结构中,可以看出,spydroid已经实现了RTSPServer、RTSPClient、
RTP、RTCP、H264、AAC…等等功能,总之,咱们需要的Utility都已经具备了,只要将这些功能组合到一块
就能实现咱们要的直播需求了。
图 - Android实现IPCamera的功能
在之前的博客“基于Darwin实现的分布式流媒体直播服务器系统”中,我们用Windows的摄像头和麦克风
样,我们参考EasyIpCamera的设计方法,App启动后,连接并保活至中心管理服务器,接收来自CMS的控
制命令。采集安卓摄像头视频和mic声音,进行H264和AAC编码(这里我们只参考spydroid实现了硬编码,
软编码在后续中将会更新进来,不过经过尝试,目前大部分Android音视频采集都支持硬编码),再通过
RTSP和RTP,将实时音视频数据推送到流媒体服务器,并由流媒体服务器进行转发和分发,实现直播。
图 - Android接入EasyDSS
这里主要就是RTSP/RTP的推送过程,这个在之前的博客“基于DSS的先侦听后推送式流媒体转发”中详细
描述了这个过程,具体的推送代码也可以参考live555的DarwinInjector类实现,咱们这里直接修改
spydroid中的RTSPClient就可以实现ANNOUNCE/SETUP/PLAY/RTP过程了,具体流程源代码及协议流程
也可以参考“用Darwin和live555实现的直播框架”中的描述。
Android采集端下载:http://pan.baidu.com/s/1kTwrasB EasyDSS(Win)服务器下载:http://pan.baidu.com/s/1ntoFSSh EasyDSS(Linux)服务器下载:http://pan.baidu.com/s/1c0b6bUo
使用方法与博客“基于Darwin实现的分布式流媒体直播服务器系统”中EasyIpCamera的方法一致,只需要
配置EasyDSS服务器CMS的地址和端口号,就可以接入到EasyDSS,后续所有流程与EasyIpCamera类似,
只有当有客户端请求实时视频的时候才会推送音视频流,其他情况只与CMS连接保活,流媒体处于Idle状
态。
图 - Android采集端配置界面
实时效果:经过测试对吧,延时性与网络和手机的相关性很大,不同网络条件,不同手机硬件,可能对比出
的延时效果不一样,用三星Glaxy3手机,在网络情况比较好的情况下,实时音视频的延时大概在1.3s(公网
传输)左右:
图 - 连续测试2’52’,延时1.35s
图 - 连续测试9’17”,延时1.58s
相关文章推荐
- 手机Android音视频采集与直播推送,实现单兵、移动监控类应用
- 手机Android音视频采集与直播推送,实现单兵、移动监控类应用
- 手机Android音视频采集与直播推送,实现单兵、移动监控类应用
- 手机Android音视频采集与直播推送,实现单兵、移动监控类应用
- 手机Android音视频采集与直播推送,实现单兵、移动监控类应用
- 手机Android音视频采集与直播推送,实现单兵、移动监控类应用
- 手机Android音视频采集与直播推送,实现单兵、移动监控类应用
- 手机Android音视频採集与直播推送,实现单兵、移动监控类应用
- EasyRTMP安卓Android手机直播之AAC采集、编码与RTMP推送
- EasyRTMP安卓Android手机直播之AAC采集、编码与RTMP推送
- Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
- EasyPusher实现Android手机屏幕桌面直播,实时推送操作画面,用于手游直播等应用
- [转]Android中直播视频技术探究之---摄像头Camera视频源数据采集解析
- Android中直播视频技术探究之---桌面屏幕视频数据源采集功能分析
- 手机视频采集直播 bambuser.com 轻松一个手机,就可以做视频直播!
- EasyPusher安卓Android手机直播推送之MediaCodec 硬编码H264格式
- 重要的两个类,实现android手机视频直播
- Android中直播视频技术探究之---采集摄像头Camera视频源数据进行推流(采用金山云SDK)
- android手机推送视频到服务端
- EasyPusher安卓Android手机直播推送之RTSP流媒体协议流程