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
分享到:
相关推荐
10. **测试与调试**:在实际部署前,需要对各种网络环境、设备配置进行测试,确保视频传输的稳定性和质量。 综上所述,实现Android实时传输视频涉及到多个技术层面,需要深入理解网络协议、多媒体处理和Android系统...
在Android平台上,实现手机间的实时视频传输涉及到许多关键的技术点,包括数据通信协议、多媒体编码解码、网络传输优化以及设备兼容性等。以下是对这一主题的详细解析: 首先,我们要理解Android手机间的实时视频...
- 通过实际测试评估方案的性能,包括视频质量和传输稳定性,确保在不同网络环境下都能实现流畅的实时视频传输。 5. **应用与前景** - 该技术对于移动视频监控、远程医疗、在线教育等领域有广泛应用前景,随着5G等...
### 基于RTP和Android的视频传输的研究实现方法 #### 1. Android及其开发环境 ##### 1.1 Android简介 Android是由Google公司于2007年推出的一款基于Linux内核的操作系统,主要应用于移动设备。它采用开源模式,...
7. **调试与测试**:为了确保视频传输的稳定性和质量,开发者需要进行广泛的测试,包括不同网络条件下的性能测试、不同设备间的兼容性测试,以及在网络状况变化时的鲁棒性测试。 综上所述,这个"AndroidVideo.zip...
本文主要关注的是如何在Android手机上实现高效、实时的视频传输和解码技术,这对于构建移动视频监控应用至关重要。 首先,文章提到了Android手机客户端通过Socket通信协议与服务器进行交互,这是网络编程中常用的一...
2. **网络通信**:由于海康视频流通常通过网络传输,你需要掌握HTTP或HTTPS协议,以及可能的RTSP(Real Time Streaming Protocol)协议,用于实时视频传输。Android的`OkHttp`库或者`HttpURLConnection`类可以用来...
不过,既然文件标题提供了明确的主题,那么我可以根据文件标题中的内容来生成一些与“基于Android开放平台和无线通信网络的实时音视频传输系统设计与实现”相关联的知识点。 ### 知识点一:Android开放平台 ...
在Android平台上进行实时视频传输是一项复杂但至关重要的技术,它涉及到多媒体处理、网络通信和性能优化等多个方面。这里,我们基于"adnroid-视频传输"这个主题,结合你提供的描述,来深入探讨相关的Android开发知识...
- **性能测试**:通过模拟不同网络环境,测试视频传输的速度和稳定性,以及在不同设备上的兼容性。 - **安全性测试**:验证数据传输的安全性,防止数据泄露,确保用户隐私。 - **用户体验优化**:根据用户反馈...
本文将从 Android APP 的流量测试、电量测试、弱网络测试、稳定性测试、安全测试、环境测试等几个方面讲解 Android APP 的专项测试。 Android APP 的流量测试 Android APP 的流量消耗一般是指用户操作引起的流量...
- UDP 测试则更注重于数据包的发送速率和丢包率,适合实时性要求高的应用如视频流或在线游戏。 2. **Android 版本的 iperf 应用** - Android 端的 `iperf` APP 具有图形化界面,便于用户操作。 - 支持服务器模式...
CTS Verifier测试手册是针对Android设备制造商和开发者进行兼容性测试的一个重要文档。CTS即Compatibility Test Suite,而CTS Verifier是为了补充CTS测试,提供了一系列额外的手动测试项,以帮助开发者和制造商验证...
在Android平台上实现视频通话功能,通常涉及到多个技术层面和组件的...通过研究和理解这段代码,可以深入掌握Android视频通话的相关技术,并为自己的项目构建类似功能。建议开发者下载并根据自身需求进行定制和扩展。
【大华Android视频播放SDK详解】 大华视频播放SDK是专为Android平台设计的一款软件开发工具包,旨在帮助开发者实现在Android设备上流畅、高效地播放监控视频、历史录像等功能。SDK提供了丰富的接口和功能,使得集成...
在这个“android camera v4l2测试代码”中,我们主要探讨的是如何在HAL(Hardware Abstraction Layer,硬件抽象层)上利用V4L2进行相机驱动的测试,以及这对于理解Android相机数据流Buffer的工作原理的价值。...
2. **Android视频推流**: - 在Android上实现视频推流,首先需要获取摄像头的视频数据,这通常通过`Camera`或`Camera2` API来实现。 - 视频数据捕获后,需要编码为适合网络传输的格式,如H.264或VP8。Android系统...
4. **实时音视频传输**:RTC(Real-Time Communication)技术是实现视频聊天的关键。WebRTC是一个强大的开源项目,提供跨平台的P2P音视频通信能力,包括数据通道、音频处理、视频编码等。在Android上,可以通过Jitsi...
4. **网络通信**:实时视频传输通常需要通过网络进行,因此,开发者需要掌握HTTP/HTTPS、WebSocket或其他流媒体协议,如RTSP(实时流协议)或HLS(HTTP Live Streaming)。Android的OkHttp库或者Volley库可能被用来...