- 浏览: 146009 次
- 性别:
- 来自: 广州
最新评论
-
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 816在这个时代,手机被开发者们所赋予的意义已经远远超出了大众的期望 ... -
视频通讯demo源码
2012-11-09 15:23 1112以下为anychat视频通讯系统中的部分回调函数源码: 具体 ... -
音视频对话开发
2012-09-20 17:21 717AnyChat for Android是佰锐科技继2010年发 ... -
浅谈网络语音技术
2012-08-31 14:35 917浅谈网络语音技术 当我们使用像Sky ... -
H.264视频编码标准在网络视频监控系统中的应用 .
2012-08-24 15:13 919【摘 要】本文介绍了ITU-T最新高性能视频压缩标准H.264 ... -
安卓平台下的即时通讯
2012-08-24 15:12 946基于Android 平台简易即时通讯的研究与设计 摘要 ... -
手机音视频应用开发(专注于Symbian、iPhone、Android等跨平台音视频应用开发方案)
2012-08-24 14:47 1121一款好的手机应用, 能让用户在第一分钟就爱上他, 一款烂的手 ... -
手机视频通讯开发
2012-08-24 14:46 791如今,3G网络快速发展 ... -
音视频点播直播系统
2012-08-20 10:32 1450音视频点播直 ... -
网络游戏与实时视频结合,拉动网游的进步 .
2012-08-20 09:58 7812011年被称为中国网络 ... -
android视频开发
2012-08-16 17:31 995摘要:论文简单介绍Android 平台的特性,主要阐述了基于A ... -
android视频聊天软件推荐
2012-08-15 17:00 1034正在当前那个社会 ... -
音视频交流服务系统
2012-03-15 16:22 881下面的这个平台是一种视频服务的应用,比如A(客户端)打视频电话 ... -
音视频开发平台
2012-03-15 16:12 809近日,腾讯公司发布了Q ... -
即时通讯开发平台(音视频)
2012-03-15 16:11 902近日,腾讯公司发布了Q ... -
视频开发与视讯系统的选择
2012-02-22 12:08 932随着Internet的发展,宽 ... -
手机视频之营销模式
2012-02-16 10:43 8753G时代的逼近,手机视 ... -
手机视频应用开发
2011-12-30 14:56 756AnyChat for Android是佰锐科技继2010年发 ... -
手机移动终端与PC进行音视频聊天和监控的开发
2011-11-08 11:15 973针对目前市场 ... -
音视频通讯、视频电话介绍
2011-08-04 18:03 782远程视频,可以拉近人们遥远的距离,天南地北,只需要一个网络一台 ...
相关推荐
包含两个Demo,一个是H264TestCameraSaveH264工程,运行可以开启摄像头录制编码H264文件,输出为SD卡中encoder.h264;另一个是testService工程,读取SD下的encoder.h264解码为RGB绘图播放。附加一个encoder.h264文件...
这个demo集成了百度人脸识别的活体人脸实时采集功能,对图片无效,只识别活体
Android应用源码开发Demo,主要用于毕业设计学习。
Android 调用外接USB UVCCamera完成自动对焦拍照。
可以打开手机的摄像头将采集的数据进行编码,然后传给解码器进行解码并显示。 非要大于50字,csdn是不是有病阿。
Android离线人脸识别源码Demo编译的APP。...用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸,进而对检测到的人脸进行脸部的一系列相关技术,通常也叫做人像识别、面部识别。
1. Android摄像头采集 2. 服务端传输过来的视频流 如果数据由本机摄像头直接采集,建议使用MediaMuxer类去实现mp4的合成。如果是服务端传输过来的视频流可以使用mp4v2的方法实现mp4的合成。我在项目里面也简单的...
采集摄像头及音频编码成H264+AAC后转给rtsp服务器 直接用vlc就可预览手机摄像头 支持OPENGLES美颜、加动图
此资源是采集和播放视频流的操作,修改第三方的代码,此demo只适用于测试,请勿商用
采集摄像头及音频编码成H264+AAC后转给rtsp服务器 直接用vlc就可预览手机摄像头 rtsp服务器源码参见http://download.csdn.net/detail/bxinquan/9477741
为sdk的视频采集是使用camera1去做采集的,如果您的设备不支持camera1只支持camera2,则需要自己采集和处理摄像头拍摄画面,您可以通过TRTCCloud的enableCustomVideoCapture关闭关闭TRTC SDK自己的摄像头采集和图像...
使用Android自带的编码工具,可实现硬编码,这里有一个国内大神开源的封装很完善的的库yasea,第一种方法需要实现的Camera采集部分也一起封装好了,进行一些简单配置就可以实现编码推流,并且yasea目前已经直接支持...
简介 新增-更好的版本: 安卓下实现的实时相机滤镜...目前仅是demo,预期参考,本repo的代码请随意使用,我无所谓 :face_savoring_food: ,当然对你有帮助的地方你要注明一下本人,我也是非常高兴的。 只是一个演示。
1、采集摄像头画面预览,生成MP4文件; 2、解码MP4文件播放; 3、解码H264文件播放;
SDK,主播需要把摄像头采集的视频源做编码,然后推到视频直播云上。 观众端 观众端使用的是拉流 SDK,观众需要的是把视频从服务端拉倒本地,做解码,并展示到手机终端上。观众端还必须包括一个视频播放器。 您也可以...
是研究ios屏幕共享时编制的demo,重点参考了如下两个开源项目: ... 存在问题: 1 屏幕截屏计算截图 时间序列时太耗cpu,需要改进(采用定时器) ...另外,代码中也包含采集摄像头图像,变为流媒体的功能,详细参见代码。
SDK,主播需要把摄像头采集的视频源做编码,然后推到视频直播云上。 观众端 观众端使用的是拉流 SDK,观众需要的是把视频从服务端拉倒本地,做解码,并展示到手机终端上。观众端还必须包括一个视频播放器。 您也可以...
百度离线人脸识别DEMO,包含离线SDK,可以通过REB摄像头,IR摄像头等判断人脸活体并采集图片
本书的内容主要包括:手机文件系统、网络通信、无线通信(短信通信、彩信通信和蓝牙通信)、底层用户界面应用(游戏开发和电子地图浏览)、多媒体编程(音乐播放器、视频播放器和摄像头视频采集等)、持久化应用、...