Mtk平台录像失败的简单分析
生活随笔
收集整理的這篇文章主要介紹了
Mtk平台录像失败的简单分析
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
(1)Mtk提供的FAQ分析
https://online.mediatek.com/FAQ#/SW/FAQ21583
(2)MediaRecorder沒有錄取到數(shù)據(jù)的報錯
07-04 19:23:41.029 645 7726 E MPEG4Writer: The number of recorded samples is 0 07-04 19:23:41.029 645 7726 E MPEG4Writer: 0 frames to dump timeStamps in Video track 07-04 19:23:41.030 645 7726 I MPEG4Writer: Received total/0-length (0/0) buffers and encoded 0 frames. - Video 07-04 19:23:51.058 645 1823 E MPEG4Writer: Stop() called but track is not started or stopped 07-04 19:23:51.065 7146 7146 E MediaRecorder: stop failed: -1007 0xa983cb8007-04 19:23:51.155 7146 7167 E TestRunner: java.lang.RuntimeException: stop failed. 07-04 19:23:51.155 7146 7167 E TestRunner: at android.media.MediaRecorder.stop(Native Method)以上信息表示最終buffer沒有寫進MPEG4Writer。
可從以下方面進行檢查:
(A)關掉fuse嘗試
//可以輸入如下命令關掉fuse,看一下是否是fuse導致的 adb root adb shell setprop persist.sys.fflag.override.settings_fuse false adb shell setprop persist.sys.fuse false adb reboot//或者使用settings: Settings->System->Developer options->Feature flags Close the settings_fuse item, then restart the phone//查看是否已關閉: adb shell "mount | grep fuse"none on /sys/fs/fuse/connections type fusectl (rw,relatime) /dev/fuse on /mnt/user/0/emulated type fuse (rw,lazytime,nosuid,nodev,noexec,noatime,user_id=0,group_id=0,allow_other)(B)metadata當中MTK_SENSOR_INFO_TIMESTAMP_SOURCE配置的檢查
//低端平臺不支持MTK_SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME CONFIG_ENTRY_VALUE(MTK_SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME, MUINT8)CONFIG_ENTRY_VALUE(MTK_SENSOR_INFO_TIMESTAMP_SOURCE_UNKNOWN, MUINT8)(3)CTS測試出現(xiàn)的Fail項
例如如下兩項:
- CtsCameraTestCases——android.hardware.cts.CameraTest#testRecordingHint()
- CtsCameraTestCases——android.hardware.cts.CameraTest#testLockUnlock()
我們這里以testRecordingHint為例,簡單看一下最終調(diào)用到的源碼。
private void recordVideoSimple(CamcorderProfile profile,SurfaceHolder holder) throws Exception {mCamera.unlock();MediaRecorder recorder = new MediaRecorder();try {recorder.setCamera(mCamera);recorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);recorder.setProfile(profile);recorder.setOutputFile(mRecordingPath);recorder.setPreviewDisplay(holder.getSurface());recorder.prepare();recorder.start();Thread.sleep(2000);recorder.stop();} finally {recorder.release();mCamera.lock();}}可以看到這里也有錄像測試,此時測試Fail的原因如下:
//Fail原因 07-04 19:23:41.029 645 7726 E MPEG4Writer: The number of recorded samples is 0 07-04 19:23:41.029 645 7726 E MPEG4Writer: 0 frames to dump timeStamps in Video track 07-04 19:23:41.030 645 7726 I MPEG4Writer: Received total/0-length (0/0) buffers and encoded 0 frames. - Video//Fail Log選擇的Size 07-04 19:23:29.891 6313 6313 I mtkcam-dev3-utils: [beginConfigureStreams] stream re-configuration: streamId:0 type(0:0) size(1920x1080:1920x1080) format(34:34) dataSpace(0:0) usage(0x900:0x900)//Pass Log選擇的Size 07-04 20:57:13.285 717 717 I mtkcam-dev3-utils: [beginConfigureStreams] stream re-configuration: streamId:0 type(0:0) size(1280x720:1280x720) format(34:34) dataSpace(0:0) usage(0x900:0x900)通過排查發(fā)現(xiàn)是需要進行如下修改才可以Pass,移除對應1080P的Preview選項。
//vendor/mediatek/proprietary/custom/mtxxxx/hal/imgsensor_metadata/common/config_static_metadata_project.h
具體原因應該是1080P超出了2M的Sensor的Spec,進而導致Sensor不出數(shù)據(jù),最終沒有數(shù)據(jù)寫入MPEG4Writer。
總結(jié)
以上是生活随笔為你收集整理的Mtk平台录像失败的简单分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 作业管理系统的招标书
- 下一篇: python学习笔记:泊松分布和负指数分