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 完整的 ...
随机推荐
- SqlServer知识总结
SqlServer查询表的列数 select count(*) from sysobjects a join syscolumns b on a.id=b.id where a.name='表名' 在 ...
- R语言快速入门
R语言是针对统计分析和数据科学的功能全面的开源语言,R的官方网址:http://www.r-project.org/ 在Windows环境下安装R是很方便的 R语言的两种运行模式:交互模式和批处理模 ...
- 北大ACM(POJ1012-Joseph)
Question:http://poj.org/problem?id=1012 问题点:约瑟夫环. Memory: 220K Time: 329MS Language: C++ Result: Acc ...
- php中magic_quotes_gpc对unserialize的影响
昨天朋友让我帮他解决下他网站的购物车程序的问题,程序用的是PHPCMS,换空间前是好的(刚换的空间),具体问题是提示成功加入购物车后跳转到购物车页面,购物车里为空. 我看了下代码,大致的原理就是将产品 ...
- [SQL]SUTFF内置函数的用法 (删除指定长度的字符并在指定的起始点插入另一组字符)
STUFF 删除指定长度的字符并在指定的起始点插入另一组字符. 语法 STUFF ( character_expression , start , length , character_express ...
- Xcode中常用的快捷键
各种新建 shift + comand + n 新建xcode项目 option + command + n 新建分组 command + n 新建文件 搜索 shift + command + ...
- jquery的延迟加载插件Lazy Load Plugin for jQuery
下载:https://github.com/tuupola/jquery_lazyload 使用:http://www.appelsiini.net/projects/lazyload 翻译:http ...
- JS函数式编程【译】2.2 与函数共舞
- F. Igor and Interesting Numbers
http://codeforces.com/contest/747/problem/F cf #387 div2 problem f 非常好的一道题.看完题,然后就不知道怎么做,感觉是dp,但是不知道 ...
- java8个基本类型和它们所占的字节数
byte : 1字节 short : 2字节 int : 4字节 float :4字节 long : 8字节 double : 8字节 char :2字节 boolean : 1字节 补充说明:在实际 ...