日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Mtk平台录像失败的简单分析

發布時間:2024/1/1 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mtk平台录像失败的简单分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

(1)Mtk提供的FAQ分析

https://online.mediatek.com/FAQ#/SW/FAQ21583

(2)MediaRecorder沒有錄取到數據的報錯

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測試出現的Fail項

例如如下兩項:

  • CtsCameraTestCases——android.hardware.cts.CameraTest#testRecordingHint()
  • CtsCameraTestCases——android.hardware.cts.CameraTest#testLockUnlock()

我們這里以testRecordingHint為例,簡單看一下最終調用到的源碼。

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)

通過排查發現是需要進行如下修改才可以Pass,移除對應1080P的Preview選項。

//vendor/mediatek/proprietary/custom/mtxxxx/hal/imgsensor_metadata/common/config_static_metadata_project.h


具體原因應該是1080P超出了2M的Sensor的Spec,進而導致Sensor不出數據,最終沒有數據寫入MPEG4Writer。

總結

以上是生活随笔為你收集整理的Mtk平台录像失败的简单分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。