相关疑难解决方法(0)

MediaRecorder 和 VideoSource.SURFACE,停止失败:-1007(一个严重的 Android 错误)

我正在尝试MediaRecorder不使用Camera实例而是使用Surface视频源进行录制(是的,这是可能的,但事实证明它并不完美)-mediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);

我只写什么问题:

下一个代码仅适用于某些设备,并在最近的设备重新启动后在某些设备上临时工作或根本不起作用

如果它不起作用 okMediaRecorder.stop()方法失败并出现下一个错误

E/MediaRecorder:停止失败:-1007 W/System.err:

java.lang.RuntimeException:停止失败。在

android.media.MediaRecorder.stop(本机方法)

录音机 mp4 文件太小(千字节),无法播放

测试设备:

适用于联想 P2、小米 A1

不适用于小米红米 5、索尼 Xperia、小米红米 4 Prime

您也可以阅读我的代码中的注释以更好地理解问题

new Thread(() -> {

    MediaRecorder mediaRecorder = new MediaRecorder();

    File file = new File(Environment.getExternalStorageDirectory()
            + File.separator + "test_media_recorder_surface_source.mp4");
    if (file.exists()) {
        file.delete();
    }

    mediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);
    mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
    mediaRecorder.setOutputFile(file.getAbsolutePath());
    mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
    mediaRecorder.setVideoSize(1280, 720);
    mediaRecorder.setCaptureRate(24);

    try {
        mediaRecorder.prepare();

        int sleepTime = 1000 / 24;

        Surface surface = mediaRecorder.getSurface();

        mediaRecorder.start();

        // record something (we can …
Run Code Online (Sandbox Code Playgroud)

android surface android-canvas mediarecorder android-mediarecorder

8
推荐指数
1
解决办法
3648
查看次数