Nia*_*ros 5 mp4 android video-recording android-mediacodec
我在我的项目中使用 MediaCodec 来编码来自相机的视频。由于某些原因,我需要将 KEY_I_FRAME_INTERVAL 设置为 0,这意味着录制的 mp4 视频中的每一帧都将是关键帧(关键帧包含整个图像,而不仅仅是与前一帧的增量差异)。
我在这里遇到了问题:在 nexus 10、nexus 7、小米红米 2、华硕 zenphone 5、galaxy a5 上一切正常。但是 lenovo vibe s1 仅在关键帧间隔等于 1 秒的情况下进行录制。不管 mediaFormat 中设置了什么值,我在 mediaCodec.configure() 中使用的是什么。我试图设置 0、1、5、10,但视频中的关键帧总是每 30 帧。
任何想法如何解决这个问题?
有关更多信息,这是我的 mediaCodec 编码器的设置:
videoCodec = MediaCodec.createEncoderByType(MIME_VIDEO_CODEC_H264);
MediaFormat videoFormat = MediaFormat.createVideoFormat(MIME_VIDEO_CODEC_H264, 1280, 720);
videoFormat.setInteger(MediaFormat.KEY_BIT_RATE, 3800000);
videoFormat.setInteger(MediaFormat.KEY_FRAME_RATE, 30);
videoFormat.setInteger(MediaFormat.KEY_COLOR_FORMAT, MediaCodecInfo.CodecCapabilities.COLOR_FormatSurface);
videoFormat.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 0);
videoCodec.configure(videoFormat, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
//using input surface to get input data from camera
inputSurface = new CodecInputSurface(videoCodec.createInputSurface());
videoCodec.start();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4836 次 |
| 最近记录: |