Posts Tagged ‘MJPEG’

Android wifi机器人视频传输接收端的实现

星期三, 五月 8th, 2013 1,418 views

本篇的开发基于已将S605摄像头挂载在Openwrt系统上,并且已通过网页测试访问 http://192.168.1.1:8080/?action=snapshot 摄像头视频数据流成功的基础上。
上述过程的实现,大家可以自行在论坛里查找相关资料。本篇重点讲述如何通过Android手机端实现网页端相同的视频接收功能。

首先我们需要了解到这是一个MJPEG图片视频流,是以发送逐帧的JPEG图片数据连贯起来的动画视频。Android端通过访问目标Openwrt系统上的指定服务器端口,获取这个图片流数据,并逐帧播放出来。了解此原理之后,我们的工作即可简化为在Android端创建一个socket长连接,并对目标服务器端口发送请求,并接受请求。因为数据的传输都是以字节流的形式的,所以基本传输原理与常用的socket传输方式无基本差别,主要在用字节流的解析过程,将其还原成JPEG格式的信号。

在Android的中对于视频的显示处理通常使用surfaceView这个类,继承该类实现一个自定义的surfaceView组件即可。
surfaceView有两种创建方式,一种是在Activity中正常New出来,另一种是在UI设计界面下拖拽出一个surfaceView控件,并在xml中强制转换为自定义的surfaceView类型。
下面说下这两种方式的实现区别与用途,第一种通常用于整个界面的跳转,并且new出来的surfaceView是不受UI设计界面控制的,因此无法控制其图层的顺序,并且与其他Layout控件并存等等。实现方式是直接new即可,在我们自定义的VideoSurfaceView类里,使用第一个构造函数:

1
2
3
4
public VideoSurfaceView(Context context)
{
    super(context);
}

(更多…)