项目需求,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手机推送视频到服务端的更多相关文章

  1. 使用极光推送(www.jpush.cn)向安卓手机推送消息【服务端向客户端主送推送】C#语言

    在VisualStudio2010中新建网站JPushAndroid.添加引用json帮助类库Newtonsoft.Json.dll. 在web.config增加appkey和mastersecret ...

  2. Android 极光推送造成IM服务绑定失败bug

    由于极光推送对8.0的支持问题,升级到了最新版本的极光推送.但是最新版本的极光推送,默认将推送服务设置到了新的进程里面,由此引发 Android 极光推送多进程造成的application运行两次 和 ...

  3. 极光推送>>java SDK服务端集成后台项目(使用详解)

    PS:如果你是第一次用推送,那就直接按照我的步骤来,再去看官方文档,这样,更容易能理解操作流程.还有——-请耐心看 极光文档(java SDK)请参考 [ 极光文档 ] 步骤一: 首先,你必须在 [极 ...

  4. 极光推送Jpush(v3)服务端PHP版本的api脚本类

    原文地址:http://www.dodobook.net/php/780 关于极光推送的上一篇文章已经说明了,此处就不多说了.使用v3版本的原因是v2使用到2014年年底就停止了.点击查看上一篇的地址 ...

  5. 极光推送Jpush(v3)服务端PHP版本集成(V3版本只调用推送API)

    因为版本升级,极光推送的API也有了V3,功能也更丰富了,但是对于我们有的用户来说,我们还是只需要调用推送的API就够了. 下载了一份PHP服务端的SDK(下载地址:http://docs.jpush ...

  6. 信鸽推送 .NET (C#) 服务端 SDK rest api 调用库(v1.2)

    信鸽推送 .NET  服务端 SDK rest api 调用库-介绍 该版本是基于信鸽推送v2版本的时候封装的,先拿出来与大家分享,封装还还凑合,不依赖其他http调用件,唯一依赖json序列化dll ...

  7. 友盟推送 .NET (C#) 服务端 SDK rest api 调用库

    友盟推送 .NET SDK rest api 介绍 该版本是基于友盟推送2.3版本封装的,网上查询了下发现没有.NET版本的调用库,官方也没有封装.NET的版本,只有python.java.php版本 ...

  8. Android融合推送MixPush SDK集成多家推送平台,共享系统级推送,杀死APP也能收到推送

    消息推送是App运营的重要一环,为了优化消息推送成功率,降低电量和流量消耗,系统级的推送服务显得尤为重要.小米和魅族由此推出了自家的推送平台,在MIUI和Flyme上共享系统级推送服务,让APP在被杀 ...

  9. 采用MQTT协议实现android消息推送(2)MQTT服务端与客户端软件对比、android客户端示列表

    1.服务端软件对比 https://github.com/mqtt/mqtt.github.io/wiki/servers 名称(点名进官网) 特性 简介 收费 支持的客户端语言 IBM MQ 完整的 ...

随机推荐

  1. autocomplete.js的使用(1):自动输入时,出现下拉选择框

    autocomplete.js可以实现自动输入文本值,并出现下拉框 js引用:所需要的autocomplete文件需要在网站中自行下载. <!--自动输入文本值所需的jquery文件--> ...

  2. 【Unity3D】刚体与碰撞体以及is Trigger属性的意义

    [Unity3D]刚体与碰撞体以及is Trigger属性的意义 刚体:个人理解就是具有物理属性(如:质量),接受物理作用(如:重力)的组件. 碰撞体:个人理解就是计算碰撞后的物理量(如:弹力). 刚 ...

  3. [转]解决win8.1右键菜单出现在左边

    1.在控制面板中找到“Tablet PC 设置”窗口,选择“其他”选项卡. 2.在“左右手使用习惯”下,点选“惯用左手”,确定. •如果win8.1的控制面板里找不到Tablet PC 设置 •可以在 ...

  4. JavaScript 全局

    JavaScript 全局 JavaScript 全局属性和方法可用于创建Javascript对象. JavaScript 全局属性 属性 描述 Infinity 代表正的无穷大的数值. NaN 指示 ...

  5. 【转】Javascript 中的false,零值,null,undefined和空字符串对象

    js 开发中经常会碰到判断是否为空的情况,关于 null 和 undefined 的区别了解的不是很好,刚好看见这篇文章,转过来学习一下,以下是转载正文: 在Javascript中,我们经常会接触到题 ...

  6. jQuery checkBox 全选的例子

    表单处理时经常会有全选的功能,但是这个功能往往会被忽视一个细节,就是逐个选中 checkBox 直至全选时,经常会忘记修改全选 checkBox 的状态,某知名互联网公司的网盘就会出现这样的问题,问题 ...

  7. Codevs 1003 电话连线

    时间限制: 1 s   空间限制: 128000 K   题目等级 : 黄金 Gold 题目描述 Description 一个国家有n个城市.若干个城市之间有电话线连接,现在要增加m条电话线(电话线当 ...

  8. [视频]MAC中如何单独放大文本字体

    我们知道使用MAC触控板的双指合拢手势可以进行放大或缩小操作,但其对应的是整个界面内容的放大及缩小,如果仅对其文本内容进行放大或缩小,可使用快捷键进行操作. 默认的 ”Command” + “=“   ...

  9. Java中的集合类

    实线边框的是实现类,比如ArrayList,LinkedList,HashMap等 折线边框的是抽象类,比如AbstractCollection,AbstractList,AbstractMap等, ...

  10. 记录sublime text2的技巧

    好吧,其实俺是sublime text控,用了那么的编辑器,从最初的notepad++,后来到Dreawaver,现在只钟情于sublime text2....记录一些比较实用的技巧和网站吧!! 方便 ...