camera2录像停止报错“E/MediaRecorder: stop failed: -1007”

camera2录像时MediaRecorder调用stop方法会报

“E/MediaRecorder: stop failed: -1007

W/System.err: java.lang.RuntimeException: stop failed.”错误。

 

预览和录像session正常工作,MediaRecorder的start方法和初始化也正常,仅MediaRecorder的stop方法报错。权限确认已经动态申请,文件存放在与照相相同的目录下且相片能正常保存,录像文件文件名正常,有大小,但是无法解析查看。

 

修改预览与MediaRecorder对应尺寸一致,setonerrorlistener(null)等已确认无效

 

源码与问题解决的一些尝试已整理到,提前谢过各位解答。

https://blog.csdn.net/qq_42158560/article/details/117928675

 

附部分错误日志:

D/MediaRecorder: init: ====>path: /storage/emulated/0/DCIM/Camera/IMG_20210615181137318.mp4
I/MediaRecorderJNI: prepare: surface=0xd84fd800
I/OMXClient: IOmx service obtained
D/com.example.mycamera.view.VideoFragment: onStart: ====>create video session
I/Camera Model: myCreateCaptureSession: ====>Create Capture Session init
D/Camera Model: createCaptureSession: Surface(name=null)/@0x2859e7b
D/Camera Model: createCaptureSession: Surface(name=null)/@0xe7232c5
I/OMXClient: IOmx service obtained
I/Camera Model: onConfigured: ====>CreateCameraCaptureSession Successful
D/Camera Model: onConfigured: ====>start mediaRecorder
W/AudioTrack: createTrack_l(8195): AUDIO_OUTPUT_FLAG_FAST denied by server; frameCount 0 -> 26080
E/MediaRecorder: stop failed: -1007
W/System.err: java.lang.RuntimeException: stop failed.

 

因为创建录像session重用的预览的方法,因此在创建builder时MediaRecorder的surface并没有传入,最终导致mediaRecorder录制失败