android手机推送视频到服务端
项目需求,android手机向服务器推送视频。苦战几个星期终于实现,现记录下来以免以后忘记。
没做过Java,也没做过Android开发,只能现学现卖。在网上找了下搭建开发a ndroid环境资料,有一篇写的
比较仔细,地址是http://www.cnblogs.com/zoupeiyang/p/4034517.html。文章介绍了如何搭建Java环境,如何搭建Eclipse环境等。其实Eclipse不用搭建,现在有android studio了,直接从Google官网下载并安装即可。
环境搭建好后,可以开始写个简单的程序玩玩。Androidstudio 自带模拟器。在没有外界手机的情况下,执行Run后模拟器自动加载。你写的程序被下载到模拟器并成运行态。这一步不出意外的话轻松通过,说明你可以使用android studio开发了。
Ok,接下来理思路第一步如何获取摄像机视频流。再次在网上找了下资料:有人移植编码库到andorid平台,这方法肯定可行,但工作量一定不小。有人通过Android API 录制视频来获取视频流同时还给出了参考代码。这个方法的可行性大点。决定就这么干。
我将参考代码copy到开发环境里,结果一堆代码被划上斜杠,意思是说已经有新的API取代。去google官方网看了下发现Camera相关的API 5.0版本动了大手术.Camera 模块很多功能被Camera2模块取代,Camera2模块使用范例却很少。我在git-hub上找到了camera2 MediaRecorder相关的demo 折腾了半天编译通过,放在模拟器上也能运行,下载到手机上其实很多API找不到。坏了,手机版本太旧。我们的手机程序是面前大众的,大部分人手机版本应该都不是6.0。还得用以前的版本,4.4版本基本可以满足要求。看来还得用以前的API.
我担心被废弃的API无法在心的环境里运行,试图下载老板的SDK,不幸的是Google官方只有最新的。死马当活马医,且试试编译老版API。居然编译通过。可以进行到下一步了。
使用Android API实现录像功能,这个很容易实现,按照demo来即可。默认录像的路径是文件录像路径。我需要实时截获视频流并发出去,录像路径就不能是文件路径,而是输入流。建立一个本地socket链接,将socket输入端描述符作为录像路径。可以从socket输出端拿到视频数据。可以发送数据了。
我们的是服务端是个httpServer,手机端通过http直接推送是视频即可。android自带HttpUrlConnection可以发送数据,要命的是它不支持长连接。视频数据持续不断,用这个库的话讲会一直在创建连接、关闭连接。这是行不通的。思之再三,觉得用websocket。Git-hub中有实现websocket客户端源码,很容易合到现有的代码里。至此,手机端开发基本完成。需要注意下,websocket每次SendMessage后要稍微sleep下。要不在服务端接收到数据将是错误的。
如果要实现流共享,手机端录制视频的格式需要是mepgts。你将录制的mpegts用uedit打开会发现,同步头信息以及264的SPS,PPS只出现一次。客户端向服务端发送请求视频流命令后,服务端手机要讲同步信息及SPS,PPS信息发送个客户端,这样客户端解码器才能解码。
android手机推送视频到服务端的更多相关文章
- 使用极光推送(www.jpush.cn)向安卓手机推送消息【服务端向客户端主送推送】C#语言
在VisualStudio2010中新建网站JPushAndroid.添加引用json帮助类库Newtonsoft.Json.dll. 在web.config增加appkey和mastersecret ...
- Android 极光推送造成IM服务绑定失败bug
由于极光推送对8.0的支持问题,升级到了最新版本的极光推送.但是最新版本的极光推送,默认将推送服务设置到了新的进程里面,由此引发 Android 极光推送多进程造成的application运行两次 和 ...
- 极光推送>>java SDK服务端集成后台项目(使用详解)
PS:如果你是第一次用推送,那就直接按照我的步骤来,再去看官方文档,这样,更容易能理解操作流程.还有——-请耐心看 极光文档(java SDK)请参考 [ 极光文档 ] 步骤一: 首先,你必须在 [极 ...
- 极光推送Jpush(v3)服务端PHP版本的api脚本类
原文地址:http://www.dodobook.net/php/780 关于极光推送的上一篇文章已经说明了,此处就不多说了.使用v3版本的原因是v2使用到2014年年底就停止了.点击查看上一篇的地址 ...
- 极光推送Jpush(v3)服务端PHP版本集成(V3版本只调用推送API)
因为版本升级,极光推送的API也有了V3,功能也更丰富了,但是对于我们有的用户来说,我们还是只需要调用推送的API就够了. 下载了一份PHP服务端的SDK(下载地址:http://docs.jpush ...
- 信鸽推送 .NET (C#) 服务端 SDK rest api 调用库(v1.2)
信鸽推送 .NET 服务端 SDK rest api 调用库-介绍 该版本是基于信鸽推送v2版本的时候封装的,先拿出来与大家分享,封装还还凑合,不依赖其他http调用件,唯一依赖json序列化dll ...
- 友盟推送 .NET (C#) 服务端 SDK rest api 调用库
友盟推送 .NET SDK rest api 介绍 该版本是基于友盟推送2.3版本封装的,网上查询了下发现没有.NET版本的调用库,官方也没有封装.NET的版本,只有python.java.php版本 ...
- Android融合推送MixPush SDK集成多家推送平台,共享系统级推送,杀死APP也能收到推送
消息推送是App运营的重要一环,为了优化消息推送成功率,降低电量和流量消耗,系统级的推送服务显得尤为重要.小米和魅族由此推出了自家的推送平台,在MIUI和Flyme上共享系统级推送服务,让APP在被杀 ...
- 采用MQTT协议实现android消息推送(2)MQTT服务端与客户端软件对比、android客户端示列表
1.服务端软件对比 https://github.com/mqtt/mqtt.github.io/wiki/servers 名称(点名进官网) 特性 简介 收费 支持的客户端语言 IBM MQ 完整的 ...
随机推荐
- 【CSS3】---颜色RGBA及渐变色
颜色之RGBA RGB是一种色彩标准,是由红(R).绿(G).蓝(B)的变化以及相互叠加来得到各式各样的颜色.RGBA是在RGB的基础上增加了控制alpha透明度的参数. 语法: color:rgba ...
- Part 5 Select statement in sql server
Select specific or all columns select * from 表名 select * from Student select 列名,列名... from 表名 select ...
- Struts2_使用 Filter 作为控制器的 MVC 应用
- Sass之初识
Sass is the most mature, stable, and powerful professional grade CSS extension language in the world ...
- Google Play支付校验
关于Google Play支付校验我之前在网上也找过大量的相关资料,发现大多数都是采用publicKey的方式来校验订单,但是在Google Play提供的官方实例中publicKey其实在客户端也是 ...
- IE10 下兼容性问题
昨天在IE10下遇到这样一个问题 用jquery 获取textarea里的值 其中内容这里包含HTML 用$("#Id").val().$("#Id").ht ...
- windows下 berkerly db的安装配置(修正了关键步骤)
这个是我从别人的博客上找来的,亲测可用,确实解决了我当时遇到的一些问题. 首先,从http://www.oracle.com/technology/global/cn/software/product ...
- 3月3日 Mark
感觉LeetCode OJ 水题较多... 不过回复基础就是这样吧.. 刚刚和Gaewah聊了下,后续可以考虑去做Topcoder的SRM或者codeforces,Mark.
- System Generator入门笔记
System Generator入门笔记 [CPLD/FPGA] 发布时间:2010-04-08 23:02:09 System Generator是Xilinx公司进行数字信号处理开发的一种设计 ...
- 增量与位置PID
转载:http://blog.sina.com.cn/s/blog_408540af0100b17n.html http://bbs.ednchina.com/BLOG_ARTICLE_211739. ...