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 完整的 ...
随机推荐
- 跟我一起学习ASP.NET 4.5 MVC4.0(五)(转)
前面几篇文章介绍了一下ASP.NET MVC中的一些基础,今天我们一起来学习一下在ASP.NET MVC中控件的封装.在页面中我们会经常使用到Html对象,来程序控件,当然这里的控件不是说ASP.NE ...
- PictureBox控件鼠标进入的手形改变和提示
PictureBox控件载入了图片后,如果要设置其为链接作用的功能,一般需要当鼠标移动到其上时鼠标自动变为手形以提示用户此时可以点击,如果图形无法方便辨识链接的具体功能,最好此时给与一定提示. 1.鼠 ...
- 第二篇、Swift_自定义 tabbar 的 badgeValue显示样式
在实际的开发中,我们常常需要根据实际的需求,去改变bageValue的显示样式,默认是红色的背景,白色的字体颜色 使用方式: class BKTabBarController: UITabBarCon ...
- 【Unity3D】刚体与碰撞体以及is Trigger属性的意义
[Unity3D]刚体与碰撞体以及is Trigger属性的意义 刚体:个人理解就是具有物理属性(如:质量),接受物理作用(如:重力)的组件. 碰撞体:个人理解就是计算碰撞后的物理量(如:弹力). 刚 ...
- JS函数式编程【译】2.3 函数式程序员的工具集
- 【风马一族_xml】xml的基本讲解笔记
xml是如何保存数据的 在xml语言中,它允许用户自定义标签.每个标签用于描述一段数据; 一个标签可以分为开始标签和结束标签,在开始标签和结束标签之间又可以嵌套其它标签,利用标签间的嵌套其它标签,利用 ...
- 解决ubuntu 14.04 下eclipse 3.7.2 不能启动,报Could not detect registered XULRunner to use 或 org.eclipse.swt.SWTError: XPCOM 等问题的处理
对于eclipse 3.7.2在ubuntu 14.04下不能启动,需要在 eclipse/configuration 目录下的config.ini文件内增加一行org.eclipse.swt.bro ...
- javascript "\" 在字符串里的是转义的意思
"\n" 在字符串里是换行的意思 alert("dfdsad\ndfsdf"); //有换行 alert("abc\de"); // ...
- Jquery Slick幻灯片插件
slick 是一个基于 jQuery 的幻灯片插件,具有以下特点: 支持响应式 浏览器支持 CSS3 时,则使用 CSS3 过度/动画 支持移动设备滑动 支持桌面浏览器鼠标拖动 支持循环 支持左右控制 ...
- 如何判断PHP 是ts还是nts版的
通过phpinfo(); 查看其中的 Thread Safety 项,这个项目就是查看是否是线程安全,如果是:enabled,一般来说应该是ts版,否则是nts版.