`
yiqieanhao
  • 浏览: 66054 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android的实时视频传输测试

阅读更多
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.


本测试程序参考了xinchejiansmartCam

测试程序描述如下:
有三个文件夹,均为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
分享到:
评论
3 楼 ustcstj 2014-07-13  
楼主我想问下,你试过用h264编码,然后用udp传输吗?我遇到的问题和你一样,但我想做到20帧,而且wifi为100Mbits
2 楼 yiqieanhao 2014-05-11  
ico0018 写道
楼主你好,我想请问下具体的server ip配置是什么


这个server IP就是运行CaptureStreamingServer的手机在wifi下分配的地址。
1 楼 ico0018 2014-01-21  
楼主你好,我想请问下具体的server ip配置是什么

相关推荐

Global site tag (gtag.js) - Google Analytics