Android Camera2 图片是黑的,视频记录只有 1 秒

Dav*_*bji 3 video android android-image android-camera android-camera2

我在您可以在此处找到的两个示例的帮助下使用 Camera2 API:

我正在使用与上述链接相同的源代码,因此我不会在此处复制我的源代码(除非您需要某些部分,否则我将编辑我的问题并将其发布)。

编辑:

进行了一些测试。当我尝试通过手机播放视频时,它只显示第一帧,我可以听到录音中实际存在的音频(声音)。一旦视频播放到结束,视频会以某种方式自动重新启动并按原样显示视频。

但是,当我尝试在我的 PC 上播放视频(将其从手机复制到桌面)时,我只会在最后一帧之前出现黑屏。显示最后一帧,但视频根本不播放。我可以听到音频(声音)。

我在想某些视频编码/解码可能存在问题?

问题:

在我的情况下,视频录制不起作用。我可以在目录中看到它们应该在我的手机上的两个文件,但是当我播放视频(5 秒视频)时,前 4 秒是黑色的,然后最后一秒就像我录制的一帧,就是这样,但是文件大小似乎很大(160MB)。

屏幕:

  • 上传后会发视频

我不知道出了什么问题,有人可以帮忙吗?

Dav*_*bji 5

这不是一个真正的解决方案,但它仍然为我想做的事情提供了诀窍。

为了播放视频,我必须在 MediaRecorder 设置中完全禁用音频

        //mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);
        mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
        mMediaRecorder.setOutputFile(getVideoFile(activity).getAbsolutePath());
        mMediaRecorder.setVideoEncodingBitRate(10000000);
        mMediaRecorder.setVideoFrameRate(24);
        mMediaRecorder.setVideoSize(mVideoSize.getWidth(), mVideoSize.getHeight());
        mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);
        //mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
Run Code Online (Sandbox Code Playgroud)

你可以注意到我在哪里可以注释掉命令。一旦我这样做了,视频就可以正常播放了。

希望这个糟糕的解决方法仍然可以帮助那些在视频录制中也不需要音频的人。