Android的实时视频传输办法有多种,可以调用摄像头预览在onPreviewFrame里获取图像数据,也可以通过MediaRecoder录制,然后通过TCP,RTP等协议传输给服务器。
本文只对采用摄像头预览,结合TCP协议传输的简单方式来测试,测试目的:
- 找到此种方式的最大性能
- 找到瓶颈所在
- 测试各种可能的方法对性能的改进
测试环境:
网络:局域网wifi,连接速度为150Mbps
测试手机:佳域G3(一个山寨机,支持800×480分辨率采集),三星Galaxy S3(不支持800×480分辨率采集)
开发环境:win7,64bit
开发IDE:eclipse+JDK1.6
测试方法:采用摄像头预览的方法,在预览的回调函数里获取每帧的图像数据,通过TCP协议实时发送给客户端。
测试结果:在良好的wifi情况下,采集图片尺寸为800×480,速度可以在11fps,最高12fps。
其他测试方法:
(详细描述和代码可见CaptureStreamingServer\src\com\hw\video\server\VideoStreamingSenderService.java,94行至190行)
1 用zip压缩数据(每帧576k->460k),在良好的网络情况下,没有提升,反而会引起部分帧的传输故障。
2 先转成RGB,不压缩传输 --压缩效果好,但是耗时太长。
3 通过jni调用jpegHandler(第三方库)来压缩,压缩效率极高(576k->24k),但耗时长(90ms),另外在接收端没找到解压缩办法
4 使用NV21格式采集图像,然后压缩成jpeg,耗时长,最后只有6fps
5 通过jni调用imageEngine(第三方库)直接转换成RGB,耗时高(90ms),压缩效率也不高(576k->384k)
所以在此预览的方法下,如果网络状况好,直接传输或通过zip压缩即可达到良好效果,但基本也在11fps.
程序的简要描述:
1 CaptureStreamingServer
执行后界面如下,会显示当前帧的生成和发送情况,采集帧率,图片大小,服务的IP地址。点击菜单可以配置采集帧率和是否压缩图片(以减少网络传输数据)。
2 CaptureStreamingAndroid
执行后界面如下,上方会显示接收状况,下方会显示接收图片。点击菜单可以配置服务器的IP地址和端口(重启程序生效),如右图。
3 CaptureStreamingPC
执行com.hw.video.pc.VideoStreamingReceiver,服务器的IP地址和端口在com.hw.video.pc.util.Constants里进行配置(重启程序生效)。
注:
1 所有的配置均在各个项目的util.Constants内,可以设置分辨率等。
2 android开发测试版本为4.0.4.
本测试程序参考了
xinchejian和
smartCam。
测试程序描述如下:
有三个文件夹,均为eclipse开发区间,可以导入eclipse直接调试,具体见附件。
- 1 CaptureStreamingServer 视频捕捉服务(android端)
- 2 CaptureStreamingAndroid 接收客户端(android端)
- 3 CaptureStreamingPC 接收客户端(桌面程序),直接在IDE中执行com.hw.video.pc.VideoStreamingReceiver。
- 大小: 104.4 KB
- 大小: 413.6 KB
- 大小: 59.9 KB
分享到:
相关推荐
SocketCamera是服务端,cc是客户端。必须处于同一局域网测试才行。 关于CVideoWriter和CVideoReader是本人封装好的视频传输类,UDP传输
支持回放通过封装在RAW或RTP中的UDP传输的.h264编码的实时视频数据,以及简单的文件回放。 延迟数据(有关更多信息,请参见示例) 设备 编码器 avgTotalDecodingTime Galaxy S9 + 凸轮 8.0毫秒 Galaxy S9 + x...
介绍了监控系统的体系结构和硬件平台,阐述了嵌入式操作系统Android 应用程序的开发方法,并结合实际的应用系统,重点论述了Android 平台上视频监控客户端的设计思路。移植了音视频解码库FFmpeg 进行H. 264 视频解码...
人们对实时视频的需求越来越广泛,Android智能手机带给人们更快捷舒适的操作,4G无线信息传输技术日趋成熟;将4G无线传输方式用到视频系统,由Android智能手机终端进行实时观看视频成为一种发展趋势。针对上述应用...
Android项目源码类似飞鸽的安卓局域网文件传输是一个类似飞鸽传书安卓版的局域网文件传输项目源码,可以实现视频或者照片的传输。我电脑上就跑了一个模拟器,没有两个设备一起测试,翻了翻代码看到有功能实现。就只...
4. 支持Android系统(小米10至尊版测试OK) 5. 支持Linux系统(ubuntu系统测试OK) 6. 支持windows系统(win10 64位测试OK) 7. 资料包里包含完整源码,下载即可编译运行 8. 资料包里包含编译好的Android可执行文件,方便...
传输协议的开发流程和框架,以安卓手机和 51 单片机为硬件平台,通过无线路由器进行视频流的访问和对小车进行驱动,实现安卓手机无线访问小车摄像头进行视 频监控和操控小车行走。经过测试,无线遥控小车在 150...
此项目还使用Android最新的进行视频/音频编码,并使用流行的C ibrary librtmp(包括源代码)进行rtmp流传输,此外,还提供了在摄像头捕获阶段之后和编码阶段之前实现实时效果滤镜的功能。 一些功能是: 支持Android...
生成的视频时间戳上有一些问题(录像15秒,得到的视频流输出文件只有10S),但笔者后续是用作网络传输流应该这个问题就不大。各位高手要是能解决这个问题,望指教。 前段时间一直在用 ndk 编译ffmpeg最终成功,但...
将立体视频流式传输到基于 Android 的 VR 护目镜并接收头部跟踪信号以启动伺服系统。 2- 使用 Squeezenet-SVM 检测器检测自定义对象。 请参阅 Matlab 脚本。 3- 在 Raspbery Pi 和 Jetson Nano 上测试。 Raspberry ...
提高无线视频传输的QoS(Quality of Service,服务质量),在国外视频分帧传输的思想上,提出一种FSMS(Frame Splitting Multichannel Streaming,分帧多信道传输)无线流媒体传输模型,并且基于该模型在Android移动...
Android项目源码类似飞鸽的安卓局域网文件传输是一个类似飞鸽传书安卓版的局域网文件传输项目源码,可以实现视频或者照片的传输。我电脑上就跑了一个模拟器,没有两个设备一起测试,翻了翻代码看到有功能实现。就只...
----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...
文件传输 远程桌面、远程控制 支持群功能(会议室功能) 文本 表情 语音 视频 文件共享 电子白板 tox协议 自动更新 支持换肤功能 支持多语言 应用插件 运动 二维码识别、生成 屏幕截图 Windows ...
12.6.2 s3c6410 Android overlay的测试代码346 第13章 openmax多媒体框架349 13.1 openmax基本层次结构349 13.2 分析openmax框架构成350 13.2.1 openmax总体层次结构350 13.2.2 openmax il层的结构351 ...
介绍了监控系统的体系结构和硬件平台,阐述了嵌入式操作系统Android 应用程序的开发方法,并结合实际的应用系统,重点论述了Android 平台上视频监控客户端的设计思路。移植了音视频解码库FFmpeg 进行H. 264 视频解码...
12.6.2 s3c6410 Android overlay的测试代码346 第13章 openmax多媒体框架349 13.1 openmax基本层次结构349 13.2 分析openmax框架构成350 13.2.1 openmax总体层次结构350 13.2.2 openmax il层的结构351 ...
介绍了一种基于PC及Android手机终端的矿井实时监控系统。系统下位机以STM32处理器为核心,在履带式车身上搭载了USB摄像头、刷入Open Wrt系统的路由器、舵机云台以及探照灯,视频数据通过Wi Fi传输到PC或手机屏幕上显示...