实现前后Camera 480P 720P 1080P高清视频录像(MTK平台)
2017-04-17 09:04
726 查看
Camera AP有定义了低,中,高,精细几种quality。每个quality都有对应的MediaProfile,
MediaProfile里面包涵当前quality的mCameraId, mFileFormat,mVideoCodec,mFrameWidth,mFrameHeight,mFrameRate等信息。
camera启动后会针对每一个quality去加载对应的MediaProfile
流程如下:
Camera线程启动后会去initializeCameraPreferences(),在initializeCameraPreferences()中会根据前后mCameraId去判断每个quality是否有对应的mediaProfile
如果quality有对应的MediaProfile,那么在Camera AP里就会显示这个quality,否则就不会显示出来。
代码路径:packages\apps\Camera\src\com\android\camera\Camera.java
packages\apps\Camera\src\com\android\camera\CameraSettings.java
流程如下:
系统调用JNI_OnLoad时会去注册register_android_media_MediaProfiles(), 在register_android_media_MediaProfiles()里会去创建MediaProfiles类的一个具体实例 MediaProfiles::getInstance(), 在得到具体profile对像后,会为这个profile对像添加相关的音视频编码解码属性设定如:createDefaultCamcorderProfiles(profiles),createDefaultVideoEncoders(profiles), createDefaultAudioEncoders(profiles)等.
其中createDefaultCamcorderProfiles(profiles)就是针对不同的Camera AP里的quality添加对应的profile设定.
例如添加前置1080P profile
代码路径:frameworks\base\media\jni\android_media_MediaPlayer.cpp
frameworks\base\media\jni\android_media_MediaProfiles.cpp
frameworks\av\media\libmedia\MediaProfiles.cpp
代码路径:mediatek\custom\common\hal\imgsensor$sensor_mipi_raw\config.ftbl……
MediaProfile里面包涵当前quality的mCameraId, mFileFormat,mVideoCodec,mFrameWidth,mFrameHeight,mFrameRate等信息。
camera启动后会针对每一个quality去加载对应的MediaProfile
流程如下:
Camera线程启动后会去initializeCameraPreferences(),在initializeCameraPreferences()中会根据前后mCameraId去判断每个quality是否有对应的mediaProfile
if(CamcorderProfile.hasProfile(mCameraId, CamcorderProfile.QUALITY_MTK_LOW)) { supported.add(Integer.toString(CamcorderProfile.QUALITY_MTK_LOW)); } if(CamcorderProfile.hasProfile(mCameraId, CamcorderProfile.QUALITY_MTK_HIGH)) { supported.add(Integer.toString(CamcorderProfile.QUALITY_MTK_HIGH)); ...
如果quality有对应的MediaProfile,那么在Camera AP里就会显示这个quality,否则就不会显示出来。
代码路径:packages\apps\Camera\src\com\android\camera\Camera.java
packages\apps\Camera\src\com\android\camera\CameraSettings.java
第二部分:
既然每个quality都有对应的mediaProfile 那怎样才能得到这个Profile呢?流程如下:
系统调用JNI_OnLoad时会去注册register_android_media_MediaProfiles(), 在register_android_media_MediaProfiles()里会去创建MediaProfiles类的一个具体实例 MediaProfiles::getInstance(), 在得到具体profile对像后,会为这个profile对像添加相关的音视频编码解码属性设定如:createDefaultCamcorderProfiles(profiles),createDefaultVideoEncoders(profiles), createDefaultAudioEncoders(profiles)等.
其中createDefaultCamcorderProfiles(profiles)就是针对不同的Camera AP里的quality添加对应的profile设定.
例如添加前置1080P profile
// day mode MediaProfiles::CamcorderProfile *FrontFineProfile = createMTKCamcorderProfile(CAMCORDER_QUALITY_MTK_FINE, CAMCORDER_DAY_MODE, FRONT_CAMERA); MediaProfiles::CamcorderProfile *FrontFineSpecificProfile = createMTKCamcorderProfile(CAMCORDER_QUALITY_MTK_FINE, CAMCORDER_DAY_MODE, FRONT_CAMERA); profiles->mCamcorderProfiles.add(FrontFineProfile); profiles->mCamcorderProfiles.add(FrontFineSpecificProfile); // night mode MediaProfiles::CamcorderProfile *FrontNightFineProfile = createMTKCamcorderProfile(CAMCORDER_QUALITY_MTK_NIGHT_FINE, CAMCORDER_NIGHT_MODE, FRONT_CAMERA); MediaProfiles::CamcorderProfile *FrontNightFineSpecificProfile = createMTKCamcorderProfile(CAMCORDER_QUALITY_MTK_NIGHT_FINE, CAMCORDER_NIGHT_MODE, FRONT_CAMERA); profiles->mCamcorderProfiles.add(FrontNightFineProfile); profiles->mCamcorderProfiles.add(FrontNightFineSpecificProfile);
代码路径:frameworks\base\media\jni\android_media_MediaPlayer.cpp
frameworks\base\media\jni\android_media_MediaProfiles.cpp
frameworks\av\media\libmedia\MediaProfiles.cpp
第三部分:
在Video Size里面添加对应quality的resolution//例如: // Video Size FTABLE_CONFIG_AS_TYPE_OF_DEFAULT_VALUES( KEY_AS_(MtkCameraParameters::KEY_VIDEO_SIZE), SCENE_AS_DEFAULT_SCENE( ITEM_AS_DEFAULT_("640x480"), ITEM_AS_VALUES_( "176x144", "640x480", "1280x720", "1920x1080",
代码路径:mediatek\custom\common\hal\imgsensor$sensor_mipi_raw\config.ftbl……
相关文章推荐
- 4KB程序实现了3.5分钟的720p高清视频 的搜索结果
- 高清播放知识之 480P、720P、1080P
- Android平台美颜相机/Camera实时滤镜/视频编解码/影像后期/人脸技术探索——4.1高仿FaceU长按录像按钮
- Android平台Camera实时滤镜实现方法探讨(四)--以Hefe滤镜为例
- Ubuntu 14.04 安装 ffmpeg 并使用 youtube-dl 下载 1080p 高清视频
- MTK平台Camera恢复默认设置对语音拍照无效
- Android平台Camera实时滤镜实现方法探讨(九)--磨皮算法探讨(一)
- 如何实现Linux平台的视频通话
- MOV1080P高清视频及下载网址
- 一种基于FPGA 的1080p 高清多摄像头全景视频拼接的泊车(机)
- Android Tegra平台back camera 驱动实现三 Android中的camera架构及工作原理
- Linux平台视频通话的实现
- 《暮色4:破晓(上)》暮光之城 高清蓝光BD 1080P 720P下载,附中英双字字幕!
- 利用开源项目实现采集卡/摄像头 支持H264高清视频直播
- MTK平台添加Camera设备信息
- MTK 平台Camera 驱动架构
- Android平台Camera实时滤镜实现方法探讨(一)--JNI操作Bitmap
- EasyCamera向EasyDarwin云平台推送音视频数据的缓存设计
- MTK 前后使用相同类型的Camera
- MTK平台camera菜单项,相互限制修改