- 浏览: 149996 次
- 性别:
- 来自: 广州
最新评论
-
yinren13:
说的便捷的视频会议,我们公司的遥控器一按就能开始的视频会议tu ...
便捷视频会议 -
xujinquan19:
...
可视通讯与移植、跨平台开发 -
xujinquan19:
...
Android 平台下的即时通讯 -
xujinquan19:
...
Android 平台下的即时通讯 -
xujinquan19:
...
Android 平台下的即时通讯
定义MyCameraContext类,该类必须继承CameraListener,采集到数据时,将会触发该类内部定义的回调函数:postData。注意android2.3,和2.2在构造函数上是有区别的
//MyCameraContext.h #ifndef MY_CAMERA_H #define MY_CAMERA_H #include "jni.h" //#include "JNIHelp.h" #include "android_runtime/AndroidRuntime.h" #include <utils/Vector.h> #include <surfaceflinger/Surface.h> #include <camera/Camera.h> #include <binder/IMemory.h> #include <stdint.h> using namespace android; class MyCameraContext: public CameraListener { public: MyCameraContext(const sp<Camera>& camera); ~MyCameraContext() { ; } //特殊事件通知回调,包括错误之类....目前在Demo中未使用 virtual void notify(int32_t msgType, int32_t ext1, int32_t ext2); //采集数据回调.... virtual void postData(int32_t msgType, const sp<IMemory>& dataPtr); //获取时间回调........目前在Demo中未使用 virtual void postDataTimestamp(nsecs_t timestamp, int32_t msgType, const sp<IMemory>& dataPtr); void setCallbackMode(); void getcallbackfunc(void(*p)(void* lpdata,int len) ){mcallbackfunc=p; }; sp<Camera> getCamera() { return mCamera; } private: void(*mcallbackfunc)(void* lpdata,int len) ; void copyAndPost(const sp<IMemory>& dataPtr, int msgType); sp<Camera> mCamera; // strong reference to native object // Mutex mLock; }; sp<Camera> CreateCamera(); sp<MyCameraContext> CreateCameraContext(sp<Camera>& spCamera); int setPreviewDisplaysurface(sp<Camera>& spCamera, sp<Surface>& surface); #endif //MyCameraContext.cpp #include "MyCamera.h" MyCameraContext::MyCameraContext(const sp<Camera>& camera) { mCamera = camera; } void MyCameraContext::notify(int32_t msgType, int32_t ext1, int32_t ext2) { } void MyCameraContext::copyAndPost( const sp<IMemory>& dataPtr, int msgType) { jbyteArray obj = NULL; if (dataPtr != NULL) { ssize_t offset; size_t size; sp<IMemoryHeap> heap = dataPtr->getMemory(&offset, &size); mcallbackfunc((void*)(heap->getBase()+offset),size); uint8_t *heapBase = (uint8_t*)heap->base(); } } void MyCameraContext::postData(int32_t msgType, const sp<IMemory>& dataPtr) { copyAndPost(dataPtr, msgType); } void MyCameraContext::postDataTimestamp(nsecs_t timestamp, int32_t msgType, const sp<IMemory>& dataPtr) { postData(msgType, dataPtr); } void MyCameraContext::setCallbackMode() { mCamera->setPreviewCallbackFlags(FRAME_CALLBACK_FLAG_CAMERA); } #ifdef ANDROID2_3 //android2.3 sp<Camera> CreateCamera() { int NumberOfCameras=Camera::getNumberOfCameras(); CameraInfo cameraInfo; for (int i = 0; i < NumberOfCameras; i++) { status_t rc = Camera::getCameraInfo(i, &cameraInfo); if (rc != NO_ERROR) { break; } if(cameraInfo.facing==CAMERA_FACING_BACK) { sp<Camera> camera = Camera::connect(i); return camera; } } return NULL; } #else //android 2.2 sp<Camera> CreateCamera() { sp<Camera> camera = Camera::connect(); if(camera->get()) return camera; return NULL; } #endif sp<MyCameraContext> CreateCameraContext(sp<Camera>& spCamera) { sp<MyCameraContext> context = new MyCameraContext(spCamera); spCamera->setListener(context); return context; } int setPreviewDisplaysurface(sp<Camera>& spCamera, sp<Surface>& surface) { if (spCamera->setPreviewDisplay(surface) != NO_ERROR) return -1; return 1; } //测试demo: #include "MyCamera.h" void databackfunc(void *base,int size); void databackfunc(void *base,int size) { //注意数据格式的处理 //spCamera->getParameters(); 获取各种采集参数包括格式 //数据处理 } JNIEXPORT jint Java_lpc_bairui_android_lpc_camera(JNIEnv* env, jclass clazz) { sp<Surface> sps; sp<Camera> spCamera=CreateCamera(); if(spCamera.get()){ spCameraContext=CreateCameraContext(spCamera); if(spCameraContext.get()){ /*并没有为sps赋值,所以它不指向任何Surface,所以将不会创建预览格式,仅仅获取数据 setPreviewDisplaysurface函数在*/ if( setPreviewDisplaysurface(spCamera,sps)==1){ //String8 str("preview-size=240x320"); //spCamera->setParameters(str); //spCamera->getParameters().string(); spCameraContext->setCallbackMode(); //设置处理采集到数据的回调函数 spCameraContext->getcallbackfunc(databackfunc); //开始采集 spCamera->startPreview(); return 1; } } } return 0; }
发表评论
-
手机视频会议
2012-11-16 14:03 841在这个时代,手机被开发者们所赋予的意义已经远远超出了大众的期望 ... -
视频通讯demo源码
2012-11-09 15:23 1172以下为anychat视频通讯系统中的部分回调函数源码: 具体 ... -
音视频对话开发
2012-09-20 17:21 744AnyChat for Android是佰锐科技继2010年发 ... -
浅谈网络语音技术
2012-08-31 14:35 970浅谈网络语音技术 当我们使用像Sky ... -
H.264视频编码标准在网络视频监控系统中的应用 .
2012-08-24 15:13 981【摘 要】本文介绍了ITU-T最新高性能视频压缩标准H.264 ... -
安卓平台下的即时通讯
2012-08-24 15:12 974基于Android 平台简易即时通讯的研究与设计 摘要 ... -
手机音视频应用开发(专注于Symbian、iPhone、Android等跨平台音视频应用开发方案)
2012-08-24 14:47 1146一款好的手机应用, 能让用户在第一分钟就爱上他, 一款烂的手 ... -
手机视频通讯开发
2012-08-24 14:46 819如今,3G网络快速发展 ... -
音视频点播直播系统
2012-08-20 10:32 1473音视频点播直 ... -
网络游戏与实时视频结合,拉动网游的进步 .
2012-08-20 09:58 8142011年被称为中国网络 ... -
android视频开发
2012-08-16 17:31 1022摘要:论文简单介绍Android 平台的特性,主要阐述了基于A ... -
android视频聊天软件推荐
2012-08-15 17:00 1064正在当前那个社会 ... -
音视频交流服务系统
2012-03-15 16:22 910下面的这个平台是一种视频服务的应用,比如A(客户端)打视频电话 ... -
音视频开发平台
2012-03-15 16:12 834近日,腾讯公司发布了Q ... -
即时通讯开发平台(音视频)
2012-03-15 16:11 929近日,腾讯公司发布了Q ... -
视频开发与视讯系统的选择
2012-02-22 12:08 974随着Internet的发展,宽 ... -
手机视频之营销模式
2012-02-16 10:43 9023G时代的逼近,手机视 ... -
手机视频应用开发
2011-12-30 14:56 782AnyChat for Android是佰锐科技继2010年发 ... -
手机移动终端与PC进行音视频聊天和监控的开发
2011-11-08 11:15 1004针对目前市场 ... -
音视频通讯、视频电话介绍
2011-08-04 18:03 810远程视频,可以拉近人们遥远的距离,天南地北,只需要一个网络一台 ...
相关推荐
资源中有个MyCamera1Demo.apk可以直接安装运行,MyCamera1Demo.zip是Demo源码。 具体详见我的博客 : https://blog.csdn.net/EthanCo/article/details/132651833 使用的Android Studio版本是Android Studio Giraffe |...
本Demo旨在展示如何在Android设备上通过USB接口连接并使用外置摄像头,实现自动对焦及拍照功能。下面将详细阐述这一过程中的关键知识点。 首先,了解UVCCamera。UVCCamera是UVC(USB Video Class)标准的一个实现,...
包含两个Demo,一个是H264TestCameraSaveH264工程,运行可以开启摄像头录制编码H264文件,输出为SD卡中encoder.h264;另一个是testService工程,读取SD下的encoder.h264解码为RGB绘图播放。附加一个encoder.h264文件...
在Android平台上,外接基于UVC(Universal Video Class)协议的摄像头并实现预览功能是一项技术挑战,但通过一些特定的API和库可以实现。UVC协议是USB设备类定义的一部分,它允许USB设备(如摄像头)以统一的方式与...
我自己写的Android CameraX Demo,实现了预览/拍照/录制视频/图片分析/对焦/切换摄像头等操作。 具体详见我的博客 : https://blog.csdn.net/EthanCo/article/details/125603671
在Android平台上进行直播开发时,通常会...总的来说,"android 直播sdkdemo"是一个涵盖音视频采集、编码、传输和UI设计等多个方面技术的综合实例,开发者可以通过研究这个demo了解并实现Android直播应用的基本功能。
RTSP camera aims to establish an Android platform as a streaming server for the device's camera output. In order to register for receiving the camera stream, the Real-Time streaming protocol (RTSP) is...
首先,Android短视频录制涉及到的主要技术包括音视频采集、编码、合成以及文件保存。在Android系统中,这些任务主要由MediaRecorder和Camera API来完成。 1. **MediaRecorder**: MediaRecorder是Android系统提供的...
在"android Demo"这个子文件夹中,我们可以推测源码可能包含了一个运行在Android操作系统上的摄像头演示程序。 1. **海思芯片与摄像头驱动**: 海思芯片因其高效能和低功耗而广泛应用于网络摄像头领域。源码中的...
标题“安卓下 android WebRTC-Demo”指的是一个Android应用示例,展示了如何在Android设备上使用WebRTC技术进行实时通信。这个Demo适用于开发者,特别是对WebRTC不熟悉的Android开发者,他们可以直接导入Eclipse IDE...
【Android 视频通讯Demo详解】 在Android平台上开发视频通讯应用是一项复杂且技术密集的任务,涉及到多媒体处理、网络传输、实时通信等多个领域的知识。这里我们主要探讨的是一个基础的视频通讯Demo,它专注于视频...
"android webrtcdemo"是一个专为Android平台设计的WebRTC学习示例,它展示了如何实现多人视频通话和一对一通话功能。 首先,我们需要理解WebRTC的基本组件和流程。WebRTC系统主要包含以下部分: 1. **User Agent ...
本篇文章将深入探讨基于Android的WebRTC视频demo的相关知识点。 1. **WebRTC架构**: WebRTC系统由三大部分组成:客户端堆栈、服务器信令以及数据传输。客户端堆栈包括采集模块(捕获音频和视频)、编码和解码模块...
为了运行这个Demo,你需要确保你的Android设备支持WebRTC,并且已经正确地配置了必要的权限,如访问摄像头和麦克风的权限。同时,你还需要一个运行着类似服务器的角色来交换SDP和ICE信息,以完成两端的连接建立。...
这个"Android身份证识别demo"正是为此目的而设计的。它利用了百度的文字识别技术(OCR,Optical Character Recognition),能够从身份证图片中提取出关键信息,如姓名、性别、地址以及身份证号码。 一、文字识别...
在CameraDemo压缩包中的源代码可能包含了实现上述功能的示例,通过对代码的分析和学习,开发者可以理解如何在Android平台上实现摄像头双开预览和获取当前帧。这种技术在AR应用、视频会议、3D扫描等领域有广泛应用。
Android离线人脸识别源码Demo编译的APP。...用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸,进而对检测到的人脸进行脸部的一系列相关技术,通常也叫做人像识别、面部识别。
在IT领域,尤其是在嵌入式系统和Linux驱动开发中,"uvc摄像头查询支持分辨率"是一个常见的需求。UVC(Universal Video Class)是USB设备类定义的一种,用于处理视频流设备,如网络摄像头。V4L2(Video for Linux Two...
【标题】"openh264 android demo"是一个基于OpenH264库的Android应用程序示例,它展示了如何在Android设备上实现H264视频编码和解码功能。OpenH264是由思科系统开发并开源的一个高效、高质量的H.264编解码器,适用于...
总的来说,"Android版美颜rtsp直播demo"整合了Android Camera2 API、MediaCodec、OpenGLES和RTSP协议等多个关键组件,实现了从摄像头采集、美颜处理到实时流传输的完整流程。这个项目对于理解和掌握Android多媒体...